在一台Debian服务器上,我安装了Node.js。我知道如何用这个命令行从putty启动一个应用程序:
node /srv/www/MyUserAccount/server/server.js
并在地址50.51.52.53:8080 (IP和端口)上访问它。
但是当我一关闭putty,我就无法到达50.51.52.53:8080这个地址了。
如何让一个Node.js应用程序永久运行?
你可以猜到,我是Linux和Node.js的初学者。
在一台Debian服务器上,我安装了Node.js。我知道如何用这个命令行从putty启动一个应用程序:
node /srv/www/MyUserAccount/server/server.js
并在地址50.51.52.53:8080 (IP和端口)上访问它。
但是当我一关闭putty,我就无法到达50.51.52.53:8080这个地址了。
如何让一个Node.js应用程序永久运行?
你可以猜到,我是Linux和Node.js的初学者。
当前回答
我希望这对你有所帮助。
在命令行,永远安装:
npm install forever -g
创建一个示例文件:
sudo nano server.js
您可以编辑该文件并直接在浏览器中获得结果。 您可以使用filezilla或任何编辑器来编辑该文件。 运行文件:
forever start --minUptime 1 --spinSleepTime 1000 -w server.js
其他回答
正如我们所知,有很多选择可以做到这一点。这是一个纯Shell解决方案,不需要额外的程序/包。
如果server.js因为某些原因/错误崩溃,这个解决方案将重新启动server.js。
假设这是一个run.sh:
#!/usr/bin/env sh
while :; do
node server.js
echo "Restarting..."
sleep 1
done
确保run.sh文件可执行:
chmod +x run.sh
要运行它:
./run.sh
如果你想在后台运行它:
./run.sh &
在后台超静音运行(分离,没有任何输出):
( ./run.sh > /dev/null 2>&1 & )
首先全局安装pm2
npm install -g pm2
然后开始
pm2 start bin/www
你可以使用PM2,它是一个带有内置负载均衡器的Node.js应用程序的生产过程管理器。
安装PM2
$ npm install pm2 -g
启动应用程序
$ pm2 start app.js
如果你使用express,你可以启动你的应用程序
pm2 start ./bin/www --name="app"
列出所有正在运行的进程:
$ pm2 list
它将列出所有进程。然后,您可以使用以下命令使用应用程序的ID或名称来停止/重新启动服务。
$ pm2 stop all
$ pm2 stop 0
$ pm2 restart all
显示日志
$ pm2 logs ['all'|app_name|app_id]
以下是我在个人项目中使用的一个新贵解决方案:
将它放在/etc/init/node_app_daemon.conf:
description "Node.js Daemon"
author "Adam Eberlin"
stop on shutdown
respawn
respawn limit 3 15
script
export APP_HOME="/srv/www/MyUserAccount/server"
cd $APP_HOME
exec sudo -u user /usr/bin/node server.js
end script
这也将在应用程序崩溃时处理重生。如果在不到15秒的时间内崩溃3次或更多,它将放弃重新生成应用程序的尝试。
Forever是一个非常好的NodeJs模块。
通过在命令行中输入永远安装
$ npm install forever -g
然后使用以下命令运行node.js脚本
$ forever start /path/to/script.js
你可以出发了。此外,你可以运行
$ forever list
查看所有正在运行的脚本。您可以通过键入来终止任何特定的脚本
$ forever stop [pid]
其中[pid]是通过list命令获取的脚本的进程号。要停止所有脚本,您可以输入
$ forever stopall