CentOS Node.js项目部署流程
导读:CentOS 上部署 Node.js 项目的标准流程 一 准备与安装 更新系统并安装基础工具 执行:sudo yum update -y 可选:sudo yum groupinstall -y "Development Tools"(...
CentOS 上部署 Node.js 项目的标准流程
一 准备与安装
- 更新系统并安装基础工具
- 执行:
sudo yum update -y - 可选:
sudo yum groupinstall -y "Development Tools"(便于编译原生依赖)
- 执行:
- 安装 Node.js 与 npm(以 NodeSource 为例,选择与你项目匹配的版本)
- 示例(Node.js 16.x):
curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash - sudo yum install -y nodejs - 验证:
node -v、npm -v
- 示例(Node.js 16.x):
- 如需更高版本,可将 setup_16.x 替换为 setup_18.x/20.x 等对应脚本。
二 部署应用代码
- 方式一:Git 克隆
sudo mkdir -p /var/www/myapp cd /var/www/myapp git clone < 你的仓库地址> . - 方式二:SCP/SFTP 上传
scp -r /本地/项目/路径 用户@服务器IP:/var/www/myapp - 进入项目目录并安装依赖
cd /var/www/myapp npm install # 或 yarn install - 如项目包含构建步骤(如 TypeScript、Webpack),先执行构建:
npm run build # 以项目 package.json 脚本为准
三 进程管理与开机自启
- 使用 PM2 管理进程(推荐)
- 全局安装:
sudo npm install -g pm2 - 启动应用:
pm2 start app.js --name < app-name> - 常用命令:
pm2 status、pm2 logs < app-name>、pm2 restart < app-name>、pm2 stop < app-name> - 设置开机自启:
pm2 startup按提示执行,然后pm2 save
- 全局安装:
- 使用配置文件(ecosystem.config.js)更便于多环境与集群
module.exports = { apps: [{ name: 'my-app', script: 'app.js', instances: 'max', exec_mode: 'cluster', autorestart: true, watch: false, max_memory_restart: '1G', env: { NODE_ENV: 'development' } , env_production: { NODE_ENV: 'production' } } ] } ;- 启动:
pm2 start ecosystem.config.js --env production
- 启动:
- 不使用 PM2 时的替代方案:Systemd 服务
- 新建:
sudo nano /etc/systemd/system/myapp.service - 示例:
[Unit] Description=My Node.js App After=network.target [Service] ExecStart=/usr/bin/node /var/www/myapp/app.js Restart=always User=nodeuser Group=nodeuser Environment=NODE_ENV=production WorkingDirectory=/var/www/myapp StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target - 启用:
sudo systemctl daemon-reload & & sudo systemctl enable myapp & & sudo systemctl start myapp
- 新建:
四 反向代理与防火墙
- 安装并启动 Nginx
sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx - 配置反向代理(示例:Node 服务在 3000 端口)
- 新建:
sudo nano /etc/nginx/conf.d/myapp.conf - 内容:
server { 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 systemctl reload nginx
- 新建:
- 防火墙放行 HTTP/HTTPS
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload - 如需 HTTPS,建议使用 Let’s Encrypt 的 certbot 为 Nginx 自动签发证书。
五 环境变量与日志排查
- 环境变量
- 推荐在应用目录使用 .env 文件(由
dotenv等库加载),或写入系统级脚本:sudo nano /etc/profile.d/node.sh # 内容示例: export NODE_ENV=production export DATABASE_URL=your_db_url # 生效: source /etc/profile.d/node.sh
- 推荐在应用目录使用 .env 文件(由
- 日志与监控
- PM2:
pm2 logs < app-name>、pm2 monit - Systemd:
sudo journalctl -u myapp -f
- PM2:
- 常见问题速查
- 端口未放行:检查 firewalld 与云厂商安全组是否允许 80/443/3000。
- 权限问题:确保运行用户对项目目录有读写权限,生产环境不建议以 root 运行 Node。
- 依赖安装失败:确认 Node/npm 版本与项目要求一致,必要时使用 yarn 或设置国内镜像源加速。
- 启动命令错误:核对 package.json 的 scripts.start 与入口文件(如 app.js/index.js)路径。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Node.js项目部署流程
本文地址: https://pptw.com/jishu/758862.html
