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


当前回答

正如我们所知,有很多选择可以做到这一点。这是一个纯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,它是一个带有内置负载均衡器的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]

我希望这对你有所帮助。

在命令行,永远安装:

npm install forever -g

创建一个示例文件:

sudo nano server.js 

您可以编辑该文件并直接在浏览器中获得结果。 您可以使用filezilla或任何编辑器来编辑该文件。 运行文件:

forever start --minUptime 1 --spinSleepTime 1000 -w server.js

你可以像这样使用npm永远安装:

sudo npm install -g forever

然后开始你的应用程序:

forever server.js

或作为一种服务:

forever start server.js

当应用程序崩溃或因某种原因停止时,永远重新启动应用程序。要限制重启次数为5次,您可以使用:

forever -m5 server.js

查询所有正在运行的进程。

forever list

注意括号中的整数,并使用它来停止一个进程:

forever stop 0

重新启动正在运行的进程:

forever restart 0

如果你正在处理你的应用程序文件,你可以使用-w参数在server.js文件更改时自动重新启动:

forever -w server.js

不需要安装其他包。

执行此命令

node server.js > stdout.txt 2> stderr.txt &

server.js是你的服务器文件,也可以是api.js

之后,点击“退出”关闭终端

exit

如果你只是想在终端中运行你的节点应用程序,只需要使用screen。

安装在ubuntu/ debian上:

sudo apt-get install screen

用法:

$ screen
$ node /path/to/app.js

CTRL + a,然后CTRL + d取消

get就是回来:

一屏:screen -r

如果有多个屏幕,可以使用screen -ls列出所有屏幕

然后:screen -r pid_number