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

最新资讯
申通、圆通、韵达、顺丰8月单票收入同比下滑均超20%

申通、圆通、韵达、顺

由已披露的报告显示,圆通、韵达、申通和顺丰8月的单票
Netflix纪录片《社交困境》让用户重新评估Facebook等社交媒体

Netflix纪录片《社交

Netflix发布名为《社交困境》(The Social Dilemma)新纪
滴滴张博:智慧交通大脑将在交通基础设施变革中扮演重要角色

滴滴张博:智慧交通大脑

滴滴出行CTO张博表示,智慧交通大脑将在交通基础设施变
微信发布iOS 7.0.16测试版:聊天框可选不显示

微信发布iOS 7.0.16测

在微信7.0.16 for iOS测试版中,聊天会话除了可以执行“
美司法部控告六人涉嫌贿赂亚马逊员工以获得市场优势

美司法部控告六人涉嫌

据报道,美国司法部周五指控六人参与贿赂亚马逊员工和承
最新发现的一次大灭绝事件

最新发现的一次大灭绝

2.33亿年前,地球成为“炼狱”。在我们现在所知的加拿大
最新文章
详解Vue的ref特性的使用

详解Vue的ref特性的使

这篇文章主要介绍了详解Vue的ref特性的使用,文中通过
vue学习笔记之slot插槽基本用法实例分析

vue学习笔记之slot插

这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结
vue跳转方式(打开新页面)及传参操作示例

vue跳转方式(打开新页

这篇文章主要介绍了vue跳转方式(打开新页面)及传参操作,
vue学习笔记之过滤器的基本使用方法实例分析

vue学习笔记之过滤器

这篇文章主要介绍了vue学习笔记之过滤器的基本使用方
js获取本日、本周、本月的时间代码

js获取本日、本周、本

本篇文章给大家分享的内容是利用js如何获取本日、本周
node crawler如何添加promise支持

node crawler如何添加

这篇文章主要介绍了node crawler如何添加promise支持,