这篇文章主要介绍了使用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应用。运维起来会很容易!!

最新资讯
美团点评股价重回发行价:临近上市1周年 市值超4000亿港元

美团点评股价重回发行

在美团点评将迎来上市一周年,及明日要公布半年报之际,美
消息称大众汽车CEO对收购特斯拉股份感兴趣

消息称大众汽车CEO对

路透社今日援引德国《经理人》杂志的报道称,大众汽车CE
蔚来9月底前裁员1200人 造车新势力如何过冬?

蔚来9月底前裁员1200

8月22日,蔚来汽车创始人李斌对全体员工下发内部信,称9月
任正非批系统部没做好不放权 称四个代表处请示太多

任正非批系统部没做好

近日,华为创始人任正非在运营商BG组织变革研讨会上表示
中兴:“130亿定增募资方案”过审 将强化5G芯片研发

中兴:“130亿定增募资

今晚,中兴通讯发布公告,关于非公开发行A股股票申请获得
vivo首款5G手机发布 称已申请超2000项5G专利

vivo首款5G手机发布

vivo今日发布了其首款5G手机IQOO Pro,售价3798元起。IQ
最新文章
Javascript读写cookie的实例源码

Javascript读写cookie

今天小编就为大家分享一篇关于Javascript读写cookie的
微信小程序登录session的使用

微信小程序登录sessio

这篇文章主要介绍了微信小程序登录session的使用,小编
JavaScript中this用法学习笔记

JavaScript中this用法

在本篇文章里小编给大家分享了关于JavaScript中this用
nodejs微信开发之授权登录+获取用户信息

nodejs微信开发之授权

这篇文章主要介绍了nodejs微信开发之授权登录+获取用
nodejs微信开发之自动回复的实现

nodejs微信开发之自动

这篇文章主要介绍了nodejs微信开发之自动回复的实现,文
node微信开发之获取access_token+自定义菜单

node微信开发之获取ac

这篇文章主要介绍了node微信开发之获取access_token+