作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在共享托管环境中测试节点服务器。
我正在使用 ssh 终端 session 进行测试。
服务器工作正常,但当然你不能在不停止服务器的情况下离开终端 session 。
使用 pm2(npm 包),我能够让服务器保持运行,但在退出终端 session 时,pm2 作业也会退出,从而停止服务器。很好奇为什么会这样。
尝试使用 crontab 运行一个 shell 脚本,该脚本又运行 pm2,而 pm2 又启动节点服务器。 cron 选项卡每分钟运行一次,但节点服务器从不启动。
sh 脚本工作正常,pm2 工作正常,节点服务器工作正常。什么不起作用:在退出终端 session 后保持节点服务器运行。
这是运行 pm2 来触发节点服务器的 shell 脚本...
ps cax | grep node > /dev/null
if [ $? -eq 0 ]; then
echo "Process running."
else
echo "Process not running."
PATH=$PATH:/usr/local/bin
pm2 start '/path/to/NodeServer.js' --restart-delay=100
fi
最佳答案
如果像我这样的其他人使用 pm2
对于 godaddy 共享主机,并使用 Habib 的答案的修改版本 pm2
而不是 node
, 不要忘记包含到 node
的路径进入PATH
变量,因为它是 pm2
所要求的:
PATH=$PATH:/home/user/.nvm/versions/node/v11.15.0/bin
pm2 ps | grep 'my-app'
if [ $? -eq 0 ]; then
echo "Process running."
else
echo "Process not running."
cd /home/user/public_html/app
pm2 start app.js --name my-app
fi
上面的脚本对我有用。仅指定到 pm2
的完整路径没有工作,因为它寻找 node
, 这不在 PATH
中在cron
环境。
关于cron - 如何让 Node JS 服务器在共享主机上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63185217/
我是一名优秀的程序员,十分优秀!