You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用自定义服务器与PM2部署Next.js开发的应用?

Next.js自定义服务器部署规范流程

1. 本地前置验证

  • 本地执行npm run build,确认构建全程无报错
  • 本地执行npm run start,访问127.0.0.1:3000验证生产模式功能完全正常,禁止直接将未本地验证的构建产物上传到服务器

2. 服务器环境准备

  • 确认Debian服务器Node.js版本和本地开发环境一致,Next.js 11要求Node.js版本≥12.22.0,不建议直接用Debian默认源安装的Node版本,推荐通过nvm安装匹配版本
  • 建议创建普通用户运行Node服务,避免直接用root操作产生的权限异常问题

3. 服务端项目配置

  • 将本地项目代码(排除node_modules、.next文件夹)上传到服务器指定目录
  • 服务器端执行npm install --production,仅安装生产依赖,减少冗余依赖带来的兼容风险
  • 服务器端执行npm run build生成对应环境的构建产物,不要直接上传本地构建的.next文件夹,不同操作系统的构建产物无法通用

4. 进程持久化配置

  • 不要直接通过SSH前台启动服务,断开SSH连接后服务会自动终止,推荐使用PM2做进程管理:
    • 全局安装PM2:npm install pm2 -g
    • 启动Next.js服务:pm2 start npm --name "next-app" -- run start
    • 保存当前PM2进程列表:pm2 save
    • 配置开机自动启动:pm2 startup

5. 访问配置

  • 确认服务器安全组、防火墙开放3000端口,Debian系统可执行ufw allow 3000开放端口
  • 如需绑定域名,可配置Nginx反向代理,将80/443端口的请求转发到127.0.0.1:3000即可

现有配置的问题排查点

  • package.json存在语法错误:scripts字段闭合的大括号后缺少逗号,会导致JSON解析失败,若你本地配置正常,大概率是上传到服务器的配置未同步修复
  • 部分Linux系统默认不支持NODE_ENV=production的变量赋值写法,可安装cross-env兼容:执行npm install cross-env --production,再将package.json中start脚本修改为"start": "cross-env NODE_ENV=production node server.js"
  • server.js默认监听127.0.0.1,如需外网直接访问,可将listen部分修改为.listen(3000, '0.0.0.0', (err) => {,允许所有IP访问服务

内容的提问来源于stack exchange,提问作者maifs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:09:00