Skip to content

部署运维

当你准备把服务部署到测试/生产环境,并希望“可验证、可回滚、可运维”时,从这里开始。

本文聚焦 youlai-boot 的部署最短路径,你将完成:

  • 启动依赖服务(MySQL/Redis/可选组件)
  • 选择 Jar 或 Docker 方式部署
  • 配置 Nginx 反向代理与 HTTPS
  • 完成上线前 Checklist

依赖服务(推荐 Docker Compose)

仓库已提供 deploy/docker/docker-compose.yml(MySQL、Redis、MinIO、xxl-job-admin)。

bash
docker compose -f deploy/docker/docker-compose.yml -p youlai-boot up -d

停止并清理:

bash
docker compose -f deploy/docker/docker-compose.yml -p youlai-boot down

Jar 部署

bash
mvn -DskipTests package
java -jar target/youlai-boot.jar --spring.profiles.active=prod

常用验证:

  • 文档:http://localhost:8000/doc.html

Docker 镜像部署

bash
mvn -DskipTests package
docker build -t youlai-boot:latest .
bash
docker run -d --name youlai-boot -p 8000:8000 -e SPRING_PROFILES_ACTIVE=prod youlai-boot:latest

配置覆盖建议

  • 生产环境优先用环境变量覆盖敏感项(DB/Redis 密码、AI Key 等)
  • 按需关闭可选能力(AI/xxl-job/cache)

反向代理(Nginx)

生产环境通常建议把后端服务放在内网端口(如 8000),由 Nginx 统一对外提供:

  • 域名
  • HTTPS
  • 反向代理
  • 静态资源/前端站点托管(可选)

示例(按你的实际域名与证书路径调整):

nginx
server {
  listen 80;
  server_name api.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name api.example.com;

  ssl_certificate     /etc/nginx/ssl/fullchain.pem;
  ssl_certificate_key /etc/nginx/ssl/privkey.pem;

  location / {
    proxy_pass http://127.0.0.1:8000;
    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;
  }
}

HTTPS 与安全建议

  • 证书建议使用自动化方案(如 ACME/Let's Encrypt)并定期续期
  • 确保后端对外只暴露必要端口(一般仅 80/443)
  • 生产环境禁用调试配置,关闭不必要的 actuator/管理端点(如果开启)

JVM 参数建议

JVM 参数应根据机器配置与访问量调整。示例(仅供参考):

bash
java \
  -Xms512m -Xmx1024m \
  -XX:+UseG1GC \
  -Duser.timezone=Asia/Shanghai \
  -jar target/youlai-boot.jar --spring.profiles.active=prod

建议做法:

  • 把 JVM 参数写入 systemd service 或容器启动参数
  • 为不同环境准备不同的资源配置(开发/测试/生产)

日志与滚动

生产环境建议:

  • 日志输出到文件(按项目日志配置为准)
  • 配置日志滚动策略(按天/按大小)
  • 通过日志平台或采集器集中收集(如 ELK / Loki 等)

数据备份与恢复

MySQL

备份(示例):

bash
mysqldump -u root -p --single-transaction --routines --triggers \
  youlai_admin > youlai_admin_$(date +%F).sql

恢复(示例):

bash
mysql -u root -p youlai_admin < youlai_admin_2026-01-01.sql

Redis

  • 备份方式以你的 Redis 持久化方案为准(RDB/AOF)
  • 生产环境建议开启持久化,并把数据目录纳入备份策略

监控与健康检查

建议至少具备:

  • 存活检查:服务进程是否存活
  • 接口可用性:关键接口是否 200(如 /doc.html 或健康检查端点)
  • 依赖检查:MySQL/Redis 是否可用
  • 资源监控:CPU、内存、磁盘、GC

如果项目启用了 Spring Boot Actuator,可结合 Prometheus/Grafana 做指标采集(以项目实际配置为准)。

上线 Checklist

  • [ ] application-prod.yml 已配置并校验(DB/Redis/对象存储等)
  • [ ] 敏感配置已用环境变量或安全配置中心注入
  • [ ] 数据库已初始化并执行必要的变更脚本
  • [ ] Redis 已部署并开启持久化(生产建议)
  • [ ] Nginx 反向代理与 HTTPS 证书已生效
  • [ ] JVM 参数与容器资源限制已配置
  • [ ] 日志滚动与日志采集策略已确认
  • [ ] 备份策略已验证(至少做一次备份+恢复演练)
  • [ ] 监控与告警已接入

下一步

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者