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


当前回答

我推荐使用PM2,这是一个Node.js应用程序的进程管理器。PM2提供了一种简单的方法来管理和守护应用程序(将它们作为服务运行)。

参考这个链接- https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7

其他回答

以下是我在个人项目中使用的一个新贵解决方案:

将它放在/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之类的东西来在崩溃时重新启动Node,并为您处理这个守护进程。

我发现永远都做得很好。

假设你已经安装了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 & )

安装

$ [sudo] npm install forever -g

您可以使用forever来连续运行脚本

forever start server.js

forever list

停止服务

forever stop server.js