在一台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的初学者。


当前回答

另一种方法是为你的应用程序创建一个系统单元。服务“/etc/systemd/system”文件夹中的文件,类似如下:

[Unit]
Description=swagger
After=network.target

[Service]
ExecStart=/usr/bin/http-server /home/swagger/swagger-editor &
WorkingDirectory=/home/swagger
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

好处是应用程序将作为服务运行,它会自动重启,如果它崩溃了。

你也可以使用sytemctl来管理它:

systemctl start XXX启动服务,systemctl stop XXX停止服务,systemctl enable XXX在系统启动时自动启动应用程序。

其他回答

我建议寻找诸如Forever之类的东西来在崩溃时重新启动Node,并为您处理这个守护进程。

你可以使用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]

你可以简单地使用这个

nohup node /srv/www/MyUserAccount/server/server.js &

这将保持应用程序运行,关闭它,你将不得不杀死它。

为此,你可以安装htop,然后搜索节点,然后杀死它

我发现永远都做得很好。

假设你已经安装了npm,如果没有,就这样做

sudo apt-get install npm

然后永远安装

npm install forever --global

现在你可以这样运行它

forever start app.js

https://codingweb.io/run-nodejs-application-background/

正如我们所知,有很多选择可以做到这一点。这是一个纯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 & )