【问题标题】:How to run node js even on server restart即使在服务器重新启动时如何运行节点 js
【发布时间】:2018-01-28 13:20:00
【问题描述】:

我构建了一个 Nodejs 项目,现在它运行顺利。 我使用forever 服务在后台运行文件,但如果服务器重新启动 守护进程不会自动启动,应该手动启动。 即使服务器重新启动,我也想运行守护进程

【问题讨论】:

  • 您的服务器使用什么操作系统?
  • @RaghavGarg 我正在使用 centos7
  • 你试过永远吗,pm2,nodemon,...?
  • 你应该和systemd集成,它有很多优点。

标签: node.js linux server centos


【解决方案1】:

您可以在.bash_profile 中添加forever 命令,这样每次服务器重新启动时,您的命令也会被执行。

nano ~/.bash_profile
forever start app.js # add this command to the file, or whatever command you are using.
source ~/.bash_profile # very important, else changes will not take effect

下次,在您的服务器重新启动时,您的命令也将运行,从而创建您的节点脚本的守护进程。

注意:这可能不是最好的解决方案,但我已经得到了。

更新

正如@dlmeetei 所建议的,您还可以像服务一样启动您的nodejs 应用程序,以便我们可以使用linux 服务提供的功能。

首先在/etc/systemd/system创建一个文件,比如:

touch /etc/systemd/system/[your-app-name].service
nano /etc/systemd/system/[your-app-name].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
# Required on some systems
# WorkingDirectory=/opt/nodeserver
Restart=always
# Restart service after 10 seconds if node service crashes
RestartSec=10
# Output to syslog
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodejs-example
#User=<alternate user>
#Group=<alternate group>
Environment=NODE_ENV=production PORT=1337

[Install]
WantedBy=multi-user.target 

启用该服务,它将标记该服务在启动时启动。

systemctl enable [your-app-name].service

管理服务

systemctl start [your-app-name].service
systemctl stop [your-app-name].service
systemctl status [your-app-name].service # ensure your app is running
systemctl restart [your-app-name].service

参考:https://www.axllent.org/docs/view/nodejs-service-with-systemd/

感谢@dlmeetei 分享链接。

【讨论】:

  • 这只会在您启动bash 时启动您的服务器。最好与systemd集成或基于lsb编写init.d脚本。
  • @dlmeetei,我不太擅长 Unix 系统。您是否建议使用它?如果没有,您能否分享一下,如何使用 systemd 或 init.d 来完成,哪个更好?
  • @dlmeetei,这似乎是一个不错的方法,我还没有真正想过像服务一样启动节点应用程序。感谢分享链接。
猜你喜欢
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多