422 lines
11 KiB
Markdown
422 lines
11 KiB
Markdown
# 工作日志服务平台 - 部署文档
|
||
|
||
## 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 |
|
||
| wladmin/ | 管理后台前端静态资源 | ~1.6MB |
|
||
| wlmobile/ | 移动端 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)
|