环境准备

很多国内用户习惯使用宝塔面板来管理 Linux 服务器。要在宝塔上运行 Next.js,我们不能像部署 PHP 网站那样只丢个文件夹进去,我们需要完整的 Node 运行环境。

首先,登录你的宝塔面板,进入“软件商店”。在搜索框中搜索“Node.js 版本管理器”并安装它。

安装完成后打开该插件,选择安装 Node.js 的 v18.x 或以上版本,并将其设置为命令行默认版本。

上传源码与安装依赖

1. 进入“文件”菜单,在 /www/wwwroot/ 目录下新建一个文件夹(例如命名为 my-next-site)。

2. 将你在本地开发好、测试没问题的主题源码(不要包含 node_modules 文件夹和 .next 文件夹)打包成 zip 上传到该目录并解压。

3. 确保目录下的 .env 文件中,数据库连接地址已经改成了服务器上的 MySQL 地址。

4. 在该目录下点击“终端”按钮打开命令行,输入 npm install 安装依赖。接着输入 npx prisma db push 确保数据库表已创建。

5. 输入 npm run build 进行生产环境的代码打包。等待打包成功完成。

使用 PM2 守护进程

打包完成后,我们需要让网站在后台一直运行。在宝塔的软件商店中搜索并安装“PM2 管理器”。

打开 PM2 管理器,点击“添加项目”:

  • 启动文件:选择你项目目录下的 node_modules/next/dist/bin/next 文件。
  • 运行目录:选择你的项目根目录。
  • 参数:填入 start -p 3000(表示以生产模式启动并监听 3000 端口)。
  • 项目名称:随便起个名字,比如 my-next-site。

点击提交,看到项目状态变为绿色的“运行中”,说明服务已经启动成功。

配置 Nginx 反向代理绑定域名

现在网站运行在 3000 端口,我们需要通过 Nginx 让它绑定到你的 80/443 端口域名上。

进入宝塔的“网站”菜单,点击“添加站点”。填入你的域名,PHP 版本选择“纯静态”,点击提交。

点击刚刚创建的站点设置,找到“反向代理”选项卡。添加一个反向代理:

  • 代理名称:随意填写。
  • 目标 URL:填写 http://127.0.0.1:3000

保存后,申请并配置好 SSL 证书。现在,你就可以通过你的域名,使用 HTTPS 安全地访问你的 Next.js 网站了!