使用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制作爬虫全过程(续)
Dec 22 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 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图片加水印原理(超简单的实例代码)
2013/01/18 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
PHP count()函数讲解
2019/02/03 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Django url 路由匹配过程详解
2021/01/22 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
护理专科毕业推荐信
2013/11/10 职场文书
食品安全工作方案
2014/05/07 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏