首页主机资讯CentOS Node.js项目部署流程

CentOS Node.js项目部署流程

时间2025-11-28 11:37:04发布访客分类主机资讯浏览779
导读: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 -vnpm -v
  • 如需更高版本,可将 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 statuspm2 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
      
  • 日志与监控
    • PM2:pm2 logs < app-name> pm2 monit
    • Systemd:sudo journalctl -u myapp -f
  • 常见问题速查
    • 端口未放行:检查 firewalld 与云厂商安全组是否允许 80/443/3000
    • 权限问题:确保运行用户对项目目录有读写权限,生产环境不建议以 root 运行 Node。
    • 依赖安装失败:确认 Node/npm 版本与项目要求一致,必要时使用 yarn 或设置国内镜像源加速。
    • 启动命令错误:核对 package.jsonscripts.start 与入口文件(如 app.js/index.js)路径。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Node.js项目部署流程
本文地址: https://pptw.com/jishu/758862.html
CentOS Node.js性能优化技巧 CentOS Node.js内存溢出怎么解决

游客 回复需填写必要信息