chore: 清空 deploy 目录并添加到 .gitignore

deploy 目录用于存放部署打包文件,不纳入版本控制
This commit is contained in:
zhangjf 2026-02-24 19:00:57 +08:00
parent c2a12a3625
commit 3161cbb429
3 changed files with 2 additions and 562 deletions

7
.gitignore vendored
View File

@ -47,11 +47,8 @@ logs/
*.sql.backup
db_backup/
# ==================== Assembly 打包输出 ====================
deploy/worklog-api/
deploy/worklog-api.tar.gz
deploy/worklog-web/
deploy/worklog-mobile/
# ==================== 部署打包输出 ====================
deploy/
# ==================== 上传文件 ====================
uploads/

View File

@ -1,411 +0,0 @@
# 工作日志服务平台 - 部署指南
## 目录说明
```
deploy/
├── nginx/
│ └── worklog.conf # Nginx 配置文件
└── scripts/
├── backup.sh # 数据库备份脚本
├── start.sh # 应用启动脚本
├── stop.sh # 应用停止脚本
└── restart.sh # 应用重启脚本
```
## 一、服务器环境准备
### 1.1 系统要求
- 操作系统: Linux (Ubuntu 20.04+ / CentOS 7+)
- JDK: 21+
- MySQL: 8.0+
- Redis: 7.x
- Nginx: 1.18+
### 1.2 创建部署目录
```bash
# 创建应用目录
sudo mkdir -p /opt/worklog/worklog-api
sudo mkdir -p /opt/worklog/worklog-admin
sudo mkdir -p /opt/worklog/worklog-mobile
# 创建备份目录
sudo mkdir -p /backup/mysql
# 设置权限
sudo chown -R $USER:$USER /opt/worklog
sudo chown -R $USER:$USER /backup/mysql
```
## 二、应用部署
### 2.1 部署后端应用
1. **编译打包**
```bash
cd worklog-api
mvn clean package -DskipTests
```
2. **上传 JAR 文件**
```bash
scp target/worklog-api-1.0.0.jar user@server:/opt/worklog/worklog-api/
```
3. **上传部署脚本**
```bash
scp -r deploy/scripts user@server:/opt/worklog/worklog-api/
```
4. **配置 application.yml**
```bash
# 在服务器上创建配置文件
cd /opt/worklog/worklog-api
vi application.yml
# 复制 application.yml.example 内容并修改为生产环境配置
# 重点修改:
# - 数据库连接信息
# - Redis 连接信息
# - 日志路径
# - 文件上传路径
```
5. **启动应用**
```bash
cd /opt/worklog/worklog-api
./scripts/start.sh
```
6. **查看日志**
```bash
tail -f /opt/worklog/worklog-api/logs/console.log
tail -f /opt/worklog/worklog-api/logs/app.log
```
### 2.2 应用管理命令
```bash
# 启动应用
./scripts/start.sh
# 停止应用
./scripts/stop.sh
# 重启应用
./scripts/restart.sh
# 查看运行状态
ps aux | grep worklog-api
```
## 三、Nginx 配置
### 3.1 安装 Nginx
```bash
# Ubuntu
sudo apt update
sudo apt install nginx
# CentOS
sudo yum install nginx
```
### 3.2 配置 Nginx
1. **复制配置文件**
```bash
sudo cp deploy/nginx/worklog.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/worklog.conf /etc/nginx/sites-enabled/
```
2. **修改配置**
编辑 `/etc/nginx/sites-available/worklog.conf`,修改以下内容:
- `server_name`: 修改为实际域名
- 静态文件路径: 根据实际部署路径修改
3. **测试配置**
```bash
sudo nginx -t
```
4. **重启 Nginx**
```bash
sudo systemctl restart nginx
sudo systemctl enable nginx # 开机自启
```
### 3.3 HTTPS 配置(推荐)
1. **申请 SSL 证书**(使用 Let's Encrypt 免费证书)
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d worklog.example.com
```
2. **自动续期**
```bash
sudo certbot renew --dry-run
```
## 四、数据库备份
### 4.1 配置备份脚本
1. **修改配置**
编辑 `scripts/backup.sh`,确认以下配置:
- 数据库连接信息
- 备份目录路径
- 保留策略
2. **测试备份**
```bash
cd /opt/worklog/worklog-api
./scripts/backup.sh full
```
### 4.2 配置定时备份
```bash
# 编辑 crontab
crontab -e
# 添加以下内容:
# 每日凌晨 2:00 全量备份
0 2 * * * /opt/worklog/worklog-api/scripts/backup.sh full
# 每周日凌晨 1:00 全量备份(保留更久)
0 1 * * 0 /opt/worklog/worklog-api/scripts/backup.sh full
```
### 4.3 恢复数据库
```bash
./scripts/backup.sh restore /backup/mysql/worklog/full/full_20260224_020000.sql.gz
```
## 五、监控与日志
### 5.1 日志文件位置
```
/opt/worklog/worklog-api/logs/
├── console.log # 控制台输出
├── app.log # 应用日志
├── sql.log # SQL 日志
└── gc.log # GC 日志
```
### 5.2 查看日志
```bash
# 实时查看应用日志
tail -f /opt/worklog/worklog-api/logs/app.log
# 查看 SQL 日志
tail -f /opt/worklog/worklog-api/logs/sql.log
# 查看错误日志
grep ERROR /opt/worklog/worklog-api/logs/app.log
# 查看最近 100 行
tail -n 100 /opt/worklog/worklog-api/logs/app.log
```
### 5.3 日志清理
```bash
# 清理 7 天前的日志
find /opt/worklog/worklog-api/logs -name "*.log" -mtime +7 -delete
```
建议配置 logrotate 自动清理日志。
## 六、性能优化
### 6.1 JVM 参数调优
编辑 `scripts/start.sh` 中的 `JVM_OPTS`
```bash
# 根据服务器内存调整堆大小
JVM_OPTS="-Xms1g -Xmx2g"
# 使用 G1 垃圾回收器
JVM_OPTS="${JVM_OPTS} -XX:+UseG1GC"
# GC 日志
JVM_OPTS="${JVM_OPTS} -Xloggc:${APP_HOME}/logs/gc.log"
```
### 6.2 数据库优化
1. 配置连接池参数application.yml
2. 添加合适的索引
3. 定期分析慢查询日志
### 6.3 Redis 优化
1. 配置持久化策略
2. 设置最大内存限制
3. 配置淘汰策略
## 七、故障排查
### 7.1 应用无法启动
1. 检查 JDK 版本: `java -version`
2. 检查端口占用: `netstat -tuln | grep 8080`
3. 查看启动日志: `tail -f logs/console.log`
4. 检查配置文件: `cat application.yml`
### 7.2 数据库连接失败
1. 检查 MySQL 服务: `systemctl status mysql`
2. 检查防火墙: `sudo ufw status`
3. 测试连接: `mysql -h localhost -u worklog -p`
4. 检查数据库用户权限
### 7.3 Redis 连接失败
1. 检查 Redis 服务: `systemctl status redis`
2. 测试连接: `redis-cli -h localhost -p 6379 -a password`
3. 检查配置文件: `/etc/redis/redis.conf`
### 7.4 Nginx 502 错误
1. 检查后端应用是否运行: `ps aux | grep worklog`
2. 检查端口: `netstat -tuln | grep 8080`
3. 查看 Nginx 错误日志: `tail -f /var/log/nginx/error.log`
## 八、安全加固
### 8.1 防火墙配置
```bash
# 只开放必要端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 22/tcp # SSH
sudo ufw enable
```
### 8.2 修改默认密码
1. MySQL root 密码
2. Redis 密码
3. 应用数据库用户密码
4. 管理员默认账号密码
### 8.3 限制 Swagger 访问
在生产环境建议:
1. 关闭 Swagger: `springdoc.swagger-ui.enabled=false`
2. 或通过 Nginx 限制内网访问
## 九、升级部署
### 9.1 升级步骤
1. 备份数据库
```bash
./scripts/backup.sh full
```
2. 停止应用
```bash
./scripts/stop.sh
```
3. 备份当前版本
```bash
cp worklog-api-1.0.0.jar worklog-api-1.0.0.jar.bak
```
4. 上传新版本
```bash
scp target/worklog-api-1.1.0.jar user@server:/opt/worklog/worklog-api/
```
5. 启动应用
```bash
# 修改 start.sh 中的 JAR 文件名
vi scripts/start.sh
./scripts/start.sh
```
6. 验证升级
```bash
# 检查健康状态
curl http://localhost:8080/api/v1/health
# 查看日志
tail -f logs/app.log
```
### 9.2 回滚方案
如果升级失败,执行回滚:
```bash
./scripts/stop.sh
cp worklog-api-1.0.0.jar.bak worklog-api-1.0.0.jar
./scripts/start.sh
```
## 十、常用命令速查
```bash
# 应用管理
./scripts/start.sh # 启动
./scripts/stop.sh # 停止
./scripts/restart.sh # 重启
# 数据库备份
./scripts/backup.sh full # 全量备份
./scripts/backup.sh restore <file> # 恢复
# 日志查看
tail -f logs/app.log # 应用日志
tail -f logs/sql.log # SQL 日志
grep ERROR logs/app.log # 错误日志
# Nginx
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 重启
sudo systemctl status nginx # 状态
# 系统状态
ps aux | grep worklog # 进程状态
netstat -tuln | grep 8080 # 端口监听
df -h # 磁盘空间
free -h # 内存使用
top # 系统负载
```
## 联系方式
如有问题,请联系运维团队。

View File

@ -1,146 +0,0 @@
# ====================================================
# 工作日志服务平台 - Nginx 配置
# ====================================================
# 说明:
# 1. 此配置用于生产环境部署
# 2. 需根据实际域名和路径修改配置
# 3. 建议启用 HTTPS本配置为 HTTP 示例)
# ====================================================
server {
listen 80;
server_name worklog.example.com; # 修改为实际域名
# 字符集
charset utf-8;
# 访问日志
access_log /var/log/nginx/worklog_access.log;
error_log /var/log/nginx/worklog_error.log;
# Gzip 压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;
# 管理后台前端静态资源
location /admin/ {
alias /opt/worklog/worklog-web/dist/;
try_files $uri $uri/ /admin/index.html;
index index.html;
# 静态资源缓存
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
# 移动端 H5 前端静态资源
location /mobile/ {
alias /opt/worklog/worklog-mobile/dist/;
try_files $uri $uri/ /mobile/index.html;
index index.html;
# 静态资源缓存
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
# 管理后台 API 代理 (/wladmin/api/v1 → /wlog/api/v1)
location /wladmin/api/ {
proxy_pass http://127.0.0.1:8200/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;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# 缓冲设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
}
# 移动端 API 代理 (/wlmobile/api/v1 → /wlog/api/v1)
location /wlmobile/api/ {
proxy_pass http://127.0.0.1:8200/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;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# 缓冲设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
}
# Swagger API 文档(生产环境建议关闭或限制访问)
location /wlog/swagger-ui.html {
proxy_pass http://127.0.0.1:8200;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 限制访问(可选)
# allow 192.168.1.0/24; # 只允许内网访问
# deny all;
}
# 健康检查接口
location /wlog/api/v1/health {
proxy_pass http://127.0.0.1:8200;
proxy_set_header Host $host;
access_log off; # 健康检查不记录日志
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
# HTTPS 配置示例(需要 SSL 证书)
# server {
# listen 443 ssl http2;
# server_name worklog.example.com;
#
# # SSL 证书配置
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/cert.key;
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 10m;
#
# # 其他配置同上...
# }
#
# # HTTP 重定向到 HTTPS
# server {
# listen 80;
# server_name worklog.example.com;
# return 301 https://$server_name$request_uri;
# }