使用upstart把nodejs应用封装为系统服务实例


Posted in NodeJs onJune 01, 2014

一、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://3water.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 3water.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应用。运维起来会很容易!!
NodeJs 相关文章推荐
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 #NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 #NodeJs
Nodejs进程管理模块forever详解
Jun 01 #NodeJs
NodeJS Express框架中处理404页面一个方式
May 28 #NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 #NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 #NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 #NodeJs
You might like
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
jQuery基础知识小结
2014/12/22 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Python多线程学习资料
2012/12/19 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
使用python实现链表操作
2018/01/26 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python实现画图软件功能方法详解
2020/07/28 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
前台接待岗位职责
2015/02/03 职场文书
青涩记忆观后感
2015/06/18 职场文书
航班延误投诉信
2015/07/02 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js