温馨提示×

ubuntu下nodejs如何部署

小樊
46
2025-12-28 10:08:58
栏目: 编程语言

Ubuntu 下 Node.js 生产级部署步骤

一 准备与安装 Node.js

  • 更新系统并安装构建依赖:
    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y build-essential libssl-dev
  • 安装 Node.js(推荐 NodeSource 指定版本,示例为 20.x;如需 18.x 将链接中的 20 改为 18):
    • curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    • sudo apt install -y nodejs
  • 验证版本:
    • node -v
    • npm -v
  • 如需多版本管理,可用 nvm(适合在同一台机器维护多个 Node 版本):
    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    • source ~/.bashrc
    • nvm install --lts && nvm use --lts

二 部署应用与进程管理

  • 上传或克隆代码(三选一):
    • SCP:scp -r ./local-project user@your_server_ip:/path/to/remote/directory
    • SFTP:FileZilla / WinSCP 拖拽上传
    • Git:git clone https://github.com/your-repo/project.git
  • 安装依赖与构建(如有构建步骤执行构建):
    • cd /path/to/project
    • npm install(生产环境可加 --production)
    • npm run build(若 package.json 定义了 build 脚本)
  • PM2 启动与守护进程:
    • sudo npm install -g pm2
    • pm2 start server.js --name “my-node-app”(入口文件按实际修改)
    • 常用:pm2 list、pm2 logs、pm2 restart my-node-app、pm2 stop my-node-app
    • 设置开机自启:pm2 startup(按提示执行生成的命令),随后 pm2 save

三 配置 Nginx 反向代理与 HTTPS

  • 安装 Nginx:
    • sudo apt install -y nginx
  • 配置反向代理(编辑 /etc/nginx/sites-available/default,将域名与端口按实际替换):
    • server { listen 80; server_name your-domain.com www.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 restart nginx
  • 启用 HTTPS(Let’s Encrypt + Certbot,自动修改 Nginx 并配置自动续期):
    • sudo apt install certbot python3-certbot-nginx
    • sudo certbot --nginx -d your-domain.com

四 安全与运维要点

  • 防火墙放行(UFW):
    • sudo ufw allow ‘Nginx Full’
    • sudo ufw enable && sudo ufw status
  • 环境变量与配置:
    • PORTNODE_ENV 等放入环境变量或 .env,代码中通过 process.env.PORT 读取
    • 示例:echo “PORT=3000\nNODE_ENV=production” >> ~/.bashrc && source ~/.bashrc
  • 常见问题排查:
    • 端口冲突:检查占用 sudo netstat -tulnp | grep 3000,或调整应用端口
    • 权限问题:sudo chown -R $USER:$USER /path/to/project
    • 依赖错误:删除 node_modules 和 package-lock.json 后重新 npm install
  • 日志与监控:
    • PM2 日志:pm2 logs
    • Nginx 错误日志:sudo tail -f /var/log/nginx/error.log

五 一键部署脚本示例

  • 保存为 deploy.sh,chmod +x deploy.sh 后执行 ./deploy.sh
    • #!/bin/bash set -e APP_DIR=“/path/to/my-node-app” cd “$APP_DIR” git pull origin main npm install npm run build || true pm2 restart my-node-app || pm2 start server.js --name “my-node-app” sudo systemctl reload nginx
  • 可按需扩展:执行数据库迁移、静态资源预热、通知等步骤

0