使用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-2109:38:30.696][INFO]console-StartApp:http://jb51.net [2013-06-2109:38:30.700][INFO]console-Expressserverlisteningonport3000
这样程序就就在后台启动了。进程正常运行着,我也不用做太多的事情。
如果我想停止这个程序,怎么办呢?找到nodejs的系统进程,再杀死。
~ps-aux|grepnode root 21333 0.6 3.790920038292pts/0 Sl 09:38 0:00nodeapp.js ~kill-921333
直接暴力解决。如果能像系统服务一样,来启动和关闭nodejs应用,多好啊!下面就通过upstart来完成把nodejs应用封装为系统服务。
二、把应用封装为upstart任务脚本
~vi/etc/init/nodejs-moive.conf
description"node.jsjb51.net"
startonstartup stoponshutdown
script exportHOME="/root/deploy/movie" echo$$>/var/run/moiveme.pid exportNODE_ENV=production exec/usr/bin/node/root/deploy/movie/server.js
#日志输出 #exec/usr/bin/node/root/deploy/movie/server.js>>/var/log/moiveme.log2>&1 endscript
pre-startscript echo"[`date-u+%Y-%m-%dT%T.%3NZ`](sys)Starting">>/var/log/moiveme.log endscript
pre-stopscript rm/var/run/moiveme.pid echo"[`date-u+%Y-%m-%dT%T.%3NZ`](sys)Stopping">>/var/log/moiveme.log endscript