From 3161cbb4291cda90339aceb71512d20ba6c17faa Mon Sep 17 00:00:00 2001 From: zhangjf Date: Tue, 24 Feb 2026 19:00:57 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B8=85=E7=A9=BA=20deploy=20?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=88=B0=20.gitig?= =?UTF-8?q?nore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy 目录用于存放部署打包文件,不纳入版本控制 --- .gitignore | 7 +- deploy/DEPLOY.md | 411 -------------------------------------- deploy/nginx/worklog.conf | 146 -------------- 3 files changed, 2 insertions(+), 562 deletions(-) delete mode 100644 deploy/DEPLOY.md delete mode 100644 deploy/nginx/worklog.conf diff --git a/.gitignore b/.gitignore index fed4971..14599e2 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/deploy/DEPLOY.md b/deploy/DEPLOY.md deleted file mode 100644 index c4b878b..0000000 --- a/deploy/DEPLOY.md +++ /dev/null @@ -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 # 恢复 - -# 日志查看 -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 # 系统负载 -``` - -## 联系方式 - -如有问题,请联系运维团队。 diff --git a/deploy/nginx/worklog.conf b/deploy/nginx/worklog.conf deleted file mode 100644 index 4f5ecf7..0000000 --- a/deploy/nginx/worklog.conf +++ /dev/null @@ -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; -# }