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

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

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

并通过地址50.51.52.53:8080(IP和端口)访问它。

但是,一旦我关闭腻子,那我就无法到达地址50.51.52.53:8080了。

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

如您所料,我是Linux和Node.js的初学者。

理查德宝儿2020/03/20 13:50:43

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

运行此命令

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

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

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

exit
Near神无Pro2020/03/20 13:50:43

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

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

神奇神乐2020/03/20 13:50:43

我希望这能帮到您。

在命令行中,永久安装:

npm install forever -g

创建一个示例文件:

sudo nano server.js 

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

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

在此处输入图片说明

2020/03/20 13:50:43

首先在全球安装pm2

npm install -g pm2

然后开始

pm2 start bin/www 
古一2020/03/20 13:50:43

另一种方法是为您的应用程序创建系统单元。在“ / etc / systemd / system”文件夹中创建一个“ XXX.service”文件,类似于:

[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在系统启动时自动启动应用程序。

老丝2020/03/20 13:50:43

我发现永远可以很好地完成这项工作。

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

sudo apt-get install npm

然后永久安装

npm install forever --global

现在您可以像这样运行它

forever start app.js

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

西里逆天2020/03/20 13:50:43

安装

$ [sudo] npm install forever -g

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

forever start server.js

forever list

停止服务

forever stop server.js
斯丁2020/03/20 13:50:43

在开发过程中,我建议使用nodemon每当文件更改时,它将重新启动服务器。正如其他人指出的那样,永远是一个选择,但在生产中,这完全取决于您使用的平台。您通常会希望使用操作系统推荐的保持服务正常运行的方式(例如http://www.freedesktop.org/wiki/Software/systemd/)。

老丝阿飞2020/03/20 13:50:43

我在AWS Ubunto vm中签入的nohup工作正常syntax

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

然后按Enter,您将看到此行

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

然后输入

rm nohup.out

在此处输入图片说明

泡芙2020/03/20 13:50:43

永远是一个很好的NodeJs模块,可以做到这一点。

forever通过在命令行中键入进行安装

$ npm install forever -g

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

$ forever start /path/to/script.js

你已准备好出发。另外,您可以运行

$ forever list

查看所有正在运行的脚本。您可以通过键入以下命令终止任何特定的脚本

$ forever stop [pid]

[pid]您将从list命令中获得的脚本的进程ID 在哪里要停止所有脚本,您可以输入

$ forever stopall
小宇宙2020/03/20 13:50:43

这是我用于个人项目新贵解决方案:

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

神无Jim2020/03/20 13:50:43

你可以简单地使用这个

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

这将使应用程序保持运行状态,并关闭它,您必须将其杀死。

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

凯西里2020/03/20 13:50:42

您可以像这样使用npm 永久安装

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

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

forever -w server.js
LGil2020/03/20 13:50:42

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

在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

猪猪2020/03/20 13:50:42

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