使用 pm2 部署 node 项目

  最近在学习 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 logs
热更新,不停机 pm2 reload all
停止所有服务 pm2 stop all
删除某个服务 pm2 delete 0
删除所有服务 pm2 delete all


更多命令可参考:pm2 常用命令 开机自启

二、配置文件

  在/pm2下新建文件config.json,简单示例(单台服务器,非集群):

1
2
3
4
5
6
7
8
9
{
"name": "koa-app",
"script": "./app.js",
"cwd" : "./",
"log_date_format": "YYYY-MM-DD HH:mm:ss",
"max_memory_restart": "500M",
"out_file" : "./pm2/logs/pm2-out.log",
"error_file" : "./pm2/logs/pm2-err.log"
}
含义 命令
name 项目名称
script 主程序入口
cwd 启动目录
log_date_format 日志的日期格式
max_memory_restart 程序超过指定内存就重新启动
out_file 输出文件路径
error_file 错误日志路径

三、部署文件

1、通过 IP 地址请求

  在项目内新建一个start.sh文件,在服务器端可执行./start.sh更新服务。服务启用后,可通过 ip + 端口号访问。脚本文件内容如下:

1
2
3
4
git pull origin master
cnpm i
pm2 restart ./pm2/config.json
pm2 monit

注意
start.sh需要有 x 权限,提示权限不够时可执行chmod a+x start.sh

2、通过域名请求

  先在阿里云控制台解析一个域名,因为服务使用的是 9000 端口,所以搭配 nginx 使用。在/etc/nginx/conf下新建一个配置文件koa-app.conf,内容如下:

1
2
3
4
5
6
7
8
server {
listen 80;
server_name api.koa-app.liuxianyu.cn;

location / {
proxy_pass http://localhost:9000/;
}
}

四、项目代码

https://github.com/liuxy0551/koa-app

注意
本项目使用的端口是 9000,通过 IP 地址请求时记得在阿里云安全组中添加对应规则

以上

随笔标题:使用 pm2 部署 node 项目

随笔作者:刘先玉

发布时间:2020年09月25日 - 15:35:42

最后更新:2020年09月25日 - 15:35:42

原文链接:https://liuxianyu.cn/article/node-pm2.html