CentOS 7 上部署 Node.js 项目的标准流程
一 准备与系统检查
sudo yum update -y && sudo yum install -y curl wget gitsudo firewall-cmd --permanent --zone=public --add-port=3000/tcp && sudo firewall-cmd --reload二 安装 Node.js 与 npm
wget https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-x64.tar.xztar -xf node-v18.20.8-linux-x64.tar.xzsudo ln -s /root/node-v18.20.8-linux-x64/bin/node /usr/local/bin/nodesudo ln -s /root/node-v18.20.8-linux-x64/bin/npm /usr/local/bin/npmnode -v 应返回 v18.20.8npm -v 返回对应 npm 版本curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejsnode -v、npm -vcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashsource ~/.nvm/nvm.shnvm install 18 && nvm use 18(可设置默认:nvm alias default 18)三 部署与运行应用
scp -r your-app user@your_ip:/opt/your-appgit clone https://your-repo.git /opt/your-app && cd /opt/your-appnpm ci --only=production(或 npm install 开发环境)npm run build/etc/profile.d/:
echo 'export NODE_ENV=production' | sudo tee /etc/profile.d/node.envsource /etc/profile.d/node.envsudo npm install -g pm2pm2 start dist/index.js --name "myapp" --env productionpm2 status、pm2 logs myapp、pm2 monitpm2 startup systemd -u $USER --hp $HOME && pm2 savenode app.js四 反向代理与域名访问(Nginx)
sudo yum install -y nginxsudo systemctl start nginx && sudo systemctl enable nginxsudo vim /etc/nginx/conf.d/myapp.confserver {
listen 80;
server_name your-domain.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_cache_bypass $http_upgrade;
}
}
sudo nginx -t && sudo systemctl reload nginx五 常见问题与排查
ss -tpln | grep 3000/etc/profile.d/rm -rf node_modules package-lock.json && npm installpm2 logs、pm2 monit