Skip to content

部署说明

本文档指导您从零开始部署 Think Site Manager 平台。


环境要求

软件最低版本用途
JDK17后端运行环境
Node.js18.x+前端构建环境
MySQL8.0+数据库
Maven3.6+后端构建
pnpm8.x+前端包管理器
Nginx1.20+反向代理 (可选)

推荐

建议使用 Linux 服务器部署(CentOS 7+ / Ubuntu 20.04+),以下以 CentOS 为例。


第一步:数据库初始化

1.1 创建数据库

sql
CREATE DATABASE IF NOT EXISTS think_site_management
  DEFAULT CHARACTER SET utf8mb4
  DEFAULT COLLATE utf8mb4_general_ci;

1.2 导入表结构

项目 database/ 目录下包含完整的数据库 dump 文件:

bash
mysql -u root -p think_site_management < database/dump-think_site_management-*.sql

1.3 配置数据库连接

编辑 backend/admin/src/main/resources/application.yml

yaml
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 编译打包

bash
cd backend
mvn clean package -DskipTests

编译成功后,可执行 JAR 位于:

backend/admin/target/admin-0.0.1-SNAPSHOT.jar

2.2 启动服务

bash
# 默认端口 8300,context-path=/api
java -jar admin/target/admin-0.0.1-SNAPSHOT.jar

2.3 后台运行(推荐)

bash
nohup java -jar admin/target/admin-0.0.1-SNAPSHOT.jar > app.log 2>&1 &

2.4 验证启动

bash
# 检查进程
ps aux | grep admin

# 检查日志
tail -f app.log

# 测试接口
curl http://localhost:8300/api/license/status

首次启动

首次启动时 License 处于未激活状态,所有接口会被 LicenseFilter 拦截。需要先完成 License 激活


第三步:前端部署

3.1 安装依赖

bash
cd frontend
pnpm install

3.2 配置 API 代理

编辑 frontend/.umirc.ts,将代理目标指向后端地址:

typescript
proxy: {
  '/api': {
    target: 'http://<后端服务器IP>:8300',
    changeOrigin: true,
  },
},

3.3 构建生产版本

bash
pnpm build

构建产物位于 frontend/dist/ 目录。

3.4 Nginx 部署

dist/ 目录内容拷贝到 Nginx 静态目录,并配置反向代理:

bash
cp -r frontend/dist/* /usr/share/nginx/html/

Nginx 配置示例:

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

bash
nginx -t           # 检查配置
nginx -s reload    # 重载生效

第四步:License 生成工具

平台包含一个独立的 License 生成 CLI 工具。

4.1 编译 License 工具

bash
cd backend
mvn clean package -pl license-gen -DskipTests

4.2 生成 License 文件

bash
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 文件

  1. 点击上传区域,选择生成的 .lic 文件
  2. 点击「激活」按钮
  3. 激活成功后自动跳转到登录页

5.3 API 方式激活

bash
curl -X POST http://localhost:8300/api/license/activate \
  -F "file=@license.lic"

第六步:创建初始账号

6.1 生成邀请码

由于平台注册需要邀请码,您需要先在数据库中手动插入一个邀请码,或通过 API 创建一个管理员账号。

6.2 直接创建管理员(数据库方式)

sql
-- 插入 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 了。如需了解更多功能,请阅读 功能介绍

基于 VitePress 构建