如何使node.js应用程序永久运行?

时间:2012-10-03 02:50:19

标签: node.js server

在Debian服务器上,我安装了Node.js.我了解如何使用此命令行从putty启动应用程序:

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

并在地址50.51.52.53:8080(IP和端口)上找到它。

但是当我关闭腻子时,我再也无法到达地址50.51.52.53:8080

如何永久运行Node.js应用程序?

你可以猜到,我是Linux和Node.js的初学者。

18 个答案:

答案 0 :(得分:304)

您可以使用npm安装forever,如下所示:

sudo npm install -g forever

然后使用以下命令启动您的应用程序:

forever server.js

或作为服务:

forever start server.js

Forever因某种原因崩溃或停止时会重启您的应用。要将重新启动限制为5,您可以使用:

forever -m5 server.js

列出所有正在运行的进程:

forever list

注意括号中的整数,并按如下方式使用它来停止进程:

forever stop 0

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

forever restart 0

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

forever -w server.js

答案 1 :(得分:68)

您可以使用PM2,它是具有内置负载均衡器的Node.js应用程序的生产流程管理器。

安装PM2

$ npm install pm2 -g

启动应用程序

$ pm2 start app.js

如果您使用快递,则可以启动您的应用

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]

答案 2 :(得分:40)

我建议找一些像Forever这样的东西,以便在发生崩溃时重新启动Node,并为您处理守护进程。

答案 3 :(得分:32)

如果您只想在终端中运行您的节点应用程序,只需使用屏幕。

在ubuntu / debian上安装:

sudo apt-get install screen

用法:

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

ctrl + a然后ctrl + d解雇

得到回来:

一个屏幕:screen -r

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

然后:screen -r pid_number

答案 4 :(得分:22)

你可以简单地使用这个

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

这将使应用程序继续运行并关闭它,你将不得不将其杀死。

为此您可以安装htop,然后搜索节点然后将其删除

答案 5 :(得分:10)

Forever是一个非常好的NodeJs模块。

通过在命令行中输入

来安装$ npm install forever -g
$ forever start /path/to/script.js

然后使用以下命令运行node.js脚本

$ forever list

你很高兴。另外,你可以运行

$ forever stop [pid]

查看所有正在运行的脚本。您可以通过键入

来终止任何特定脚本
[pid]

其中list是您将从$ forever stopall 命令获取的脚本的进程ID。要停止所有脚本,可以键入

{{1}}

答案 6 :(得分:9)

  

nohup 工作我在 AWS Ubunto vm中检查了正确的syntax

ubuntu@ip-172-00-00-00:~/ms$ nohup node server.js &
  

然后按回车键,您将看到此行

ubuntu@ip-172-00-00-00:~/ms$ nohup: ignoring input and appending output to ‘nohup.out’
  

然后输入此

rm nohup.out

enter image description here

答案 7 :(得分:8)

这是我用于个人项目的upstart解决方案:

将其放在/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次或更多次,它将放弃重新生成应用程序的尝试。

答案 8 :(得分:8)

在开发过程中,我建议使用nodemon。只要文件发生变化,它就会重新启动服务器。正如其他人所指出的,Forever是一种选择,但在生产中,这一切都取决于您使用的平台。 您通常希望使用操作系统建议的保持服务的方式(例如http://www.freedesktop.org/wiki/Software/systemd/)。

答案 9 :(得分:8)

安装

$ [sudo] npm install forever -g

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

forever start server.js

forever list

停止服务

forever stop server.js

答案 10 :(得分:6)

我发现永远完美地完成这项工作。

假设您已经安装了npm,如果没有,请执行

sudo apt-get install npm

然后永远安装

npm install forever --global

现在你可以像这样运行它

forever start app.js

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

答案 11 :(得分:4)

另一种方法是为您的应用创建系统单元。创建一个" XXX.service"文件在" / 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在系统启动时自动启动应用。

答案 12 :(得分:4)

首先在全局安装pm2

npm install -g pm2

然后开始

pm2 start bin/www 

答案 13 :(得分:2)

我希望这会对你有所帮助。

在命令行中,永久安装:

npm install forever -g

创建示例文件:

sudo nano server.js 

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

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

enter image description here

答案 14 :(得分:2)

永远软件包对我有用,仅一件事,它取决于 deep-equal ,因此,如果您在安装时遇到问题,例如:

npm -g install forever

尝试:

npm -g install forever deep-equal@1.1.1

相反。

答案 15 :(得分:1)

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

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

答案 16 :(得分:0)

无需安装任何其他软件包。

运行此命令

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

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

然后点击“ 退出”以关闭终端机

exit

答案 17 :(得分:0)

尝试使用pm2使您的应用程序永久运行。

npm install -g pm2

然后使用

pm2 start server.js

要列出和停止应用,请使用命令

pm2 list

pm2 stop 0