在京东云服务器(如使用京东云的云主机 CVM)上配置 PM2 守护进程,可以让你的 Node.js 应用在后台稳定运行,并在系统重启或进程崩溃时自动恢复。以下是详细的配置步骤:
✅ 一、准备工作
-
登录京东云服务器
使用 SSH 登录你的京东云 Linux 服务器(如 CentOS、Ubuntu 等)。ssh root@your-server-ip
-
更新系统包(推荐)
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
✅ 二、安装 Node.js 和 npm
PM2 是基于 Node.js 的进程管理器,所以需要先安装 Node.js。
方法 1:使用 NodeSource 安装最新版 Node.js(推荐)
# 添加 NodeSource 仓库(以 Node.js 18.x 为例)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# 安装 Node.js 和 npm
sudo apt install -y nodejs
注:CentOS 用户请参考 NodeSource 对应的 yum 命令。
验证安装
node -v # 应输出 v18.x.x
npm -v # 应输出版本号
✅ 三、全局安装 PM2
sudo npm install -g pm2
建议使用
sudo
全局安装,确保所有用户可访问(生产环境通常用普通用户运行应用)。
验证安装:
pm2 --version
✅ 四、启动你的 Node.js 应用
假设你的项目在 /home/ubuntu/myapp
目录下,入口文件是 app.js
。
cd /home/ubuntu/myapp
pm2 start app.js --name "my-node-app"
--name
指定进程名称,便于管理。
常用命令:
pm2 list # 查看运行中的进程
pm2 logs # 查看日志
pm2 logs my-node-app # 查看指定应用日志
pm2 restart my-node-app # 重启应用
pm2 stop my-node-app # 停止应用
pm2 delete my-node-app # 删除进程
✅ 五、设置 PM2 开机自启
为了让服务器重启后自动拉起应用,需配置 PM2 自启动。
-
生成开机启动命令
pm2 startup
执行后会输出一段命令,例如:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, run: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
-
复制并执行提示中的命令(注意替换用户名和路径)
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
-u ubuntu
:表示以哪个用户运行(根据你的实际用户修改,如root
或ubuntu
)
--hp /home/ubuntu
:用户的主目录 -
保存当前进程列表
pm2 save
这样下次开机时,PM2 会自动恢复之前运行的应用。
✅ 六、(可选)配置 Nginx 反向X_X
如果你希望通过域名或 80 端口访问应用,建议配合 Nginx。
示例 Nginx 配置:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000; # 假设 Node.js 应用监听 3000
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
然后重启 Nginx:
sudo systemctl reload nginx
✅ 七、安全建议
- 使用非 root 用户运行 Node.js 应用。
- 配置防火墙(如
ufw
或京东云安全组),只开放必要端口(如 80、443)。 - 使用
pm2 monit
实时监控应用状态。
✅ 总结
步骤 | 操作 |
---|---|
1 | 登录京东云服务器 |
2 | 安装 Node.js 和 npm |
3 | 全局安装 PM2 |
4 | 使用 pm2 start 启动应用 |
5 | 执行 pm2 startup 和 pm2 save 实现开机自启 |
6 | (可选)配置 Nginx 反向X_X |
如有使用 Docker,也可将 PM2 集成到容器中,但上述方式适用于直接部署在云主机上的场景。
如需帮助查看具体错误日志,可运行:
pm2 logs
祝你部署顺利!🚀