worklog/doc/部署文档.md
zhangjf bf87b72e03 refactor: 统一前端部署目录命名
- 管理后台目录: wladmin
- 移动端目录: wlmobile
- 同步更新部署文档和打包脚本
2026-02-24 19:20:42 +08:00

422 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 工作日志服务平台 - 部署文档
## 1. 部署概述
### 1.1 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ Nginx (80/443) │
├──────────────────┬──────────────────┬───────────────────────┤
│ /wladmin/* │ /wlmobile/* │ /wlog/api/* │
│ 管理后台 │ 移动端H5 │ 后端API │
└──────────────────┴──────────────────┴───────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ worklog-api (端口 8200) │
├─────────────────────────────────────────────────────────────┤
│ Spring Boot 3.2 + MyBatis-Plus + Redis │
└─────────────────────────────────────────────────────────────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│ MySQL │ │ Redis │ │ Nacos │
│ 3306 │ │ 6379 │ │ 8848 │
└────────┘ └────────┘ └────────┘
```
### 1.2 部署产物
| 产物 | 说明 | 大小 |
|------|------|------|
| worklog-api.tar.gz | 后端 API 服务 | ~45MB |
| worklog-web/ | 管理后台前端静态资源 | ~1.6MB |
| worklog-mobile/ | 移动端 H5 静态资源 | ~632KB |
### 1.3 目录结构
部署后的目录结构:
```text
/opt/worklog/worklog-api/ # 后端应用目录
├── bin/ # 脚本目录
│ ├── start.sh # 启动脚本
│ ├── stop.sh # 停止脚本
│ ├── restart.sh # 重启脚本
│ └── status.sh # 状态查看脚本
├── lib/ # JAR 包目录
│ ├── worklog-api-1.0.0.jar # 应用 JAR (瘦包)
│ └── *.jar # 依赖 JAR
└── conf/ # 配置文件目录
├── application.yml # 主配置
├── logback-spring.xml # 日志配置
├── env.properties # 环境配置
└── service.properties # 服务配置
/var/www/worklog/ # 前端静态资源目录
├── wladmin/ # 管理后台
└── wlmobile/ # 移动端 H5
/datacfs/applogs/worklog-api/ # 日志目录
├── app.log # 应用主日志
├── sql.log # SQL 日志
├── stdout.log # 控制台输出
├── gc.log # GC 日志
└── heapdump.hprof # 内存溢出快照(异常时生成)
```
## 2. 环境要求
### 2.1 基础环境
| 组件 | 版本要求 | 说明 |
|------|----------|------|
| JDK | 21+ | Java 运行环境 |
| MySQL | 8.0+ | 数据库 |
| Redis | 6.0+ | 缓存服务 |
| Nginx | 1.20+ | Web 服务器 |
| Nacos | 2.0+ | 注册/配置中心(可选) |
### 2.2 系统配置
```bash
# 文件描述符限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 创建部署目录
mkdir -p /opt/worklog/worklog-api
mkdir -p /var/www/worklog/wladmin
mkdir -p /var/www/worklog/wlmobile
mkdir -p /datacfs/applogs/worklog-api
```
## 3. 打包构建
### 3.1 全量打包
```bash
cd /path/to/worklog
./scripts/build-all.sh
```
打包产物输出到 `deploy/` 目录。
### 3.2 单独打包
```bash
# 后端 API
cd worklog-api
mvn clean package -DskipTests
# 管理后台前端
./scripts/build-web.sh
# 移动端 H5
./scripts/build-mobile.sh
```
## 4. 部署步骤
### 4.1 部署后端服务
```bash
# 1. 上传并解压
scp deploy/worklog-api.tar.gz user@server:/opt/worklog/
ssh user@server
cd /opt/worklog
tar -xzf worklog-api.tar.gz
# 2. 修改配置
cd worklog-api/conf
vi env.properties # 修改数据库、Redis 等配置
# 3. 启动服务
cd ../bin
./start.sh
# 4. 检查状态
./status.sh
```
### 4.2 部署前端资源
```bash
# 管理后台
scp -r deploy/worklog-web/* user@server:/var/www/worklog/wladmin/
# 移动端 H5
scp -r deploy/worklog-mobile/* user@server:/var/www/worklog/wlmobile/
```
### 4.3 配置 Nginx
```nginx
# /etc/nginx/conf.d/worklog.conf
upstream worklog-api {
server 127.0.0.1:8200;
}
server {
listen 80;
server_name worklog.example.com;
# 管理后台
location /wladmin {
alias /var/www/worklog/wladmin;
index index.html;
try_files $uri $uri/ /wladmin/index.html;
}
# 移动端 H5
location /wlmobile {
alias /var/www/worklog/wlmobile;
index index.html;
try_files $uri $uri/ /wlmobile/index.html;
}
# 后端 API - 管理后台
location /wladmin/api/ {
proxy_pass http://worklog-api/wlog/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 后端 API - 移动端
location /wlmobile/api/ {
proxy_pass http://worklog-api/wlog/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Swagger API 文档
location /wlog {
proxy_pass http://worklog-api/wlog;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
```bash
# 测试配置
nginx -t
# 重载配置
nginx -s reload
```
## 5. 配置说明
### 5.1 环境配置 (env.properties)
```properties
# ==================== 数据库配置 ====================
DB_HOST=localhost
DB_PORT=3306
DB_NAME=worklog
DB_USERNAME=worklog
DB_PASSWORD=Wlog@123
# ==================== Redis 配置 ====================
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
REDIS_DATABASE=0
# ==================== 日志配置 ====================
LOG_PATH=/datacfs/applogs/worklog-api
LOG_LEVEL_ROOT=INFO
LOG_LEVEL_APP=DEBUG
# ==================== JVM 配置 ====================
JVM_XMS=512m
JVM_XMX=1024m
JVM_METASPACE_SIZE=128m
JVM_MAX_METASPACE_SIZE=256m
JVM_GC_TYPE=G1GC
# ==================== 腾讯云 COS可选====================
COS_ENABLED=false
COS_APP_ID=your-app-id
COS_SECRET_ID=your-secret-id
COS_SECRET_KEY=your-secret-key
COS_BUCKET_NAME=your-bucket
COS_REGION=ap-beijing
```
### 5.2 服务配置 (service.properties)
```properties
# 服务名称
APP_NAME=worklog-api
# 主启动类
MAIN_CLASS=com.wjbl.worklog.WorklogApplication
```
### 5.3 主配置 (application.yml)
主要配置项说明:
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| server.port | 8200 | 服务端口 |
| server.servlet.context-path | /wlog | API 根路径 |
## 6. 启停脚本
### 6.1 启动服务
```bash
./bin/start.sh
```
### 6.2 停止服务
```bash
./bin/stop.sh
```
### 6.3 重启服务
```bash
./bin/restart.sh
```
### 6.4 查看状态
```bash
./bin/status.sh
```
输出示例:
```
========================================
应用状态: 运行中
PID: 12345
启动时间: 2024-01-01 10:00:00
运行时长: 2小时30分钟
CPU 占用: 5.2%
内存占用: 512MB
端口监听: 8200
========================================
最近日志:
[2024-01-01 12:30:00] INFO - 应用运行正常
```
## 7. 日志说明
### 7.1 日志文件
| 文件 | 说明 |
|------|------|
| app.log | 应用主日志,包含所有级别日志 |
| sql.log | MyBatis-Plus SQL 日志 |
| stdout.log | 控制台标准输出 |
| gc.log | JVM GC 日志 |
| heapdump.hprof | 内存溢出快照(异常时生成) |
### 7.2 日志格式
所有日志包含链路追踪字段:
```
2024-01-01 12:00:00.000 [http-nio-8200-exec-1] [abc123][def456] INFO c.w.c.UserController - 用户登录成功
```
- `abc123`: traceId链路追踪ID
- `def456`: spanId跨度ID
### 7.3 日志查看
```bash
# 实时查看应用日志
tail -f /datacfs/applogs/worklog-api/app.log
# 查看 SQL 日志
tail -f /datacfs/applogs/worklog-api/sql.log
# 查看启动日志
tail -f /datacfs/applogs/worklog-api/stdout.log
# 按链路追踪
grep "abc123" /datacfs/applogs/worklog-api/app.log
```
## 8. 健康检查
### 8.1 服务健康检查
```bash
# API 健康检查
curl http://localhost:8200/wlog/api/v1/health
# Swagger 文档
curl http://localhost:8200/wlog/swagger-ui.html
```
### 8.2 数据库连接检查
```bash
mysql -h localhost -u worklog -p'Wlog@123' -e "SELECT 1"
```
### 8.3 Redis 连接检查
```bash
redis-cli -h localhost -p 6379 -a 'zjf@123456' ping
```
## 9. 常见问题
### 9.1 服务启动失败
1. 检查日志文件 `stdout.log`
2. 检查配置文件是否正确
3. 检查端口是否被占用:`netstat -tlnp | grep 8200`
4. 检查数据库连接是否正常
### 9.2 内存溢出
1. 查看堆内存快照:`/datacfs/applogs/worklog-api/heapdump.hprof`
2. 调整 JVM 参数:修改 `env.properties` 中的 `JVM_XMX`
### 9.3 数据库连接失败
1. 检查数据库服务是否启动
2. 检查用户名密码是否正确
3. 检查数据库是否授权远程访问
## 10. 附录
### 10.1 默认账号
| 系统 | 用户名 | 密码 |
|------|--------|------|
| 管理后台 | admin | admin123 |
### 10.2 端口列表
| 服务 | 端口 | 说明 |
|------|------|------|
| worklog-api | 8200 | 后端 API |
| MySQL | 3306 | 数据库 |
| Redis | 6379 | 缓存 |
| Nacos | 8848 | 注册/配置中心 |
| Nginx | 80/443 | Web 服务器 |
### 10.3 相关文档
- [产品需求文档 PRD](./产品需求文档PRD.md)
- [需求规格说明书 SRS](./需求规格说明书SRS.md)
- [架构设计文档](./架构设计文档.md)
- [后端模块详细设计文档](./后端模块详细设计文档.md)
- [前端详细设计文档](./前端详细设计文档.md)