闽公网安备 35020302035485号

# 全局安装 npm install -g supervisor # 开发依赖 npm install --save-dev supervisor
1.2.forever
forever 进程管理器是一款简单的 CLI 工具,可让您的 Node.js 进程持续运行。它能永久保留一个子进程(如 Node.js Web 服务器上的项目),并在失败后自动重启。# 全局安装 npm install -g forever # 开发依赖 npm install --save-dev forever
# 堆代码 duidaima.com # 全局安装 npm install -g nodemon # 开发依赖 npm install --save-dev nodemon
# 全局安装 npm install -g pm2 # 开发依赖 npm install --save-dev pm2抛开 docker、k8s 容器化部署,pm2 已成为 Node.js 应用程序常用的进程管理器,下面将进一步阐述 pm2 在应用开发中的最佳实践。
npm init -y新建 index.js 入口文件,并增加如下内容:
const http = require('node:http');
// Create a local server to receive data from
const server = http.createServer();
// Listen to the request event
server.on('request', (request, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({
data: 'Hello World!',
env: process.env.NODE_ENV || 'development',
}));
});
server.listen(8888, () => {
console.log(`http://localhost:8888`);
});
2.2.创建 pm2 配置文件.便于日志管理
module.exports = {
apps: [
{
name: 'demo',
script: './index.js',
instances: 4,
exec_mode: 'cluster',
out_file: '../logs/.pm2/demo.log',
error_file: '../logs/.pm2/demo-error.log',
watch: false,
max_memory_restart: '10G',
listen_timeout: 5000,
kill_timeout: 5000,
wait_ready: true,
max_restarts: 10,
env: {
NODE_ENV: 'development',
},
env_test: {
NODE_ENV: 'test',
},
env_production: {
NODE_ENV: 'production',
},
},
],
};
1.3.启动服务demo ✗ pm2 start ecosystem.config.js [PM2][WARN] Folder does not exists: /Users/ifedlab/logs/.pm2 [PM2] Creating folder: /Users/ifedlab/logs/.pm2 [PM2] App [demo] launched (4 instances) ┌──────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼──────────┤ │ demo │ 0 │ cluster │ 88675 │ online │ 0 │ 20s │ 0% │ 42.4 MB │ ifedlab │ disabled │ │ demo │ 1 │ cluster │ 88684 │ online │ 0 │ 15s │ 0% │ 43.2 MB │ ifedlab │ disabled │ │ demo │ 2 │ cluster │ 88719 │ online │ 0 │ 10s │ 0% │ 42.1 MB │ ifedlab │ disabled │ │ demo │ 3 │ cluster │ 88740 │ online │ 0 │ 5s │ 0% │ 43.9 MB │ ifedlab │ disabled │ └──────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app访问 http://localhost:8888 响应如下:
{
data: "Hello World!",
env: "development"
}
我们还可以在启动时增加环境变量参数 pm2 start ecosystem.config.js --env production ,刷新页面响应如下:{
data: "Hello World!",
env: "production"
}
1.4.监控服务