温馨提示×

CentOS Node.js项目如何管理

小樊
43
2025-11-25 19:12:12
栏目: 编程语言

CentOS 上 Node.js 项目的管理实践

一 版本管理

  • 使用 NVM(Node Version Manager) 在同一台机器管理多个 Node.js 版本,适合开发与多项目并行:
    • 安装与启用:
      • 安装:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
      • 启用:执行 source ~/.bash_profilesource ~/.bashrc
    • 常用命令:
      • 安装版本:nvm install 18.17.0nvm install --lts
      • 切换版本:nvm use 18.17.0
      • 设置默认:nvm alias default 18.17.0
      • 查看版本:nvm ls-remotenvm ls
  • 使用 NodeSource 仓库通过 Yum 安装系统级版本(适合稳定生产环境):
    • 添加仓库并安装(示例为 18.x):
      • curl -sL https://rpm.nodesource.com/setup_18.x | sudo -E bash -
      • sudo yum install -y nodejs
    • 验证:node -vnpm -v
  • 选择建议:开发/多版本并存优先 NVM;追求系统级稳定与自动化依赖处理优先 NodeSource + Yum

二 依赖管理

  • 使用 npm(默认包管理器):
    • 初始化:npm init -y
    • 安装生产依赖:npm install express --save
    • 安装开发依赖:npm install webpack --save-dev
    • 更新:npm update
    • 卸载:npm uninstall package_name
  • 使用 yarn(更快、严格的版本锁定):
    • 安装:npm install -g yarn
    • 初始化:yarn init
    • 安装依赖:yarn add express;开发依赖:yarn add webpack --dev
    • 更新:yarn upgrade
    • 卸载:yarn remove package_name
  • 使用 pnpm(节省磁盘、硬/符号链接共享依赖):
    • 安装:npm install -g pnpm
    • 安装依赖:pnpm add package-name;开发依赖:pnpm add package-name --save-dev
  • 锁文件与一致性:npm 使用 package-lock.jsonyarn 使用 yarn.lockpnpm 使用 pnpm-lock.yaml,提交到代码库以确保各环境依赖一致。

三 进程管理与部署

  • 使用 PM2(推荐,具备守护、集群、日志与开机自启):
    • 安装:sudo npm install pm2 -g
    • 启动:pm2 start app.js --name my-app
    • 配置文件 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 statuspm2 logs my-apppm2 restart/stop my-apppm2 monit
    • 开机自启:pm2 startup
  • 使用 systemd(系统级服务,适合不依赖 PM2 的场景):
    • 创建服务文件:sudo vi /etc/systemd/system/my-nodejs-app.service
    • 示例:
      • [Unit] Description=My Node.js App;After=syslog.target network.target
      • [Service] User=<your_user>;Group=<your_group>;WorkingDirectory=/path/to/app;Environment=NODE_ENV=production;ExecStart=/usr/bin/node /path/to/app/app.js;Restart=always
      • [Install] WantedBy=multi-user.target
    • 启用与操作:sudo systemctl daemon-reloadsudo systemctl start my-nodejs-appsudo systemctl enable my-nodejs-appsudo systemctl status my-nodejs-app
  • 部署流程要点:
    • 拉取代码:git clone && cd
    • 安装依赖:npm installyarn install
    • 启动:pm2 startsystemctl start my-nodejs-app
    • 验证:pm2 statussystemctl status my-nodejs-app

四 反向代理与网络配置

  • 使用 Nginx 作为反向代理(提升性能与安全):
    • 安装与启停:sudo yum install -y nginxsudo systemctl start nginxsudo systemctl enable nginx
    • 配置示例(/etc/nginx/conf.d/default.conf 或 /etc/nginx/nginx.conf):
      • server { listen 80;server_name your_domain_or_IP;location / { proxy_pass http://localhost: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
  • 防火墙放行(如启用 firewalld):
    • sudo firewall-cmd --permanent --zone=public --add-service=http
    • sudo firewall-cmd --permanent --zone=public --add-service=https
    • sudo firewall-cmd --reload

五 日常运维与最佳实践

  • 环境隔离:开发/测试/生产使用不同的 NODE_ENVecosystem.config.js 配置;PM2 通过 –env production 加载生产环境变量。
  • 日志与监控:统一日志路径,使用 pm2 logspm2 monit 观察内存、CPU 与异常;必要时接入集中式日志系统。
  • 安全加固:最小权限运行(systemd 指定 User/Group),隐藏 X-Powered-By,限制请求体大小,启用 Helmet(如适用),定期升级依赖与系统补丁。
  • 自动化与发布:使用 Git hooksCI/CD 执行测试、构建与滚动升级;蓝绿/金丝雀发布降低风险。
  • 备份与回滚:备份 package.json 与锁文件、环境变量与 Nginx 配置;回滚时优先恢复代码与依赖版本,再重启服务。

0