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

准备

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

$ npm install express-generator -g

创建名为myapp的应用

$ express myapp

安装依赖包

$ cd myapp 
$ npm install

启动express项目

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

$ DEBUG=myapp npm start

安装pm2

$ npm install pm2 -g

更新

$ pm2 update

启动

默认方式的pm2启动命令

$ pm2 start ./bin/www

自定义启动信息

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

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

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

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

{
"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

{
"scripts": {
"pm2": "pm2 start processes.json",
"start": "node ./bin/www"
}
}

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

$ npm run pm2

开机自动启动

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

  1. 保存当前进程列表

    $ pm2 save
  2. 生成开机自动启动命令

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

pm2常用命令

$ 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

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

坚持原创技术分享,您的支持将鼓励我继续创作!