Next.js SSR 项目生产部署全攻略

Next.js 是 React 生态中非常流行的前端框架,支持 SSR(Server-Side Rendering)API 路由静态生成 。在开发阶段,Next.js 可以通过 next dev 运行,但在生产环境下,我们需要打包并部署 SSR 服务。本文将介绍完整的 Next.js SSR 生产部署流程,适用于 1Panel 或 VPS 服务器。


一、 本地准备

假设你的 Next.js 项目目录如下:

lua 复制代码
package.json
package-lock.json / yarn.lock
pages/
public/
components/
next.config.js
node_modules/

SSR 项目需要 Node.js 后端支持,因此生产环境必须有 Node.js 环境。


二、安装依赖

如果使用 npm:

bash 复制代码
npm install

如果使用 yarn:

bash 复制代码
yarn install

确保依赖完整,尤其是 nextreactreact-dom


三、 构建生产版本

Next.js 提供 next build 命令生成生产构建产物:

bash 复制代码
npm run build
# 或者
yarn build
  • 会生成 .next/ 目录,包含 SSR 所需文件
  • 构建完成后可以通过 next start 启动生产服务

四、 测试生产环境(可选)

bash 复制代码
npm start
# 或者
yarn start
  • 默认端口 3000
  • 确认 SSR 页面可以正常访问

五、准备上传文件

生产部署至少需要以下内容:

csharp 复制代码
package.json
package-lock.json / yarn.lock
.next/        # SSR 构建产物
public/       # 静态资源
node_modules/ # 可上传,也可服务器安装

可以打包成 ZIP 上传:

bash 复制代码
zip -r next-prod.zip package.json package-lock.json .next public .env

六、上传到服务器 / 1Panel

  • 1Panel:直接上传 ZIP 或 Git 克隆项目
  • VPS / 云服务器 :通过 scp 上传
bash 复制代码
scp next-prod.zip user@yourserver:/path/to/app
ssh user@yourserver
unzip next-prod.zip -d next-app
cd next-app

七、安装生产依赖(如果未上传 node_modules)

bash 复制代码
npm install --production
# 或者
yarn install --production

SSR 生产环境只需要安装 dependencies,不需要 devDependencies


八、配置环境变量

Next.js SSR 项目常用环境变量:

ini 复制代码
NODE_ENV=production
PORT=3000
NEXT_PUBLIC_API_URL=https://api.example.com

可以在服务器环境中设置,也可以使用 .env.production 文件


九、启动生产 SSR 服务

方式一:直接 Node.js

bash 复制代码
npm start
# 或者
yarn start
  • 访问 http://你的域名或公网IP:3000
  • 页面由服务器渲染并返回 HTML(SSR)

方式二:PM2 守护

bash 复制代码
npm install -g pm2
pm2 start npm --name "next-app" -- start
pm2 save
pm2 startup
  • 保证服务器重启后自动启动
  • 提供日志管理和进程监控

方式三:Docker 部署(可选)

Dockerfile 示例

dockerfile 复制代码
FROM node:20-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
RUN npm run build
CMD ["npm", "start"]
EXPOSE 3000

构建 & 运行:

bash 复制代码
docker build -t next-app .
docker run -d -p 3000:3000 next-app

十、 可选:Nginx 反向代理 + HTTPS

nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;

    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;
    }
}
  • 配合 Let's Encrypt 可免费启用 HTTPS
  • 提高安全性与稳定性

十一、完整部署流程总结

  1. 本地 npm install / yarn install
  2. npm run build / yarn build 生成 .next/
  3. 上传 .next/ + public/ + package.json + node_modules(可选)
  4. 服务器安装依赖(如需要)
  5. 配置环境变量
  6. 使用 npm start / PM2 / Docker 启动
  7. 可选 Nginx 反向代理 + HTTPS
  8. 访问页面,确认 SSR 正常渲染

十二、 小技巧

  • 端口管理 :1Panel 默认分配公网端口,确保 PORT 与之匹配
  • 守护进程:PM2 或 Docker 保证 SSR 服务稳定运行
  • 环境变量:生产环境变量一定要配置正确,否则 SSR 可能报错
  • 安全与性能:建议 Nginx 反向代理 + HTTPS

通过以上步骤,你可以快速将 Next.js SSR 项目 打包、上传,并在 1Panel 或 VPS 上运行生产环境,实现服务端渲染。

相关推荐
程序员爱钓鱼2 小时前
使用Git 实现Hugo热更新部署方案(零停机、自动上线)
前端·next.js·trae
颜颜yan_2 小时前
DevUI + Vue 3 入门实战教程:从零构建AI对话应用
前端·vue.js·人工智能
国服第二切图仔3 小时前
DevUI Design中后台产品开源前端解决方案之Carousel 走马灯组件使用指南
前端·开源
无限大63 小时前
为什么浏览器能看懂网页代码?——从HTML到渲染引擎的奇幻之旅
前端
福尔摩斯张3 小时前
Linux信号捕捉特性详解:从基础到高级实践(超详细)
linux·运维·服务器·c语言·前端·驱动开发·microsoft
2401_860319523 小时前
DevUI组件库实战:从入门到企业级应用的深度探索 ,如何快速安装DevUI
前端·前端框架
cc蒲公英3 小时前
javascript有哪些内置对象
java·前端·javascript
zhangwenwu的前端小站4 小时前
vue 对接 Dify 官方 SSE 流式响应
前端·javascript·vue.js
王林不想说话4 小时前
受控/非受控组件分析
前端·react.js·typescript