node部署-使用pm2管理node进程

准备

首先初始化一个 node 项目,这里我使用 express 生成器直接初始化一个项目

1
$ npm install express-generator -g

创建名为 myapp 的应用

1
$ express myapp

安装依赖包

1
2
$ cd myapp
$ npm install

启动 express 项目

express 项目启动命令npm start是利用package.jsonscripts来实现的(node ./bin/www)

1
$ DEBUG=myapp npm start

安装 pm2

1
$ npm install pm2 -g

更新

1
$ pm2 update

启动

默认方式的 pm2 启动命令

1
$ pm2 start ./bin/www

自定义启动信息

当然 pm2 启动的时候可以添加自定义参数,例如:name、watch…

其他更多的参数参考pm2 --help

我不太喜欢一大串的命令,于是我使用了配置文件的方式。

在应用的根目录,创建一个process.json配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"apps": [
{
"name": "Standout", // 名称
"script": "./bin/www", // 程序入库
"cwd": "./", // 根目录
"watch": ["bin", "public", "routes", "views"], // 需要监控的目录
"error_file": "./logs/app-err.log", // 错误输出日志
"out_file": "./logs/app-out.log", // 日志
"log_date_format": "YYYY-MM-DD HH:mm Z" // 日期格式
}
]
}

然后,在package.jsonscripts中增加一条pm2

1
2
3
4
5
6
{
"scripts": {
"pm2": "pm2 start processes.json",
"start": "node ./bin/www"
}
}

之后再启动的时候直接输入如下命令就好:

1
$ npm run pm2

开机自动启动

通过pm2 startup实现开机自动启动。

  1. 保存当前进程列表
1
$ pm2 save
  1. 生成开机自动启动命令

    1
    $ pm2 startup
  2. 复制控制台生成的命令,粘贴到控制台运行

pm2 常用命令

1
2
3
4
5
6
7
8
9
$ pm2 list # 查看pm2管理的进程列表
$ pm2 save # 保存当前进程列表
$ pm2 start [id|app-name] # 启动指定 id 或 app name 的进程
$ pm2 stop [id|app-name|all] # 停止
$ pm2 restart [id|app-name|all] # 重启
$ pm2 delete [id|app-name|all] # 删除
$ pm2 kill # 停掉PM2(避免端口占用)
$ pm2 logs [app-name] [--json] # 查看日志
$ pm2 monit # 启动pm2实时控制台面板

更多命令查看 pm2 --help

官方文档https://pm2.keymetrics.io/docs/usage/quick-start/ ^pm2实用入门指南

坚持原创技术分享,您的支持将鼓励我继续创作!
  • 本文作者: Leo
  • 本文链接: https://xuebin.me/posts/7ee71f07.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!