在 CentOS 上通过 PM2 配置并管理 Node.js 应用,一般流程如下(从环境准备到常见配置):
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
验证:
node -v
npm -v
npm install -g pm2
验证:
pm2 -v
假设你的项目目录是:
/opt/app/my-node-app
入口文件是:
app.js 或 server.js
cd /opt/app/my-node-app
pm2 start app.js
pm2 start app.js --name my-api
pm2 list
pm2 logs
pm2 logs my-api
pm2 restart my-api
pm2 stop my-api
pm2 delete my-api
pm2 startup
执行后会提示一条命令,直接复制执行即可。
保存当前进程:
pm2 save
pm2 ecosystem
会生成:
ecosystem.config.js
module.exports = {
apps: [
{
name: 'my-api',
script: './app.js',
cwd: '/opt/app/my-node-app',
instances: 2,
exec_mode: 'cluster',
autorestart: true,
watch: false,
max_memory_restart: '500M',
env: {
NODE_ENV: 'production',
PORT: 3000
}
}
]
}
pm2 start ecosystem.config.js
server {
listen 80;
server_name example.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;
}
}
PORTpm2 logsfirewall-cmd --add-port=3000/tcp --permanent
firewall-cmd --reload
sudo chown -R $(whoami):$(whoami) /opt/app/my-node-app
# 安装
npm install -g pm2
# 启动
pm2 start app.js --name my-api
# 开机自启
pm2 startup
pm2 save
如果你愿意,可以告诉我:
我可以给你一套完全贴合你服务器的配置方案。