我在AWS EC2服务器上运行我的节点应用程序。
为了进行持续集成,我在EC2上安装了Jenkins,jenkins连续轮询代码提交,并在提交发生时执行一些用脚本编写的命令。
最后一条命令是
pm2启动server.js
一切正常,并且构建成功显示,但是稍后当我访问URL时,该站点没有显示。
我在节点服务器前面有一个Nginx服务器,它给出了
502错误的网关
经过检查,我发现节点应用程序未运行,因此我检查了pm2日志并发现了这种情况-
2016-08-12 07:53:28:[[[[PM2 / God守护进程启动]]]]
2016-08-12 07:53:28:端口/var/lib/jenkins/.pm2/pub.sock上的BUS系统[READY]
2016-08-12 07:53:28:端口/var/lib/jenkins/.pm2/rpc.sock上的RPC接口[READY]
2016-08-12 07:53:28:在-fork模式-中启动应用程序名称的执行顺序:服务器ID:0
2016-08-12 07:53:28:应用程序名称:服务器ID:0在线
2016-08-12 07:53:28:pm2已被信号杀死,在退出前转储进程列表...
2016-08-12 07:53:28:删除进程0
2016-08-12 07:53:28:停止应用程序:服务器ID:0
2016-08-12 07:53:28:ID为[0]和PID为[25822]的应用[服务器],通过信号[SIGTERM]以代码[0]退出
2016-08-12 07:53:28:不再定义Proc或被杀死
2016-08-12 07:53:28:[PM2]和平退出
pm2一开始就被杀死,不知道为什么,尝试从npm重新安装pm2无效。
Ubuntu 14.04 LTS
节点v4.4.7 LTS
npm v2.15.8
pm2 v1.1.3
工作暂停,请立即获得帮助。
最佳答案
答案是在Dusan Bajic的评论中,如果有人使用节点应用程序在EC2上与jenkins进行持续集成,而pm2发生类似的情况,只需在启动pm2之前在脚本中添加此行即可。
出口BUILD_ID = dontKillMePlease
而不是
pm2启动server.js
采用
pm2重新启动server.js
如果您提交并以jenkins身份运行,则server.js作为您的应用程序或构建将失败,并且再次运行脚本,因为pm2已经在运行server.js且不会停止。