pm2启动在Ubuntu上无法启动

4c8rllxm  于 2023-10-17  发布在  其他
关注(0)|答案(7)|浏览(172)

我很难让pm2在服务器重新启动时重新启动(本身和两个node/express文件,app.jsapp2.js)。
下面是我尝试过的方法:

pm2 startup
pm2 start app.js
pm2 start app2.js
pm2 startup ubuntu (also tried systemd and with/without -u username)
pm2 save

我在所有可能的组合中运行了上述命令,但没有任何效果。我试着以root身份运行,但它也不起作用。
我的~/.pm2/dump.pm2文件包含的信息,所以我不知道还可以在哪里查找。
我试图根据this issue修改我的/etc/init.d/pm2-init.sh文件,但它没有帮助。
我的设置:
数字海洋服务器
Ubuntu 15.10
节点v5.4.1
PM2.0版本
我试过的其他参考资料。
http://pm2.keymetrics.io/docs/usage/startup/
https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps
https://gist.github.com/leommoore/5998406
https://www.terlici.com/2015/06/20/running-node-forever.html
http://nodered.org/docs/getting-started/running.html#starting-node-red-on-boot
https://github.com/Unitech/pm2/issues/1316
到目前为止,每次我重新启动服务器时,pm2都无法自动启动(除非我需要等待几分钟?- nginx立即重新启动)。
有人能帮我吗?命令的运行顺序是什么?我是否需要修改任何其他文件?

ne5o7dgx

ne5o7dgx1#

您必须使用以下命令保存节点应用程序

pm2 start [app_name]
 pm2 save

然后执行:

pm2 startup [operation system]

这将创建一个dump.pm2文件,pm2需要该文件在重新启动时运行您的应用。
操作系统:

*systemd:Ubuntu >= 16,CentOS >= 7,Arch,Debian >= 7
*暴发户:Ubuntu 14
*launchd:达尔文,MacOSX
*openrc:Gentoo Linux、Arch Linux
*rcd:FreeBSD
*systemv:Centos 6,Amazon Linux

cbeh67ev

cbeh67ev2#

我的解决方案是用 systemctl 重新启动pm2:systemctl reload-or-restart pm2-root
当我第一次安装Ubuntu 18.04服务器时,我运行pm2 start app.js来启动我的应用程序。然后,当我试图运行pm2 startup + pm2 save在 Boot 时重新启动应用程序时,这似乎不起作用,因为通过运行systemctl list-units,pm2没有显示在服务列表中。即使应用程序正在运行(pm2 list证实了这一点)。所以我运行了systemctl list-units -all,pm2显示为“inactive”和“dead”。
所以我就这么做了:

  • systemctl status pm2-root(只是为了确认它是“不活动”/“死亡”)
  • systemctl reload-or-restart pm2-root(通过 systemctl 重新启动pm2)
  • systemctl status pm2-root(确认pm2现在处于“活动”/“运行”状态)
  • 然后我还运行了systemctl enable pm2-root,以使PM2在启动时运行(不确定是否有必要)
  • 然后再次执行pm2 startup + pm2 save(用于 Boot 上的启动)

OBS.:我在命令中使用了pm2-root,因为我使用root用户运行pm2,但如果需要,您应该替换为您的用户(pm2-<USER>)。

x0fgdtte

x0fgdtte3#

我想我解决了问题
我玩了pm2,发现CentOS 7的两种工作方式(在你的项目文件夹index.js - main文件中):

  • 1
sudo pm2 start index.js
sudo pm2 save
sudo pm2 startup centos
  • 2
pm2 start index.js
pm2 save
pm2 startup centos
'# and run the script generated in the previous code under sudo
h4cxqtbf

h4cxqtbf4#

你试过在Ubuntu(cat /var/log/boot.log)上检查你的 Boot 日志吗?
你可能会看到这样的错误:
Error: EACCES, permission denied '/home/<USER>/.pm2'
我自己无法解决这个问题,但至少这应该为你指明正确的方向。

wa7juj8i

wa7juj8i5#

在Ubuntu中得到以下代码:

pm2 start main.js
pm2 save
pm2 startup ubuntu

请注意,“pm2保存”将在/root/.pm2/dump.pm2中创建一个dump.pm2文件,该文件将在您的计算机重新启动时使用。
如果您不知道您的操作系统名称,请使用用途:

pm2 startup

PM2将自动检测您的操作系统。

vbkedwbf

vbkedwbf6#

解决方案:
1.移动到安装PM2的文件夹(例如/home/ubuntu)。将出现一个文件夹“.pm2”。
1.运行“PM2 startup”以生成活动的启动脚本。
1.运行“PM2保存”以冻结进程列表以便自动重新生成。
现在所有的进程都将在robot上自动启动。

wbrvyc0a

wbrvyc0a7#

我知道它很老了,但这是我的版本:
1.使用pm2启动进程:pm2 start app_name.js
1.保存列表中的进程:pm2 save
1.生成启动脚本:pm2 startup
在这里我们得到命令列表。

这些以绿色突出显示的命令之一必须在下一步中实现

1.启动脚本(上一步命令):systemctl enable pm2-root
我之所以发布这条命令是因为我认为最后一条命令是必需的并不明显。但如果没有它,重启时启动将无法工作。

相关问题