这篇文章主要介绍了使用upstart把nodejs应用封装为系统服务实例,需要的朋友可以参考下

一、nodejs应用普通部署方式介绍

终于要把nodejs的应用程序部署上线了, 把源代码通过git复制到目录下面

/root/deploy/movie

然后搞命令:

~ cd /root/deploy/movie
node ./app.js

上面的方式,nodejs程序会在当前的console界面中运行,一旦console结束,应用也会停止。我们改一下命令,让程序在后台运行


~ node ./app.js &
[1] 21333
[2013-06-21 09:38:30.696] [INFO] console - Start App: http://lovean.com
[2013-06-21 09:38:30.700] [INFO] console - Express server listening on port 3000

这样程序就就在后台启动了。进程正常运行着,我也不用做太多的事情。

如果我想停止这个程序,怎么办呢? 找到nodejs的系统进程,再杀死。


~ ps -aux|grep node
root 21333  0.6  3.7 909200 38292 pts/0  Sl 09:38 0:00 node app.js
~ kill -9 21333 

直接暴力解决。如果能像系统服务一样,来启动和关闭nodejs应用,多好啊!下面就通过upstart来完成把nodejs应用封装为系统服务。

二、 把应用封装为upstart任务脚本


~ vi /etc/init/nodejs-moive.conf

description "node.js lovean.com"

start on startup
stop on shutdown

script
  export HOME="/root/deploy/movie"
  echo $$ > /var/run/moiveme.pid
  export NODE_ENV=production
  exec /usr/bin/node /root/deploy/movie/server.js

  #日志输出
  #exec /usr/bin/node /root/deploy/movie/server.js >> /var/log/moiveme.log 2>&1
end script

pre-start script
  echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/moiveme.log
end script

pre-stop script
  rm /var/run/moiveme.pid
  echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/moiveme.log
end script

三、 使用upstart管理nodejs应用

启动nodejs-moive应用(上面的任务脚本),进程ID:21257


~ start nodejs-moive
nodejs-moive start/running, process 21257

~ tail -f /var/log/moiveme.log
[2013-06-21T09:21:17.122Z] (moive.me) Starting

~ ps aux|grep node
root 21257  8.0  3.7 909204 37824 ?  Ssl  09:21 0:00 /usr/bin/node /root/deploy/movie/server.js


查看运行状态, 进程21257正常运行

~ status nodejs-moive
nodejs-moive start/running, process 21257

杀死nodejs应用进程21257,通过upstart管理,nodejs-moive应用会自动重启


~ kill -9 21257

#自动重启日志
~ tail -f /var/log/moiveme.log
[2013-06-21T09:21:33.662Z] (moive.me) Starting

#查看系统进程,发现进行ID变了
~ ps -aux|grep node
root 21280  9.1  3.7 909204 37704 ?  Ssl  09:21 0:00 /usr/bin/node /root/deploy/movie/server.js

#查看进程状态,进程ID确实变了,而且是自动完成的
~ status nodejs-moive
nodejs-moive start/running, process 21280


这样很方便地我们可以通过upstart,以系统服务的方式管理nodejs应用。运维起来会很容易!!

最新资讯
上半年房企“零入门”长租公寓迎来新一轮洗牌

上半年房企“零入门”

原标题:上半年房企“零入门”,长租公寓迎来新一轮洗牌来
短视频电商化:抖音向“钱”快手向“上”

短视频电商化:抖音向“

短视频双雄抖音和快手之间的竞争已经从短视频蔓延到了
马斯克身家超越股神巴菲特 晋升全球第七大富豪

马斯克身家超越股神巴

马斯克目前是全球第七大富豪,排名超越了股神巴菲特,也领
数据虚高 刷单造假等亟须整顿

数据虚高 刷单造假等

与此同时,也暴露出夸大宣传以及商品质量和售后服务难保
蜜芽突围自救 会员体系“新瓶装旧酒”

蜜芽突围自救 会员体

蜜芽已于今年5月悄然将Plus会员体系变更升级为Pro会员
高通总裁安蒙:AI+5G是重大技术变革 合作推动行业创新与增长

高通总裁安蒙:AI+5G是

对于“5G+AI”所产生的变革与影响,安蒙认为,教育、医疗
最新文章
Vue实现图片与文字混输效果

Vue实现图片与文字混

用多了 JQuery ,习惯了使用JQuery的API操作 DOM ,几乎忘
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)

Vue实现点击当前元素

这篇文章主要介绍了Vue实现点击当前元素以外的地方隐
Vue实现验证码功能

Vue实现验证码功能

这篇文章主要为大家详细介绍了Vue实现验证码功能,文中
JS实现的雪花飘落特效示例

JS实现的雪花飘落特效

这篇文章主要介绍了JS实现的雪花飘落特效,结合实例形
微信小程序实现图片压缩

微信小程序实现图片压

这篇文章主要为大家详细介绍了微信小程序实现图片压缩
JavaScript实现京东放大镜效果

JavaScript实现京东放

这篇文章主要为大家详细介绍了JavaScript实现京东放大