如何从.next文件夹部署Next.js应用至AWS Lightsail的Bitnami Node.js服务器
部署Next.js到AWS Lightsail Bitnami Node.js服务器(仅上传.next相关文件)
核心问题解答
你需要复制源文件夹package.json中的dependencies依赖,devDependencies无需包含。原因是:.next目录下的package.json仅用于指定模块类型(commonjs),没有项目依赖信息,Next.js生产环境启动必须依赖dependencies中的包;而devDependencies是构建阶段用到的工具,部署后不需要。
你可以简化源package.json,只保留必要内容,示例如下:
{ "name": "XXXX", "version": "0.1.0", "private": true, "scripts": { "start": "next start" }, "dependencies": { "next": "13.2.3", "react": "18.2.0", "react-dom": "18.2.0", "react-player": "^2.12.0" } }
(注:eslint和eslint-config-next属于开发工具,可从dependencies中移除,生产环境不需要)
具体部署步骤
在服务器创建部署目录
登录Lightsail的Bitnami Node.js服务器,执行命令创建专属目录:mkdir -p /opt/bitnami/apps/nextjs-production上传必要文件到服务器
通过SFTP或SCP工具,将以下本地文件上传到服务器的/opt/bitnami/apps/nextjs-production目录:- 本地项目的
.next文件夹(完整上传) - 简化后的
package.json(如上述示例) - 本地项目的
public文件夹(如果存在,存放静态资源)
- 本地项目的
安装生产依赖
进入部署目录,执行命令安装仅生产环境需要的依赖:cd /opt/bitnami/apps/nextjs-production yarn install --production启动Next.js服务(推荐用PM2守护进程)
直接用yarn start启动会在终端关闭后停止,建议用PM2管理进程:- 安装PM2:
npm install -g pm2 - 启动服务并命名:
pm2 start yarn --name nextjs-app -- start - 设置开机自启:
pm2 startup # 执行终端输出的系统命令,完成开机自启配置 pm2 save
- 安装PM2:
验证服务运行
执行pm2 list查看进程状态,确认nextjs-app处于online状态。此时可通过服务器IP:3000访问应用。(可选)配置反向代理实现域名访问
如果需要用域名访问,可配置Bitnami自带的Nginx反向代理:- 在
/opt/bitnami/nginx/conf/server_blocks/目录下新建nextjs-app.conf文件,内容如下:server { listen 80; server_name your-domain.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; } } - 重启Nginx服务:
sudo /opt/bitnami/ctlscript.sh restart nginx
- 在
内容的提问来源于stack exchange,提问作者Waqas
相关产品推荐
相关产品推荐

