Nodejs:upstart封装nodejs应用为系统服务(nodejs部署)

Nodejs:upstart封装nodejs应用为系统服务(nodejs部署)

alt upstart封装nodejs应用为系统服务

终于要把nodejs的应用程序部署上线了,如果能像系统服务一样,来启动和关闭nodejs应用,多好啊!下面就通过upstart来完成把nodejs应用封装为系统服务。以通过upstart以系统服务的方式管理nodejs应用。运维起来会很容易!!

文章目录:

nodejs应用介绍 upstart任务脚本 nodejs应用管理

请查看博客文章
http://blog.fens.me/linux-upstart-nodejs/


8 回复

Node.js: Upstart 封装 Node.js 应用为系统服务 (Node.js 部署)

Node.js 应用介绍

假设我们有一个简单的 Node.js 应用,它运行在一个 HTTP 服务器上,监听端口 8080。

// app.js
const http = require('http');

const hostname = '127.0.0.1';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Upstart 任务脚本

为了将这个 Node.js 应用封装为系统服务,我们需要创建一个 Upstart 任务脚本。Upstart 是一种事件驱动的初始化系统,用于管理 Linux 系统上的服务。

首先,在 /etc/init 目录下创建一个名为 myapp.conf 的文件,并添加以下内容:

# /etc/init/myapp.conf
description "My Node.js Application"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
respawn limit 10 5

script
    exec /usr/bin/node /path/to/app.js >> /var/log/myapp.log 2>&1
end script

解释:

  • description: 描述这个服务。
  • start on runlevel [2345]: 当系统进入运行级别 2、3、4 或 5 时启动服务。
  • stop on runlevel [!2345]: 当系统退出运行级别 2、3、4 或 5 时停止服务。
  • respawn: 如果服务崩溃,自动重启。
  • respawn limit 10 5: 允许最多重启 10 次,每次间隔 5 秒。
  • script ... end script: 定义如何启动服务。这里使用 exec 命令来启动 Node.js 应用,并将日志输出到 /var/log/myapp.log

Node.js 应用管理

一旦配置好 Upstart 脚本,就可以使用标准的 Upstart 命令来管理你的 Node.js 应用了。

  • 启动服务:

    sudo start myapp
    
  • 停止服务:

    sudo stop myapp
    
  • 查看服务状态:

    sudo status myapp
    
  • 重启服务:

    sudo restart myapp
    

通过这种方式,你可以方便地管理和监控你的 Node.js 应用,就像管理任何其他系统服务一样。这不仅简化了部署过程,还提高了应用的稳定性和可靠性。

参考链接


推荐你使用 node-foreman + cluster ,简单很多~

先了解一下,多谢!

不错啊~学习收藏了,可能运维的tx比较有用啊

同用 upstart,简单方便好用。

我也觉得以服务管理应用挺好用的,我准备把php, java, hadoop, kvm, pptp等的应用都封装一下。

以后再部署程序就方便了。

upstart + monit will be nicer :P

针对“Nodejs:upstart封装nodejs应用为系统服务”这个问题,可以通过Upstart(Ubuntu 14.04及更早版本使用的服务管理器)将Node.js应用作为系统服务来管理和启动。以下是基于Upstart配置Node.js应用为系统服务的步骤和示例。

示例代码

首先,创建一个Upstart配置文件,通常放在/etc/init/目录下。假设你的Node.js应用位于/home/user/node-app目录中,且入口文件名为app.js

Upstart配置文件:/etc/init/myapp.conf

# myapp.conf
description "My Node.js Application"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
respawn limit 10 5

env NODE_ENV=production
env APP_HOME=/home/user/node-app
env USER=user

script
    cd $APP_HOME
    exec sudo -u $USER $NODE_ENV=production /usr/bin/node app.js >> /var/log/myapp.log 2>&1
end script

解释

  • description: 简短描述你的应用。
  • start on runlevel [2345]stop on runlevel [!2345]: 定义了应用应在哪些运行级别启动和停止。
  • respawn: 如果应用崩溃,Upstart会自动重启它。
  • respawn limit 10 5: 限制在一个时间窗口(这里是5秒内)最多重启10次。
  • env NODE_ENV=production: 设置环境变量,例如将Node.js应用设置为生产环境。
  • script...end script: 这个块定义了如何启动应用。在这个例子中,我们切换到应用所在的目录,并使用sudo -u以指定用户身份运行Node.js应用。同时,日志被重定向到/var/log/myapp.log

启动和停止服务

一旦配置文件准备好并保存,可以使用以下命令管理服务:

  • 启动服务: service myapp start
  • 停止服务: service myapp stop
  • 重启服务: service myapp restart
  • 查看状态: service myapp status

这种方法可以让Node.js应用像其他系统服务一样进行管理,从而简化部署和维护过程。

回到顶部