在京东云服务器(如京东云的云主机 CVM)上配置 PM2 守护进程,主要是为了让你的 Node.js 应用在后台稳定运行,并实现自动重启、日志管理、负载均衡等功能。以下是详细的配置步骤:
✅ 一、准备工作
-
登录京东云服务器
- 使用 SSH 登录你的京东云服务器:
ssh root@your-server-ip
- 使用 SSH 登录你的京东云服务器:
-
更新系统包(可选但推荐)
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y -
安装 Node.js 和 npm
推荐使用 nvm(Node Version Manager)来安装和管理 Node.js。# 安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 配置 source ~/.bashrc # 安装最新 LTS 版本的 Node.js nvm install --lts验证安装:
node -v npm -v
✅ 二、安装 PM2
npm install -g pm2
验证安装:
pm2 --version
✅ 三、启动你的 Node.js 应用
假设你的项目位于 /home/ubuntu/myapp,主文件是 app.js。
cd /home/ubuntu/myapp
pm2 start app.js --name "my-node-app"
--name是为进程起一个别名,方便后续管理。
✅ 四、设置 PM2 开机自启
PM2 提供了开机自启动功能,避免服务器重启后应用停止。
-
生成启动命令
pm2 startup执行后会输出一行命令,例如:
[PM2] You have to run this command as root. Execute the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your-username --hp /home/your-username -
复制并执行它(带 sudo)
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu -
保存当前进程列表
pm2 save
这样,下次服务器重启时,PM2 会自动拉起你之前运行的应用。
✅ 五、常用 PM2 命令
| 命令 | 说明 |
|---|---|
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 monit |
进入监控界面 |
✅ 六、配置 ecosystem.config.js(推荐用于生产)
在项目根目录创建 ecosystem.config.js 文件,便于管理多应用或复杂配置。
module.exports = {
apps: [
{
name: 'my-node-app',
script: './app.js',
instances: 1, // 启动实例数,0=CPU核心数
autorestart: true, // 自动重启
watch: false, // 是否监听文件变化(生产环境建议关闭)
max_memory_restart: '1G', // 内存超限自动重启
env: {
NODE_ENV: 'development',
PORT: 3000
},
env_production: {
NODE_ENV: 'production',
PORT: 8080
}
}
]
};
使用配置文件启动:
pm2 start ecosystem.config.js --env production
✅ 七、配合 Nginx(可选)
如果你希望通过域名访问,建议使用 Nginx 反向X_X到 Node.js 应用端口。
示例 Nginx 配置:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1: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;
}
}
✅ 八、安全建议
- 使用非 root 用户运行 Node.js 应用。
- 配置防火墙(如 ufw 或安全组),只开放必要端口(如 80、443)。
- 定期更新系统和依赖。
总结
通过以上步骤,你已经成功在京东云服务器上配置了 PM2 守护进程,确保你的 Node.js 应用:
- 永不停机(崩溃自动重启)
- 开机自启
- 日志集中管理
- 易于部署与维护
如有进一步需求(如集群模式、监控、Docker 部署),也可以扩展使用 PM2 的高级功能。
需要我帮你写一个完整的部署脚本吗?
CDNK博客