Debian Node.js应用如何部署
导读:在 Debian 上部署 Node.js 应用的实用步骤 一 准备与安装 更新系统并安装基础工具:sudo apt update && sudo apt install -y curl wget git build-ess...
在 Debian 上部署 Node.js 应用的实用步骤
一 准备与安装
- 更新系统并安装基础工具:sudo apt update & & sudo apt install -y curl wget git build-essential
- 安装 Node.js 与 npm(两种常用方式,择一即可):
- 使用系统仓库:sudo apt install -y nodejs npm
- 使用 NodeSource 指定版本(示例为 18.x,可按需替换为 20.x 等): curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs
- 验证版本:node -v 与 npm -v 均应输出版本号。
二 部署与运行
- 准备代码与依赖:
- 建议将应用放在专用目录(如:/opt/myapp 或 /home/nodeapp/apps/myapp),避免使用 root 直接运行
- 安装依赖:npm ci --production(或 npm install),如有构建步骤执行 npm run build
- 使用 PM2 管理进程(推荐):
- 全局安装:sudo npm install -g pm2
- 启动应用:
- 直接启动:pm2 start app.js --name myapp
- 按 package.json 脚本启动:pm2 start npm --name “myapp” – run start
- 常用管理:pm2 status、pm2 logs、pm2 restart myapp、pm2 reload myapp
- 设置开机自启:pm2 startup(按提示执行生成命令),随后 pm2 save。
三 反向代理与 HTTPS(Nginx)
- 安装 Nginx:sudo apt install -y nginx
- 配置站点(示例将域名或服务器 IP 的 80 端口转发到本地 3000 端口):
- 新建配置:sudo nano /etc/nginx/sites-available/myapp
- 内容示例: 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 ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t & & sudo systemctl reload nginx
- 防火墙放行(如使用 UFW):sudo ufw allow ‘Nginx Full’
- 启用 HTTPS(可选,使用 Let’s Encrypt):
- 安装 Certbot:sudo apt install -y certbot python3-certbot-nginx
- 获取并自动配置证书:sudo certbot --nginx -d your_domain_or_ip
- 按提示选择是否重定向 HTTP 到 HTTPS。
四 生产环境最佳实践
- 运行用户与目录:为应用创建专用系统用户(如 nodeapp),将代码与日志归属该用户,避免使用 root
- 环境变量:使用 .env 或环境声明(如 NODE_ENV=production),敏感信息不要硬编码
- 进程守护与自启:优先使用 PM2 的集群与自动重启能力,并配置开机自启
- 日志与监控:集中日志(PM2 logs / 文件轮转)、健康检查、内存与 CPU 告警
- 安全加固:限制端口访问、及时更新 Node.js 与依赖、最小权限原则、启用 HTTPS。
五 常见问题与替代方案
- 使用 systemd 替代 PM2(不使用 PM2 时可选):
- 新建服务:sudo nano /etc/systemd/system/nodeapp.service
- 示例要点: [Unit] Description=Node.js App After=network.target [Service] ExecStart=/usr/bin/node /path/to/app.js Restart=always User=nodeapp Group=nodeapp Environment=NODE_ENV=production WorkingDirectory=/path/to/app [Install] WantedBy=multi-user.target
- 启用:sudo systemctl daemon-reload & & sudo systemctl enable --now nodeapp
- 使用 NVM 管理多版本 Node.js(适合开发与多项目):
- 安装:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- 加载:source ~/.bashrc
- 安装与切换:nvm install node(或指定版本);nvm use node
- 外部依赖与进程管理器的注意事项:当项目依赖 FFmpeg 等外部二进制时,使用 PM2 通常更容易继承系统环境与 PATH,减少 supervisor/systemd 下的路径与权限问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Node.js应用如何部署
本文地址: https://pptw.com/jishu/780122.html
