本文档涵盖 PC 前端、H5 移动端、后端三部分的构建与部署步骤。 照着复制命令即可执行。
| 依赖 | 版本要求 | 用途 |
|---|---|---|
| JDK | 17+ | 后端编译运行 |
| Maven | 3.9+ | 后端构建 |
| Node.js | 20+ | 前端构建 |
| pnpm | 8+ | 前端包管理 |
| MySQL | 8.0+ | 数据库 |
| Redis | 6.0+ | 缓存 |
| Nginx | 1.25+ | 前端静态资源 + API 反向代理 |
cd D:\java_project\forge-admin\forge-admin-ui
# 安装依赖(首次或依赖变更后执行)
pnpm install
# 启动开发服务器(默认 http://localhost:3000)
pnpm dev
cd D:\java_project\forge-admin\forge-admin-ui
# 生产构建(产物输出到 dist/ 目录)
pnpm build
构建产物: forge-admin-ui/dist/
生产环境配置(.env.production):
| 配置项 | 值 | 含义 |
|---|---|---|
VITE_PUBLIC_PATH |
/forge |
静态资源部署路径 |
VITE_REQUEST_PREFIX |
/forge-api |
API 请求前缀 |
# 1. 将 dist/ 目录上传到服务器
scp -r dist/ root@你的服务器:/usr/share/nginx/html/forge/
# 2. 确认 Nginx 配置中有以下 location(见第五节 Nginx 完整配置)
# location /forge/ { ... }
# location /forge-api/ { ... }
# 3. 重载 Nginx
nginx -s reload
访问地址: http://服务器IP/forge
默认账号: admin / 123456
cd D:\java_project\forge-admin\forge-h5-ui
# 安装依赖(首次或依赖变更后执行)
pnpm install
# 启动开发服务器(默认 http://localhost:3001)
pnpm dev:h5
cd D:\java_project\forge-admin\forge-h5-ui
# H5 生产构建(产物输出到 dist/build/h5/ 目录)
pnpm build:h5
构建产物: forge-h5-ui/dist/build/h5/
产物结构:
dist/build/h5/
├── index.html # 入口文件
├── assets/ # JS/CSS 打包产物
└── static/ # 静态资源
生产环境配置(.env.production):
| 配置项 | 值 | 含义 |
|---|---|---|
VITE_PUBLIC_PATH |
/forge-h5 |
静态资源部署路径 |
VITE_REQUEST_PREFIX |
/forge-h5-api |
API 请求前缀 |
# 1. 将 dist/build/h5/ 目录内容上传到服务器
scp -r dist/build/h5/* root@你的服务器:/usr/share/nginx/forge-h5/
# 2. 确认 Nginx 配置中有以下 location(见第五节 Nginx 完整配置)
# location /forge-h5/ { ... }
# location /forge-h5-api/ { ... }
# 3. 重载 Nginx
nginx -s reload
访问地址: http://服务器IP/forge-h5
注意: H5 移动端连接的是
forge-app-server(端口 8583),不是 admin-server(8580)。 确保服务器上 app-server 已启动。
cd D:\java_project\forge-admin\forge-server
mvn clean package -DskipTests -Pprod
执行完后,4 个 JAR 包分别在这里:
| 服务 | JAR 包路径 | 端口 |
|---|---|---|
| admin 主服务(PC 管理端 API) | forge-admin-server/target/forge-admin-server.jar |
8580 |
| flow 流程服务(工作流) | forge-flow/forge-flow-server/target/forge-flow-server.jar |
8081 |
| app 服务(H5 移动端 API) | forge-app-server/target/forge-app-server.jar |
8583 |
| report 报表服务(数据大屏) | forge-report-server/target/forge-report-server.jar |
8084 |
cd D:\java_project\forge-admin\forge-server
# 只打 admin 主服务(自动编译依赖的 framework、plugin 模块)
mvn clean package -pl forge-admin-server -am -DskipTests -Pprod
# 只打 flow 流程服务
mvn clean package -pl forge-flow/forge-flow-server -am -DskipTests -Pprod
# 只打 app 服务(H5 需要)
mvn clean package -pl forge-app-server -am -DskipTests -Pprod
# 只打 report 报表服务
mvn clean package -pl forge-report-server -am -DskipTests -Pprod
参数说明:
-pl指定要打包的模块-am自动编译该模块依赖的其他模块(framework、plugin 等)-DskipTests跳过单元测试,加快速度-Pprod使用生产环境配置(日志级别 warn 等)
# 启动顺序:flow → admin → app(app 依赖 admin 的认证模块)
# 1. flow 流程服务
cd D:\java_project\forge-admin\forge-server
java -jar forge-flow/forge-flow-server/target/forge-flow-server.jar --spring.profiles.active=dev
# 2. admin 主服务
java -jar forge-admin-server/target/forge-admin-server.jar --spring.profiles.active=dev
# 3. app 服务(H5 移动端需要)
java -jar forge-app-server/target/forge-app-server.jar --spring.profiles.active=dev
# 4. report 报表服务(可选)
java -jar forge-report-server/target/forge-report-server.jar --spring.profiles.active=dev
本地开发用
--spring.profiles.active=dev,服务器部署用--spring.profiles.active=prod
# 1. 把 JAR 包上传到服务器
scp forge-admin-server/target/forge-admin-server.jar root@服务器:/opt/forge/
scp forge-flow/forge-flow-server/target/forge-flow-server.jar root@服务器:/opt/forge/
scp forge-app-server/target/forge-app-server.jar root@服务器:/opt/forge/
# 2. 在服务器上按顺序启动
# 先启动 flow
nohup java -Xms256m -Xmx512m \
-Dspring.profiles.active=prod \
-jar /opt/forge/forge-flow-server.jar \
> /opt/forge/logs/flow.log 2>&1 &
# 再启动 admin
nohup java -Xms256m -Xmx512m \
-Dspring.profiles.active=prod \
-jar /opt/forge/forge-admin-server.jar \
> /opt/forge/logs/admin.log 2>&1 &
# 最后启动 app(H5 需要)
nohup java -Xms256m -Xmx512m \
-Dspring.profiles.active=prod \
-jar /opt/forge/forge-app-server.jar \
> /opt/forge/logs/app.log 2>&1 &
服务器配置文件: 在 jar 同目录放 application-prod.yml,配置数据库和 Redis 连接信息。
将以下内容写入 /etc/nginx/conf.d/forge.conf(或合并到 nginx.conf):
server {
listen 80;
server_name localhost;
# ==================== PC 前端 ====================
location /forge/ {
alias /usr/share/nginx/html/forge/;
index index.html index.htm;
try_files $uri $uri/ /forge/index.html;
}
# ==================== H5 移动端前端 ====================
location /forge-h5/ {
alias /usr/share/nginx/forge-h5/;
index index.html;
try_files $uri $uri/ /forge-h5/index.html;
}
# ==================== H5 API 代理 → app-server:8583 ====================
location /forge-h5-api/ {
proxy_pass http://127.0.0.1:8583/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# ==================== 流程服务 API(路径更长,优先匹配) ====================
location /forge-api/api/flow/ {
proxy_send_timeout 3000;
proxy_read_timeout 3000;
proxy_connect_timeout 3000;
proxy_pass http://127.0.0.1:8081/api/flow/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# ==================== PC API 代理 → admin-server:8580 ====================
location /forge-api/ {
proxy_send_timeout 3000;
proxy_read_timeout 3000;
proxy_connect_timeout 3000;
proxy_pass http://127.0.0.1:8580/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# ==================== 通用配置 ====================
client_max_body_size 20m;
gzip on;
gzip_types text/plain application/json application/javascript text/css;
gzip_min_length 1000;
}
PC 浏览器
http://服务器/forge/ → Nginx → /usr/share/nginx/html/forge/(静态文件)
http://服务器/forge-api/xxx → Nginx → admin-server:8580/xxx
H5 手机浏览器
http://服务器/forge-h5/ → Nginx → /usr/share/nginx/forge-h5/(静态文件)
http://服务器/forge-h5-api/xxx → Nginx → app-server:8583/xxx
流程服务(PC 和 H5 共用)
http://服务器/forge-api/api/flow/xxx → Nginx → flow-server:8081/api/flow/xxx
如果服务器上有 Docker,可以用 docker-compose 一键部署:
cd /mnt/project/forge_admin/docker
# 复制环境变量模板
cp .env.example .env
# 编辑 .env 修改数据库密码等配置
vim .env
# 一键构建并启动(首次约 15-20 分钟)
docker compose up -d --build
# 查看状态
docker compose ps
# 查看日志
docker compose logs -f
注意: 当前 Docker 配置只包含 PC 前端和 admin/flow 服务,H5 前端和 app-server 需要手动添加(见下方扩展说明)。
修改 docker/Dockerfile.ui:
FROM node:20-alpine AS builder
WORKDIR /app
# PC 前端
COPY forge-admin-ui/package.json forge-admin-ui/pnpm-lock.yaml ./pc/
RUN npm install -g pnpm@8 && cd pc && pnpm install
COPY forge-admin-ui/ ./pc/
RUN cd pc && pnpm build
# H5 移动端
COPY forge-h5-ui/package.json forge-h5-ui/pnpm-lock.yaml ./h5/
RUN cd h5 && pnpm install
COPY forge-h5-ui/ ./h5/
RUN cd h5 && pnpm build:h5
FROM nginx:1.25-alpine
COPY --from=builder /app/pc/dist /usr/share/nginx/html/forge
COPY --from=builder /app/h5/dist/build/h5 /usr/share/nginx/html/forge-h5
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
| 操作 | 命令 |
|---|---|
| PC 前端开发 | cd forge-admin-ui && pnpm dev |
| PC 前端构建 | cd forge-admin-ui && pnpm build |
| H5 前端开发 | cd forge-h5-ui && pnpm dev:h5 |
| H5 前端构建 | cd forge-h5-ui && pnpm build:h5 |
| 后端全量构建 | cd forge-server && mvn clean install -DskipTests |
| 后端单独构建 admin | cd forge-server && mvn clean package -pl forge-admin-server -am -DskipTests -Pprod |
| 后端单独构建 flow | cd forge-server && mvn clean package -pl forge-flow/forge-flow-server -am -DskipTests -Pprod |
| 后端单独构建 app | cd forge-server && mvn clean package -pl forge-app-server -am -DskipTests -Pprod |
| 启动 admin 服务 | cd forge-server/forge-admin-server && mvn spring-boot:run |
| 启动 flow 服务 | cd forge-server/forge-flow && mvn spring-boot:run |
| 启动 app 服务 | cd forge-server/forge-app-server && mvn spring-boot:run |
| Docker 一键部署 | cd docker && docker compose up -d --build |
| Nginx 重载配置 | nginx -s reload |
| 检查 Nginx 配置 | nginx -t |
# PC 前端构建时增大 Node 内存
$env:NODE_OPTIONS="--max-old-space-size=4096"
pnpm build
alias 路径是否指向 dist/build/h5/ 目录.env.production 中 VITE_PUBLIC_PATH=/forge-h5 与 Nginx location 一致curl http://127.0.0.1:8580/ 测试)proxy_pass 地址和端口正确/forge-h5-api/ 代理到 127.0.0.1:8583application-dev.yml 或 application-prod.yml 中的数据库配置forge_admin 已创建