6.7 KiB
部署指南 (Deployment Guide)
本指南将指导您将应用部署到已安装 iPanel/宝塔面板 和 Node.js 环境的 Linux 服务器上。
1. 准备工作
启用 Standalone 模式 (已自动配置)
为了减小服务器上的文件体积,我们已经在 next.config.ts 中启用了 output: 'standalone' 模式。这会创建一个包含所有必要依赖的精简构建包。
检查环境
确保您的服务器已安装:
- Node.js: 版本需 >= 18.0.0 (推荐 v20 LTS)
- Nginx: 用于反向代理
- PM2: 用于进程守护 (通常面板可以一键安装,或通过
npm install -g pm2安装) - Database: 您的代码目前使用 SQLite (本地文件),部署非常简单。
2. 构建项目
在本地电脑上执行构建命令:
# 1. 安装依赖 (仅当添加了新包时需要)
npm install
# 2. 生成 Prisma 客户端 (仅当修改了数据库结构时需要)
npx prisma generate
# 3. 构建项目
npm run build
构建完成后,您会看到一个 .next 文件夹。
3. 打包发布 (推荐方式)
我们已经将繁琐的文件复制步骤自动化了。请按照以下“标准流程”进行部署:
3.1 本地构建 & 打包
-
构建:
npm run build -
打包 (运行自动化脚本): 在 PowerShell 中执行:
./scripts/build-dockerapp.ps1这个脚本会自动将
standalone,static,public,prisma,docker-compose.yml等所有必要文件整理到项目根目录下的dockerapp文件夹中。
3.2 上传 & 部署
-
上传: 将整个
dockerapp文件夹上传到服务器(例如/www/wwwroot/wojide/dockerapp)。 -
启动: 进入服务器上的该目录,运行 Docker Compose:
cd dockerapp docker-compose up -d --build
此方式会自动使用包内的 Dockerfile 和 docker-compose.yml 构建并启动服务,无需再手动配置 Nginx 或 PM2(Docker 会处理端口映射,通常映射到 3001 或您配置的端口)。
目录结构说明 (dockerapp 文件夹内):
dockerapp/
├── .next/ <-- 包含 static 和 standalone/server
├── node_modules/ <-- 最小化依赖
├── public/ <-- 静态资源
├── prisma/ <-- 数据库结构
├── Dockerfile <-- 构建脚本
├── docker-compose.yml <-- 编排脚本
└── ...
4. 1Panel 面板配置指南 (图形化界面)
根据您提供的 1Panel 创建运行环境截图,请按以下方式填写:
- 名称:
wojide(或任意您喜欢的名字) - 应用:
Node.js(版本保持默认或选择 LTS 版本) - 项目目录: 选择您在第 3 步上传文件的目录 (例如
/www/wwwroot/wojide) - 启动命令:
- 开启 [自定义启动命令] 开关 (非常重要!)
- 输入命令:
node server.js - 解释: Standalone 模式下直接运行 server.js 即可,不需要 npm run start。
- 包管理器:
npm - 端口: 如果有端口设置,请输入
3000
点击确认创建后,容器会自动启动。
5. 服务器端配置 (数据库迁移)
登录服务器终端 (SSH) 或使用面板的终端功能。
5.1 数据库迁移
进入网站目录并运行迁移,确保 dev.db 存在:
### 5.1 数据库迁移
进入网站目录并运行迁移,确保 `dev.db` 存在:
**情况 A: 直接安装的 Node 环境 (宝塔默认)**
```bash
cd /www/wwwroot/wojide
npx prisma migrate deploy
情况 B: Docker 部署 (1Panel / 容器化)
即使文件在宿主机上,Docker 容器也能通过“挂载”访问它们。您只需进入容器并找到那个挂载目录。
-
确定容器: 在 1Panel 找到您的应用容器 ID。
-
进入容器并运行:
# 1. 登录容器 docker exec -it <container_id> sh # 2. 寻找项目目录 (关键步骤!) # 在 1Panel 中,网站目录通常也会挂载到容器内的相同路径,或者 /app 目录。 # 尝试进入: cd /www/wwwroot/wojide # 或者 ls /app 看看是否有文件 # 3. 确认你在正确的目录下 (应该能看到 prisma 文件夹) ls # 4. 运行迁移 (更稳妥的方式: 先全局安装指定版本) # 先安装 CLI 工具 npm install -g prisma@5.10.2 # 然后运行迁移 prisma migrate deploy # 5. 退出 exit
### 5.2 启动服务
使用 PM2 启动项目:
```bash
# 启动
pm2 start server.js --name "wojide-app"
# 查看状态
pm2 status
# 如果报错,查看日志
pm2 logs wojide-app
此时,项目应该运行在 http://localhost:3000。
6. 初始化配置 (重要!)
首次部署后,数据库是空的,还没有设置密码。
您需要手动调用一次初始化接口来创建默认密码 (admin)。
方法 A: 使用 Curl (在服务器终端)
curl -X POST http://localhost:3000/api/settings/init
如果成功,会返回 Initialized default settings。
方法 B: 使用浏览器控制台
如果不方便用 Curl,可以在您的电脑浏览器打开网站登录页,按 F12 打开控制台,输入以下代码并回车:
fetch('/api/settings/init', { method: 'POST' }).then(r=>r.json()).then(console.log)
初始化成功后,您可以使用默认密码 admin 登录。
7. 配置 Nginx 反向代理 (通过面板)
在面板中找到您的网站设置 -> 反向代理 (Reverse Proxy)。
- 代理名称: NextJS
- 目标 URL:
http://127.0.0.1:3000 - 发送域名:
$host
保存后,您应该可以通过域名访问您的网站了。
8. 后续更新 (代码修改后)
当您修改了代码并想要更新服务器版本时:
- 本地构建: 运行
npm run build。 - 上传覆盖:
- 上传
.next/standalone中的内容覆盖服务器对应文件。 - 上传
.next/static覆盖服务器上的.next/static。
- 上传
- 重启服务:
- 在 1Panel 容器列表中,点击该容器的 “重启” 按钮。
注意: 如果您修改了数据库结构 (schema.prisma),请在重启前参考第 5.1 步进入容器运行 npx prisma migrate deploy。
常见问题
-
样式丢失? 请检查步骤 3/4,确保
.next/static文件夹已正确上传到服务器的.next/static路径。Standalone 模式默认不包含静态资源,需要手动复制。 -
数据库报错? 确保
.env文件中的DATABASE_URL路径正确。对于 SQLite,建议使用绝对路径,例如file:/www/wwwroot/your-website/prisma/dev.db。 -
权限问题? 确保网站目录的所有者是运行 Nginx/Node 的用户 (通常是
www或root,视配置而定)。