使用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(二)--- Node.js事件模块
May 21 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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
图象函数中的中文显示
2006/10/09 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
Vue 组件间的样式冲突污染
2017/08/31 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
什么是python的必选参数
2020/06/21 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
学生周末回家住宿长期请假条
2014/02/15 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
销售人才自我评价范文
2014/09/27 职场文书
六查六看自查报告
2014/10/14 职场文书
2015年检验科工作总结
2015/04/27 职场文书
Python 中面向接口编程
2022/05/20 Python