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

如何在自建Node.js环境运行Next.js?CI部署遇问题求解

Next.js SSR部署VPS的CI流水线问题解答

问题原因分析

你遇到的next start提示缺少.next目录,大概率是两个细节没做好:

  • 部署时遗漏了.next目录:.next是隐藏目录,很多CI工具或传输命令(比如rsync)默认会忽略隐藏文件/目录,导致部署后服务器上没有这个关键目录。
  • 执行next start的工作目录错误:next start必须在包含.next目录的项目根目录下运行,如果你的终端当前路径不是/apps/myapp,就会找不到该目录。

核心疑问解答:是否必须在生产服务器执行next build?

不是必须的!文档里提到的"部署源码并执行build"只是其中一种部署方案,而非唯一标准。两种方案都可行:

  • 方案A(推荐,适合低配VPS):在CI环境完成next build,仅把构建产物和必要文件部署到服务器
  • 方案B:把源码传到服务器,在服务器本地执行next build + next start(适合需要在服务器注入特定环境变量的场景)

修正你的CI流水线步骤

调整后的完整流程应该是:

  1. 代码推送到Git仓库
  2. CI触发next build(确保CI环境的Node.js版本和服务器一致,避免兼容性问题)
  3. 打包并传输以下文件到VPS的/apps/myapp目录:
    • .next/ 整个目录(打包时明确包含隐藏目录,比如用tar -czf build.tar.gz .next package.json package-lock.json public/)
    • package.json 和 package-lock.json(或yarn.lock)
    • public/ 目录(如果项目里有)
  4. 在VPS上执行:
    # 进入项目根目录
    cd /apps/myapp
    # 安装生产依赖(如果没提前传输node_modules)
    npm install --production
    # 启动服务(可指定端口,默认3000)
    next start -p 3000
    

额外优化建议

用pm2管理Next.js进程,避免终端关闭后服务停止:

# 先安装pm2
npm install -g pm2
# 启动服务并命名
pm2 start npm --name "my-next-app" -- start
# 查看进程状态
pm2 status
# 设置开机自启
pm2 startup
pm2 save

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:45:07