云服务器 ECS 部署next项目
环境要求
操作系统: Alibaba Cloud Linux 3.2104 LTS 64位
web服务器: Nginx
应用容器: Docker
前置准备
1.安装git
- 执行
yum install git -y安装 git。

- 执行
git --version查看 git 版本。

2.安装Node.js
- 克隆 nvm 源码:使用国内的 Gitee 镜像,将 nvm 克隆到 ~/.nvm 目录,并检出最新版本
1 | |

- 依次运行以下命令,配置NVM的环境变量。
1 | |

-
使用 NVM 安装 Node.js
执行nvm install --lts安装最新 LTS 版本的 Node.js。

-
查看 Node/NPM 版本
执行node --version & npm --version查看 Node.js 版本。

3.PM2 安装
-
执行
npm install pm2 -g安装 PM2。用 -g 装到全局,这样在服务器任何目录下都能直接用 pm2 命令。

-
执行
pm2 --version查看 PM2 安装结果。

部署next项目
-
复制next项目代码到云服务器, 如
/var/next目录(需自行创建目录) -
进入项目目录,使用
npm install安装依赖

-
如果项目不是部署在根目录,需要添加
bashPath参数。
1 | |
-
使用
npm run build打包项目

-
使用
pm2 start npm --name 'my-next-app' -- start启动项目
这个命令的意思是:以 npm 作为脚本入口,把--name后面的名字作为应用名,并将 start 作为参数传给 npm 来执行 。如果你想指定端口,可以写成pm2 start npm --name "my-next-app" -- start -- -p 8080。

-
执行
pm2 logs my-next-app或curl http://localhost:3000查看项目状态,确认项目是否启动成功。如果curl命令返回 HTML 内容,说明 Next.js 已经在监听并正常响应。

-
执行
pm2 save & pm2 startup
pm2 save会把当前管理的所有进程信息存到 ~/.pm2/dump.pm2,不保存的话,服务器一重启,PM2 管理的进程就全没了.
pm2 startup会把 PM2 注册成系统服务,开机时自动执行 pm2 resurrect 恢复之前保存的进程。

配置Nginx
- 假设 Next.js 跑在
localhost:3000/next,修改 Nginx 配置文件,添加以下内容:
1 | |
- 重启 Nginx 服务
执行nginx -s reload重启 Nginx 服务。