要把一个Node.js应用程序封装为系统服务,可以使用 upstart 工具。 upstart 是 Ubuntu 的默认系统初始化工具之一,负责自动启动、停止和管理系统服务。upstart 将一个应用程序实例化为一个守护进程(也叫做服务),它会自动执行并运行在后台。
下面是使用upstart把nodejs应用封装为系统服务的攻略:
步骤1 - 编写Nodejs应用程序
首先需要编写一个Node.js应用程序。在本例中,我们将使用一个简单的 HTTP 程序作为例子。我们把应用程序保存在 /opt/nodeapp/app.js 和 /opt/nodeapp/package.json 文件里。
/**
* app.js
*/
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8000, 'localhost');
console.log('Server running at http://localhost:8000/');
{
"name": "nodeapp",
"version": "0.0.1",
"dependencies": {
"http": "^0.10.0"
}
}
上面的应用程序创建了一个 HTTP 服务,监听 localhost:8000 端口。每当有请求到达时,就会向客户端发送响应 "Hello World"。
步骤2 - 创建upstart脚本
接下来,需要编写一个upstart脚本,以便 Upstart 启动、停止、重启或查看 Node.js 应用程序。在 Ubuntu 中,upstart 脚本存储在 /etc/init 目录中。我们把应用程序的 upstart 脚本存储在 /etc/init/nodeapp.conf 文件中。
# nodeapp - upstart script for a Node.js application
description "Node.js application"
start on started mountall
stop on shutdown
respawn
chdir /opt/nodeapp
exec /usr/bin/node app.js >> /var/log/nodeapp.log 2>&1
上述 upstart 脚本的含义如下:
- description:Upstart 脚本的描述信息;
- start on:表示启动时机,此处表示要在系统挂载所有文件系统后启动 Node.js 应用程序;
- stop on:表示停止条件,此处表示系统关机时停止 Node.js 应用程序;
- respawn:表示应用程序异常终止后会自动重启;
- chdir:表示进程运行的目录;
- exec:表示要运行的命令,这里是通过 node 命令启动应用程序,同时将输出日志重定向到 /var/log/nodeapp.log 文件中。
步骤3 - 启动Nodejs应用程序
现在,可以启动 Node.js 应用程序了。首先通过 upstart 启动 Node.js 应用程序。由于 upstart 脚本是以系统服务的形式运行,因此会在系统启动时自动启动 Node.js 应用程序。下面是相应的命令:
sudo service nodeapp start
可以使用以下命令查看 Node.js 应用程序的状态:
sudo status nodeapp
输出应该类似于这样:
● nodeapp.service - Node.js application
Loaded: loaded (/etc/systemd/system/nodeapp.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-04-10 01:05:42 UTC; 7min ago
Main PID: 2912 (node)
CGroup: /system.slice/nodeapp.service
└─2912 /usr/bin/node /opt/nodeapp/app.js
Apr 10 01:05:42 ubuntu2004 systemd[1]: Started Node.js application.
Apr 10 01:05:43 ubuntu2004 node[2912]: Server running at http://localhost:8000/
现在 Node.js 应用程序已经在后台运行了。
步骤4 - 停止Nodejs应用程序
停止 Node.js 应用程序很简单。只需要运行下面的命令:
sudo service nodeapp stop
应用程序将从后台进程中终止。可以通过以下命令检查后台进程是否已停止运行:
pgrep node
这个命令应该不会返回任何值,或者只返回 init 进程的 pid。
以上就是使用upstart把nodejs应用封装为系统服务实例的完整攻略,你可以根据上述步骤尝试自己的应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用upstart把nodejs应用封装为系统服务实例 - Python技术站