插件窝 干货文章 怎么用Forever和nginx部署Node站点

怎么用Forever和nginx部署Node站点

Forever Nginx 应用 yourdomain 610    来源:    2025-04-25

使用 Forever 和 Nginx 部署 Node.js 站点指南

1. 准备工作

确保你已安装: - Node.js 和 npm - Nginx - Forever (可通过 npm install -g forever 安装)

2. 使用 Forever 运行 Node.js 应用

基本启动

forever start app.js

推荐启动方式(带日志输出)

forever start -a -l /var/log/forever.log -o /var/log/out.log -e /var/log/err.log app.js

常用 Forever 命令

  • 查看运行中的进程:forever list
  • 停止进程:forever stop [pid|uid]
  • 停止所有进程:forever stopall
  • 重启进程:forever restart [pid|uid]

3. 配置 Nginx 作为反向代理

编辑 Nginx 配置文件

通常位于 /etc/nginx/sites-available/yourdomain.com

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;  # 假设Node应用运行在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;
    }

    # 静态文件处理(可选)
    location /public/ {
        root /path/to/your/app;
        expires 30d;
    }

    # 错误页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

启用配置

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl restart nginx

4. 进阶配置

使用 Upstart 或 Systemd 管理 Forever(可选)

创建 systemd 服务文件 /etc/systemd/system/nodeserver.service:

[Unit]
Description=Node.js Server with Forever
After=network.target

[Service]
ExecStart=/usr/bin/forever start /path/to/your/app.js
ExecStop=/usr/bin/forever stop /path/to/your/app.js
Restart=always
User=yourusername
Group=yourgroup
Environment=NODE_ENV=production
WorkingDirectory=/path/to/your/app

[Install]
WantedBy=multi-user.target

然后启用服务:

sudo systemctl daemon-reload
sudo systemctl start nodeserver
sudo systemctl enable nodeserver

HTTPS 配置(使用 Let's Encrypt)

  1. 安装 Certbot
  2. 获取证书:sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  3. 自动续期测试:sudo certbot renew --dry-run

5. 监控与维护

  • 设置日志轮转
  • 使用 forever list 定期检查应用状态
  • 考虑使用 PM2 作为 Forever 的替代方案(提供更多监控功能)

常见问题解决

  1. 端口冲突:确保 Node 应用和 Nginx 使用不同端口
  2. 权限问题:确保 Nginx 用户有访问静态文件的权限
  3. 502 Bad Gateway:检查 Node 应用是否运行,以及代理配置是否正确
  4. 应用崩溃:Forever 会自动重启应用,但频繁崩溃需要检查应用代码

通过以上步骤,你可以建立一个稳定、高性能的 Node.js 生产环境。