最近在学习 node,写了个测试接口,想着学习一下如何部署 node 项目,这样方便日后写正式一点的项目好自行部署,这里记录下 pm2 的一些知识点。
¶一、常用命令
| 含义 | 命令 |
|---|---|
| 启动服务 | pm2 start app.js |
| 指定名称启动服务 | pm2 start app.js --name markdown |
| 当文件变化时自动重启 | pm2 start app.js --watch |
| 查看服务列表 | pm2 list |
| 重启某个服务 | pm2 restart 0 / app.js |
| 停止某个服务 | pm2 stop 0 / app.js |
| 显示每个应用程序的 CPU 和内存占用情况 | pm2 monit |
| 查看某个应用程序的详细信息 | pm2 describe 0 |
| 查看输出的日志 | pm2 logs |
| 热更新,不停机 | pm2 reload all |
| 停止所有服务 | pm2 stop all |
| 删除某个服务 | pm2 delete 0 |
| 删除所有服务 | pm2 delete all |


更多命令可参考:pm2 常用命令 开机自启
¶二、配置文件
在/pm2下新建文件config.json,简单示例(单台服务器,非集群):
1 | { |
| 含义 | 命令 |
|---|---|
| name | 项目名称 |
| script | 主程序入口 |
| cwd | 启动目录 |
| log_date_format | 日志的日期格式 |
| max_memory_restart | 程序超过指定内存就重新启动 |
| out_file | 输出文件路径 |
| error_file | 错误日志路径 |
¶三、部署文件
¶1、通过 IP 地址请求
在项目内新建一个start.sh文件,在服务器端可执行./start.sh更新服务。服务启用后,可通过 ip + 端口号访问。脚本文件内容如下:
1 | git pull origin master |

注意
start.sh需要有 x 权限,提示权限不够时可执行chmod a+x start.sh
¶2、通过域名请求
先在阿里云控制台解析一个域名,因为服务使用的是 9000 端口,所以搭配 nginx 使用。在/etc/nginx/conf下新建一个配置文件koa-app.conf,内容如下:
1 | server { |

¶四、项目代码
https://github.com/liuxy0551/koa-app
注意
本项目使用的端口是 9000,通过 IP 地址请求时记得在阿里云安全组中添加对应规则