如何在AWS EC2 Amazon Linux后台运行Next.js应用?
解决Next.js静态应用后台运行问题(用pm2)
先确认全局装了pm2,没装的话跑这个命令:
npm install -g pm2
步骤1:创建pm2配置文件
在项目根目录(或者和out文件夹同级的目录)新建ecosystem.config.js文件,内容如下:
module.exports = { apps: [ { name: "next-static-app", // 自定义你的应用名称 script: "npx", args: "serve@latest out -l 3000", // 指定serve版本、静态文件夹和端口,端口可自行修改 env: { NODE_ENV: "production" // 按需添加其他环境变量,多变量直接加键值对即可 }, cwd: "/home/your-user/your-next-project", // 替换成你的项目根目录绝对路径,比如/home/usama/my-next-app autorestart: true, // 进程崩溃自动重启 watch: false, // 静态文件无需监听变化,设为false即可 max_memory_restart: "1G" // 内存占用超过1G时自动重启,按需调整阈值 } ] };
重点:
cwd必须填绝对路径,否则pm2可能找不到out文件夹;如果3000端口被占用,换成其他可用端口即可。
步骤2:启动pm2进程
在配置文件所在目录执行:
pm2 start ecosystem.config.js
步骤3:检查运行状态
执行以下命令确认进程是否正常运行:
pm2 status
如果状态显示为online,说明启动成功,此时退出PuTTY终端进程也会保持后台运行。
步骤4:设置开机自启(可选)
如果需要服务器重启后自动启动应用,先执行:
pm2 startup
跟着终端提示执行生成的命令完成开机自启配置,然后保存当前pm2进程列表:
pm2 save
常见问题排查
- 之前用pm2启动失败的话,先清理旧进程:
pm2 delete next-static-app # 替换成你之前使用的应用名称 - 查看日志排查错误原因:
pm2 logs next-static-app - 若担心路径问题,可直接在
args里写out的绝对路径,比如args: "serve@latest /home/usama/my-next-app/out -l 3000"
内容的提问来源于stack exchange,提问作者Muhammad Usama
相关产品推荐
相关产品推荐

