如何自动重启节点应用?

Fun*_*ive 3 node.js loopbackjs

我正在运行一个节点strongloop应用程序,如果它崩溃,需要自动重启.自动重启节点应用程序的最佳方法是什么?当这些崩溃发生时,还有通知吗?

小智 5

你可以使用进程管理器如Strongloop进程管理器(http://strong-pm.io/),PM2(http://pm2.keymetrics.io/)和永远(https://github.com/foreverjs/forever) .还要检查这三者的比较(http://strong-pm.io/compare/).您还可以检查pm2-monitor(https://www.npmjs.com/package/pm2-monitor)以获取通知以及服务器重启.


ole*_*hko 5

大多数 Linux 系统最近都改用了systemd,这使得这个过程变得更加简单和高效,并且意味着我们不再需要永远了。

所有你需要的是:

  1. 创建服务文件/etc/systemd/system/nodeserver.service

  2. 启用服务systemctl enable nodeserver.service

  3. 启动服务systemctl start nodeserver.service

你总是可以通过运行以下命令来检查其可用性: systemctl status nodeserver.service

如果您对服务文件进行了任何更改,则需要systemctl daemon-reload在重新加载服务之前执行 a systemctl restart nodeserver.service

.service文件示例:

[Unit]
Description=Node.js Example Server
#Requires=After=mysql.service       # Requires the mysql service to run first

[Service]
ExecStart=/usr/local/bin/node /opt/nodeserver/server.js
Restart=always
RestartSec=10                       # Restart service after 10 seconds if node service crashes
StandardOutput=syslog               # Output to syslog
StandardError=syslog                # Output to syslog
SyslogIdentifier=nodejs-example
#User=<alternate user>
#Group=<alternate group>
Environment=NODE_ENV=production PORT=1337

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

顺便说一下,StrongLoop有一篇关于最佳实践的官方文章并被systemd提及。阅读更多。

你也可能想看看这个由 strongloop 人为 nodejs 和 strongloop 构建的模块:https : //github.com/strongloop/strong-service-systemd


ivy*_*wit 1

(假设您的应用程序在 Linux 上运行)您始终可以编写一个服务来确保应用程序正在运行,并在必要时重新启动。以下是编写服务的方法:

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html