一、部署前提
- 服务器已安装 Node.js(推荐 v14+)和 PM2(
npm install -g pm2) - 项目已完成开发并通过本地测试
二、部署步骤
1. 上传项目文件
- 操作:将完整的 NextJS 项目文件上传至服务器指定目录(如
/var/www/next-project)。 - 注意:确保包含
package.json、next.config.js等配置文件及源代码。
2. 生产环境部署(推荐方式)
# 进入项目目录
cd /var/www/next-project
# 安装依赖(首次部署需执行)
npm install
# 构建生产版本(生成 .next 文件夹)
npm run build
# 使用 PM2 启动项目
pm2 start npm --name "next-app" -- run start
# 查看 PM2 进程状态
pm2 status关键说明:
npm run build会在根目录生成.next文件夹,包含优化后的生产代码。pm2 start npm -- run start命令中,--name "next-app"可自定义进程名称,便于管理。
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 随系统启动 |
四、注意事项
端口配置:
- 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; } }
- NextJS 默认运行在
环境变量:
- 生产环境需通过
.env.production文件配置环境变量(如数据库连接、API 地址等),并在next.config.js中读取。
- 生产环境需通过
日志查看:
- PM2 会自动记录项目日志,可通过
pm2 logs next-app查看实时日志,或到/var/www/next-project/.pm2/logs目录查看历史日志。
- PM2 会自动记录项目日志,可通过
性能优化:
- 建议搭配 Nginx 作为反向代理,处理静态资源请求和负载均衡,减轻 NextJS 服务压力。
五、常见问题解决方案
进程启动失败:
- 检查
npm run start命令是否正确,可先通过node .next/server.js直接启动测试。 - 查看 PM2 日志:
pm2 logs next-app --error。
- 检查
静态资源 404:
- 确保
next.config.js中正确配置了静态资源路径,或通过 Nginx 单独代理静态文件(如/static/目录)。
- 确保
内存占用过高:
- 使用 PM2 集群模式:
pm2 start npm --run start -i max(-i max表示根据 CPU 核心数自动分配进程数)。
- 使用 PM2 集群模式:
通过以上步骤,可在服务器上稳定运行 NextJS 项目,并利用 PM2 实现进程监控、自动重启等功能,提升项目的可靠性和可维护性。