阶段二:认证授权模块 - User实体类、Mapper、DataService - Token服务(Redis存储)、密码加密(BCrypt) - 认证拦截器、UserContext上下文 - 登录/登出接口 阶段三:核心业务模块 - 用户管理:CRUD、状态管理、密码重置 - 模板管理:CRUD、状态管理 - 工作日志:CRUD、权限控制 配置分离架构 - env.properties(环境敏感配置) - service.properties(服务配置) - logback-spring.xml更新 部署脚本 - deploy/目录(Nginx配置、启停脚本、备份脚本) 单元测试:29个测试全部通过
7.6 KiB
7.6 KiB
工作日志服务平台 - 部署指南
目录说明
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 创建部署目录
# 创建应用目录
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 部署后端应用
- 编译打包
cd worklog-api
mvn clean package -DskipTests
- 上传 JAR 文件
scp target/worklog-api-1.0.0.jar user@server:/opt/worklog/worklog-api/
- 上传部署脚本
scp -r deploy/scripts user@server:/opt/worklog/worklog-api/
- 配置 application.yml
# 在服务器上创建配置文件
cd /opt/worklog/worklog-api
vi application.yml
# 复制 application.yml.example 内容并修改为生产环境配置
# 重点修改:
# - 数据库连接信息
# - Redis 连接信息
# - 日志路径
# - 文件上传路径
- 启动应用
cd /opt/worklog/worklog-api
./scripts/start.sh
- 查看日志
tail -f /opt/worklog/worklog-api/logs/console.log
tail -f /opt/worklog/worklog-api/logs/app.log
2.2 应用管理命令
# 启动应用
./scripts/start.sh
# 停止应用
./scripts/stop.sh
# 重启应用
./scripts/restart.sh
# 查看运行状态
ps aux | grep worklog-api
三、Nginx 配置
3.1 安装 Nginx
# Ubuntu
sudo apt update
sudo apt install nginx
# CentOS
sudo yum install nginx
3.2 配置 Nginx
- 复制配置文件
sudo cp deploy/nginx/worklog.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/worklog.conf /etc/nginx/sites-enabled/
- 修改配置
编辑 /etc/nginx/sites-available/worklog.conf,修改以下内容:
server_name: 修改为实际域名- 静态文件路径: 根据实际部署路径修改
- 测试配置
sudo nginx -t
- 重启 Nginx
sudo systemctl restart nginx
sudo systemctl enable nginx # 开机自启
3.3 HTTPS 配置(推荐)
- 申请 SSL 证书(使用 Let's Encrypt 免费证书)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d worklog.example.com
- 自动续期
sudo certbot renew --dry-run
四、数据库备份
4.1 配置备份脚本
- 修改配置
编辑 scripts/backup.sh,确认以下配置:
- 数据库连接信息
- 备份目录路径
- 保留策略
- 测试备份
cd /opt/worklog/worklog-api
./scripts/backup.sh full
4.2 配置定时备份
# 编辑 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 恢复数据库
./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 查看日志
# 实时查看应用日志
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 日志清理
# 清理 7 天前的日志
find /opt/worklog/worklog-api/logs -name "*.log" -mtime +7 -delete
建议配置 logrotate 自动清理日志。
六、性能优化
6.1 JVM 参数调优
编辑 scripts/start.sh 中的 JVM_OPTS:
# 根据服务器内存调整堆大小
JVM_OPTS="-Xms1g -Xmx2g"
# 使用 G1 垃圾回收器
JVM_OPTS="${JVM_OPTS} -XX:+UseG1GC"
# GC 日志
JVM_OPTS="${JVM_OPTS} -Xloggc:${APP_HOME}/logs/gc.log"
6.2 数据库优化
- 配置连接池参数(application.yml)
- 添加合适的索引
- 定期分析慢查询日志
6.3 Redis 优化
- 配置持久化策略
- 设置最大内存限制
- 配置淘汰策略
七、故障排查
7.1 应用无法启动
- 检查 JDK 版本:
java -version - 检查端口占用:
netstat -tuln | grep 8080 - 查看启动日志:
tail -f logs/console.log - 检查配置文件:
cat application.yml
7.2 数据库连接失败
- 检查 MySQL 服务:
systemctl status mysql - 检查防火墙:
sudo ufw status - 测试连接:
mysql -h localhost -u worklog -p - 检查数据库用户权限
7.3 Redis 连接失败
- 检查 Redis 服务:
systemctl status redis - 测试连接:
redis-cli -h localhost -p 6379 -a password - 检查配置文件:
/etc/redis/redis.conf
7.4 Nginx 502 错误
- 检查后端应用是否运行:
ps aux | grep worklog - 检查端口:
netstat -tuln | grep 8080 - 查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log
八、安全加固
8.1 防火墙配置
# 只开放必要端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 22/tcp # SSH
sudo ufw enable
8.2 修改默认密码
- MySQL root 密码
- Redis 密码
- 应用数据库用户密码
- 管理员默认账号密码
8.3 限制 Swagger 访问
在生产环境建议:
- 关闭 Swagger:
springdoc.swagger-ui.enabled=false - 或通过 Nginx 限制内网访问
九、升级部署
9.1 升级步骤
- 备份数据库
./scripts/backup.sh full
- 停止应用
./scripts/stop.sh
- 备份当前版本
cp worklog-api-1.0.0.jar worklog-api-1.0.0.jar.bak
- 上传新版本
scp target/worklog-api-1.1.0.jar user@server:/opt/worklog/worklog-api/
- 启动应用
# 修改 start.sh 中的 JAR 文件名
vi scripts/start.sh
./scripts/start.sh
- 验证升级
# 检查健康状态
curl http://localhost:8080/api/v1/health
# 查看日志
tail -f logs/app.log
9.2 回滚方案
如果升级失败,执行回滚:
./scripts/stop.sh
cp worklog-api-1.0.0.jar.bak worklog-api-1.0.0.jar
./scripts/start.sh
十、常用命令速查
# 应用管理
./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 # 系统负载
联系方式
如有问题,请联系运维团队。