使用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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 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 file_get_contents函数轻松采集html数据
2010/04/22 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python合并多个装饰器小技巧
2015/04/28 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
Python中标准模块importlib详解
2017/04/16 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
如何理解python对象
2020/06/21 Python
python中的错误如何查看
2020/07/08 Python
美国网上书店:Barnes & Noble
2018/08/15 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
货代行业个人求职简历的自我评价
2013/10/22 职场文书
中英双版中文教师求职信
2013/10/27 职场文书
酒店经理职责
2014/01/30 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
画展观后感
2015/06/17 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
导游词之河北野三坡
2019/12/11 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android