海神与明月 https://blog.satri.cn/ 全站:3.19 万字
技术

NextJS 项目在服务器上使用 PM2 部署运行指南

2025-06-28 字数:566

一、部署前提

二、部署步骤

1. 上传项目文件
2. 生产环境部署(推荐方式)
# 进入项目目录
cd /var/www/next-project

# 安装依赖(首次部署需执行)
npm install

# 构建生产版本(生成 .next 文件夹)
npm run build

# 使用 PM2 启动项目
pm2 start npm --name "next-app" -- run start

# 查看 PM2 进程状态
pm2 status
3. 开发环境部署(临时测试用)
# 进入项目目录
cd /var/www/next-project

# 启动开发服务器
pm2 start npm --name "next-dev" -- run dev

# 说明:dev 模式下项目会监听文件变化,但性能和稳定性低于生产环境

三、PM2 常用管理命令

命令作用
pm2 list查看所有运行中的 PM2 进程
pm2 restart next-app重启指定项目(next-app 为进程名)
pm2 stop next-app停止指定项目
pm2 delete next-app删除 PM2 进程记录
pm2 save保存当前进程状态(服务器重启后自动恢复)
pm2 startup配置 PM2 随系统启动

四、注意事项

  1. 端口配置:

    • NextJS 默认运行在 3000 端口,需在服务器防火墙开放该端口或通过 Nginx 反向代理到 80/443 端口。
    • 示例 Nginx 配置:

      server {
          listen 80;
          server_name your-domain.com;
          
          location / {
              proxy_pass http://localhost:3000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
  2. 环境变量:

    • 生产环境需通过 .env.production 文件配置环境变量(如数据库连接、API 地址等),并在 next.config.js 中读取。
  3. 日志查看:

    • PM2 会自动记录项目日志,可通过 pm2 logs next-app 查看实时日志,或到 /var/www/next-project/.pm2/logs 目录查看历史日志。
  4. 性能优化:

    • 建议搭配 Nginx 作为反向代理,处理静态资源请求和负载均衡,减轻 NextJS 服务压力。

五、常见问题解决方案

  1. 进程启动失败:

    • 检查 npm run start 命令是否正确,可先通过 node .next/server.js 直接启动测试。
    • 查看 PM2 日志:pm2 logs next-app --error。
  2. 静态资源 404:

    • 确保 next.config.js 中正确配置了静态资源路径,或通过 Nginx 单独代理静态文件(如 /static/ 目录)。
  3. 内存占用过高:

    • 使用 PM2 集群模式:pm2 start npm --run start -i max(-i max 表示根据 CPU 核心数自动分配进程数)。

通过以上步骤,可在服务器上稳定运行 NextJS 项目,并利用 PM2 实现进程监控、自动重启等功能,提升项目的可靠性和可维护性。

本文著作权归作者 [ 海神与明月 ]享有,未经作者书面授权,禁止以任何目的、任何形式转载,本声明具有法律效力,作者保留法律范围内的一切权利。