部署说明
本文档指导您从零开始部署 Think Site Manager 平台。
环境要求
| 软件 | 最低版本 | 用途 |
|---|---|---|
| JDK | 17 | 后端运行环境 |
| Node.js | 18.x+ | 前端构建环境 |
| MySQL | 8.0+ | 数据库 |
| Maven | 3.6+ | 后端构建 |
| pnpm | 8.x+ | 前端包管理器 |
| Nginx | 1.20+ | 反向代理 (可选) |
推荐
建议使用 Linux 服务器部署(CentOS 7+ / Ubuntu 20.04+),以下以 CentOS 为例。
第一步:数据库初始化
1.1 创建数据库
CREATE DATABASE IF NOT EXISTS think_site_management
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;1.2 导入表结构
项目 database/ 目录下包含完整的数据库 dump 文件:
mysql -u root -p think_site_management < database/dump-think_site_management-*.sql1.3 配置数据库连接
编辑 backend/admin/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://<您的数据库IP>:3306/think_site_management?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: <数据库用户名>
password: <数据库密码>第二步:后端部署
2.1 编译打包
cd backend
mvn clean package -DskipTests编译成功后,可执行 JAR 位于:
backend/admin/target/admin-0.0.1-SNAPSHOT.jar2.2 启动服务
# 默认端口 8300,context-path=/api
java -jar admin/target/admin-0.0.1-SNAPSHOT.jar2.3 后台运行(推荐)
nohup java -jar admin/target/admin-0.0.1-SNAPSHOT.jar > app.log 2>&1 &2.4 验证启动
# 检查进程
ps aux | grep admin
# 检查日志
tail -f app.log
# 测试接口
curl http://localhost:8300/api/license/status首次启动
首次启动时 License 处于未激活状态,所有接口会被 LicenseFilter 拦截。需要先完成 License 激活。
第三步:前端部署
3.1 安装依赖
cd frontend
pnpm install3.2 配置 API 代理
编辑 frontend/.umirc.ts,将代理目标指向后端地址:
proxy: {
'/api': {
target: 'http://<后端服务器IP>:8300',
changeOrigin: true,
},
},3.3 构建生产版本
pnpm build构建产物位于 frontend/dist/ 目录。
3.4 Nginx 部署
将 dist/ 目录内容拷贝到 Nginx 静态目录,并配置反向代理:
cp -r frontend/dist/* /usr/share/nginx/html/Nginx 配置示例:
server {
listen 80;
server_name your-domain.com;
# 前端静态资源
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
# API 反向代理到后端
location /api/ {
proxy_pass http://127.0.0.1:8300;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}SPA 路由注意
try_files $uri $uri/ /index.html 是必需的,确保前端 SPA 路由刷新后不会 404。
3.5 重载 Nginx
nginx -t # 检查配置
nginx -s reload # 重载生效第四步:License 生成工具
平台包含一个独立的 License 生成 CLI 工具。
4.1 编译 License 工具
cd backend
mvn clean package -pl license-gen -DskipTests4.2 生成 License 文件
java -jar license-gen/target/license-gen-0.0.1-SNAPSHOT.jar \
--expire 2027-12-31 \
--output license.lic参数说明:
| 参数 | 说明 |
|---|---|
--expire | 过期日期 (yyyy-MM-dd) |
--mac | 绑定 MAC 地址(可选) |
--ip | 绑定 IP 地址(可选) |
--output | 输出文件路径 |
第五步:License 激活
5.1 访问激活页面
部署完成后,访问 http://your-domain.com/activate 进入 License 激活页面。
5.2 上传 License 文件
- 点击上传区域,选择生成的
.lic文件 - 点击「激活」按钮
- 激活成功后自动跳转到登录页
5.3 API 方式激活
curl -X POST http://localhost:8300/api/license/activate \
-F "file=@license.lic"第六步:创建初始账号
6.1 生成邀请码
由于平台注册需要邀请码,您需要先在数据库中手动插入一个邀请码,或通过 API 创建一个管理员账号。
6.2 直接创建管理员(数据库方式)
-- 插入 SYSTEM 管理员(密码需要 BCrypt 加密)
-- 示例密码: admin123
INSERT INTO user (un_code, account, username, password, role, status_flag, create_by, create_time, update_by, update_time, del_flag)
VALUES (
UUID(),
'admin',
'系统管理员',
'$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EHsM8lE9l',
'system',
'ENABLED',
'SYSTEM',
NOW(),
'SYSTEM',
NOW(),
0
);安全提示
请务必在生产环境修改默认密码!BCrypt 密码可通过在线工具或 spring-boot-starter-security 生成。
完整部署架构图
┌──────────────┐
│ Nginx:80 │
└──────┬───────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 前端静态 │ │ /api/* │ │ 文档站点 │
│ dist/ │ │ 反向代理 │ │ (可选) │
└──────────┘ └────┬─────┘ └──────────┘
│
▼
┌─────────────────┐
│ Spring Boot │
│ Port 8300 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ MySQL 8.x │
│ Port 3306 │
└─────────────────┘常见问题排查
启动报错 "LICENSE_INVALID"
License 未激活或已过期,访问
/activate页面上传有效的.lic文件。
数据库连接失败
检查 MySQL 是否启动、端口是否正确、用户名密码是否正确、网络是否可达。
前端页面 404
检查 Nginx 配置中是否包含
try_files $uri $uri/ /index.html。
登录后一直跳转
确认后端
/api/user/login返回的 Token 格式为Bearer xxx,且前端app.tsx中的请求拦截器正确携带了 Token。
部署完成
完成以上所有步骤后,您就可以正常使用 Think Site Manager 了。如需了解更多功能,请阅读 功能介绍。