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

 更新时间:2014年06月01日 21:59:21   作者:  
这篇文章主要介绍了使用upstart把nodejs应用封装为系统服务实例,需要的朋友可以参考下

一、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://jb51.net
[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 jb51.net"

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应用。运维起来会很容易!!

相关文章

  • 使用Fetch API执行GraphQL查询和变体问题

    使用Fetch API执行GraphQL查询和变体问题

    这篇文章主要介绍了使用Fetch API执行GraphQL查询和变体问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 教你快速搭建Node.Js服务器的方法教程

    教你快速搭建Node.Js服务器的方法教程

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。这篇文章主要给大家介绍了如何快速搭建Node.Js服务器的方法教程,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友下面来一起看看吧。
    2017-03-03
  • docker中编译nodejs并使用nginx启动

    docker中编译nodejs并使用nginx启动

    这篇文章主要介绍了docker中编译nodejs并使用nginx启动的相关资料,需要的朋友可以参考下
    2017-06-06
  • Node实现搜索框进行模糊查询

    Node实现搜索框进行模糊查询

    这篇文章主要为大家详细介绍了Node实现搜索框进行模糊查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Node.js实现的简易网页抓取功能示例

    Node.js实现的简易网页抓取功能示例

    这篇文章主要介绍了Node.js实现的简易网页抓取功能示例,本文使用了PhantomJS、node-phantomjs等库实现,需要的朋友可以参考下
    2014-12-12
  • 搞懂什么是Node.js原来这么简单

    搞懂什么是Node.js原来这么简单

    这篇文章主要介绍了Node.js的概念和基本原理,对Node.js感兴趣的同学,一定要看一下
    2021-04-04
  • 基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 如何使用npm安装yarn详解

    如何使用npm安装yarn详解

    Yarn是一个新的快速安全可信赖的可以替代NPM的依赖管理工具,下面这篇文章主要给大家介绍了关于如何使用npm安装yarn的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Nodejs实现微信分账的示例代码

    Nodejs实现微信分账的示例代码

    这篇文章主要介绍了Nodejs实现微信分账的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • cnpm安装详细步骤(附图文!)

    cnpm安装详细步骤(附图文!)

    由于npm软件包管理器有时可能不太稳定,安装依赖包容易报错,所以就有了cnpm,这篇文章主要给大家介绍了关于cnpm安装的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02

最新评论