使用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 后缀名判断限制代码
Mar 31 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
详解Nodejs内存治理
May 13 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
Use Word to Search for Files
2007/06/15 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
Python遍历numpy数组的实例
2018/04/04 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python实现公司年会抽奖程序
2019/01/22 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
python获取Linux发行版名称
2019/08/30 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
幼儿园新年寄语
2014/04/03 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
师范生见习报告
2014/10/31 职场文书
大学生操行评语大全
2014/12/31 职场文书
初中军训感言
2015/08/01 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
拙作再改《我的收音机情缘》
2022/04/05 无线电