Node.js 如何在服务器重新启动时运行node js

Node.js 如何在服务器重新启动时运行node js,node.js,linux,server,centos,Node.js,Linux,Server,Centos,我建立了一个Nodejs项目,现在它运行顺利。 我使用永久服务在后台运行文件,但若服务器重新启动 守护进程不会自动启动,应该手动启动。 即使服务器重新启动,我也要运行守护进程。您可以在.bash\u profile中添加forever命令,这样每次服务器重新启动时,您的命令都会被执行 nano ~/.bash_profile forever start app.js # add this command to the file, or whatever command you are using

我建立了一个Nodejs项目,现在它运行顺利。 我使用
永久
服务在后台运行文件,但若服务器重新启动 守护进程不会自动启动,应该手动启动。
即使服务器重新启动,我也要运行守护进程。您可以在
.bash\u 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 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
参考资料:


感谢@dlmeetei分享链接。

您的服务器使用的是什么操作系统?@RaghavGarg我使用的是CentOS7您是否尝试过forever、pm2、nodemon等?您应该与
systemd
集成,它有很多优点。这只有在您启动
bash
时才会启动您的服务器。最好与
systemd
集成,或者基于lsb编写init.d脚本。@dlmeetei,我在Unix系统中不太好。你是在建议为它服务吗?如果没有,你能分享一下,如何使用systemd或init.d,哪一个更好?也许这将有助于@dlmeetei,这似乎是一个不错的方法,我真的没有想过启动一个像服务一样的节点应用程序。谢谢分享链接。
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