pm2启动不起作用

时间:2015-09-29 08:24:23

标签: node.js ubuntu pm2

我成功设置了我的nodejs服务器并且我在Ubuntu 15.04服务器上使用它,我的问题是我希望我的节点应用程序在服务器重新启动时继续运行所以我尝试了pm2,{{1 }}和forever但它们都没有为我工作,重新启动后我需要手动启动节点应用程序。

我尝试crontab如下:

pm2

pm2-init.sh文件:

pm2 startup ubuntu
pm2 start appname
pm2 save

这没有用,所以我尝试使用#!/bin/bash # chkconfig: 2345 98 02 # # description: PM2 next gen process manager for Node.js # processname: pm2 # ### BEGIN INIT INFO # Provides: pm2 # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: PM2 init script # Description: PM2 is the next gen process manager for Node.js ### END INIT INFO NAME=pm2 PM2=/home/bashar/.nvm/versions/node/v4.1.1/lib/node_modules/pm2/bin/pm2 USER=bashar export PATH=/home/bashar/.nvm/versions/node/v4.1.1/bin:$PATH export PM2_HOME="/home/bashar/.pm2" get_user_shell() { local shell=$(getent passwd ${1:-`whoami`} | cut -d: -f7 | sed -e 's/[[:space:]]*$//') if [[ $shell == *"/sbin/nologin" ]] || [[ $shell == "/bin/false" ]] || [[ -z "$shell" ]]; then shell="/bin/bash" fi echo "$shell" } super() { local shell=$(get_user_shell $USER) su - $USER -s $shell -c "PATH=$PATH; PM2_HOME=$PM2_HOME $*" } start() { echo "Starting $NAME" export PM2_HOME super $PM2 resurrect } stop() { super $PM2 dump super $PM2 delete all super $PM2 kill } restart() { echo "Restarting $NAME" stop start } reload() { echo "Reloading $NAME" super $PM2 reload all } status() { echo "Status for $NAME:" super $PM2 list RETVAL=$? } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; reload) reload ;; force-reload) reload ;; *) echo "Usage: {start|stop|status|restart|reload|force-reload}" exit 1 ;; esac exit $RETVAL 如下: 首先,我创建一个脚本并将其命名为crontab

starter.sh

然后打开#!/bin/bash pm2 start /home/bashar/www/node/server.js 编辑:

crontab

上述方法也没有在服务器重启时启动我的应用程序。

请建议,

2 个答案:

答案 0 :(得分:2)

pm2在重启期间似乎有一个错误。将pm2添加到/etc/init.d中的自动启动进程后,脚本在正常处理下工作正常,但在重新启动时做了一些奇怪的事情:它将pm2.dump文件清空。有几个错误报告like this one,但到目前为止它仍然是一个错误......

我发现的最简单的解决方法如下:

  1. 编辑/etc/init.d/pm2-init.sh,并在stop()部分注释掉“super $ PM2 dump”行
  2. 每当您修改pm2进程列表时,请记得执行手册“pm2 dump”
  3. 如果有人有更永久的解决方案,请告诉我......:)

答案 1 :(得分:1)

对于在这里寻找 Windows 机器的任何人(就像我一样),pm2 启动仅适用于 unix 系统。

https://pm2.keymetrics.io/docs/usage/startup/#init-systems-supported

试试这个:https://www.npmjs.com/package/pm2-windows-startup