我们有一个由 pm2 进程管理器启动 Nodejs 程序的设置。 pm2 进程本身已启动并由主管进程监控。
我的会议如下所示:
[program:node-service]
process_name=%(program_name)s
command=pm2 start /home/deploy/nodeJS/app.js
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/deploy/logs/appjs.log
预期结果:
Supervisor 启动 PM2 Deamon。 PM2启动节点进程。
Command: ps aux | grep pm2
root 664 0.8 0.2 1436832 70992 ? Ssl 13:57 0:02 PM2 v5.2.0: God Daemon (/etc/.pm2)
Command: ps aux | grep node
root 20893 0.5 0.2 1309368 70692 ? Ssl 14:02 0:01 node /home/deploy/nodeJS/app.js
实际结果:
Supervisor 启动 PM2 守护进程。 PM2启动节点进程。 Supervisor 或 pm2 正在尝试启动 再次节点处理。
Command: ps aux | grep pm2
root 664 0.8 0.2 1436832 70992 ? Ssl 13:57 0:02 PM2 v5.2.0: God Daemon (/etc/.pm2)
root 21259 61.0 0.2 1164964 74040 ? Rl 14:02 0:00 node /usr/bin/pm2 start /home/deploy/nodeJS/app.js
Command: ps aux | grep node
root 20893 0.5 0.2 1309368 70692 ? Ssl 14:02 0:01 node /home/deploy/nodeJS/app.js
我无法弄清楚为什么它试图创建另一个进程“node /usr/bin/pm2 start /home/deploy/nodeJS/app.js”已启动。
你能解决这个问题吗?如果没有,那是因为主管不知道在哪里可以找到所有这些二进制文件。简而言之,在调用二进制文件之前,您需要先加载系统路径环境。
command=/bin/bash -c "source /root/.bashrc && pm2 start /home/deploy/nodeJS/app.js"
并且在您的 .bashrc 文件中,您必须导出这些二进制文件的路径
EXPORT PATH=/opt/cpanel/ea-nodejs18/bin/:$PATH
/opt/cpanel/ea-nodes18/bin/:$PATH 是我的节点二进制文件的安装位置,包括 pm2。如果您不确定如何找到它,只需键入以下命令,它应该为您提供路径并在 .bashrc 中使用该路径
where pm2
希望这有帮助。