# PolyHermes 一键部署指南 本文档介绍如何使用交互式一键部署脚本快速部署 PolyHermes 应用。 ## 📋 前置要求 ### 必需软件 - **Docker**: 版本 20.10 或更高 - **Docker Compose**: 版本 2.0 或更高(或 `docker-compose` v1.29+) ### 环境准备 ```bash # macOS 安装 Docker brew install docker # Ubuntu/Debian 安装 Docker curl -fsSL https://get.docker.com | sh # CentOS/RHEL 安装 Docker yum install docker-ce docker-ce-cli containerd.io ``` ## 🚀 快速开始 ### 1. 克隆项目(如果尚未克隆) ```bash git clone https://github.com/WrBug/PolyHermes.git cd PolyHermes ``` ### 2. 运行部署脚本 ```bash ./deploy-interactive.sh ``` ### 3. 按提示配置 脚本会引导你完成以下配置: #### 基础配置 - **服务器端口**:应用对外暴露的端口(默认:80) - **MySQL 端口**:数据库外部访问端口(默认:3307,避免与本地 MySQL 冲突) - **时区**:服务器时区(默认:Asia/Shanghai) #### 数据库配置 - **数据库用户名**:默认为 `root` - **数据库密码**:回车自动生成 32 字符随机密码 #### 安全配置(关键) - **JWT 密钥**:回车自动生成 128 字符随机密钥 - **管理员密码重置密钥**:回车自动生成 64 字符随机密钥 - **加密密钥**:用于加密 API Key,回车自动生成 64 字符随机密钥 #### 日志配置 - **Root 日志级别**:第三方库日志级别(默认:WARN) - 可选:`TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `OFF` - **应用日志级别**:应用代码日志级别(默认:INFO) #### 其他配置 - **Spring Profile**:环境配置(默认:prod) - **允许预发布版本**:是否允许自动更新到预发布版本(默认:false) - **GitHub 仓库**:项目仓库地址(默认:WrBug/PolyHermes) ### 4. 确认并部署 配置完成后,脚本会: 1. 生成 `.env` 配置文件 2. 显示配置摘要 3. 请求确认部署 4. 拉取 Docker Hub 镜像 5. 启动服务 6. 执行健康检查 ## 📝 配置示例 ### 使用默认值部署(推荐) 所有配置项直接回车,脚本会自动生成安全的随机密钥: ``` 服务器端口 [默认: 80]: ⏎ MySQL 端口(外部访问) [默认: 3307]: ⏎ 时区 [默认: Asia/Shanghai]: ⏎ 数据库用户名 [默认: root]: ⏎ 数据库密码 [回车自动生成]: ⏎ JWT 密钥 [回车自动生成]: ⏎ 管理员密码重置密钥 [回车自动生成]: ⏎ 加密密钥(用于加密 API Key) [回车自动生成]: ⏎ Root 日志级别(第三方库) [默认: WARN]: ⏎ 应用日志级别 [默认: INFO]: ⏎ Spring Profile [默认: prod]: ⏎ 允许预发布版本更新 [默认: false]: ⏎ GitHub 仓库 [默认: WrBug/PolyHermes]: ⏎ ``` ### 自定义端口部署 如果需要使用不同的端口: ``` 服务器端口 [默认: 80]: 8080⏎ MySQL 端口(外部访问) [默认: 3307]: 33306⏎ ``` ### 开发环境部署 启用 DEBUG 日志: ``` Root 日志级别(第三方库) [默认: WARN]: DEBUG⏎ 应用日志级别 [默认: INFO]: DEBUG⏎ ``` ## 🔧 部署后管理 ### 访问应用 部署完成后,访问: ``` http://localhost:80 ``` (或你配置的自定义端口) ### 常用命令 ```bash # 查看服务状态 docker compose -f docker-compose.prod.yml ps # 查看实时日志 docker compose -f docker-compose.prod.yml logs -f # 仅查看应用日志 docker compose -f docker-compose.prod.yml logs -f app # 停止服务 docker compose -f docker-compose.prod.yml down # 重启服务 docker compose -f docker-compose.prod.yml restart # 更新到最新版本 docker pull wrbug/polyhermes:latest docker compose -f docker-compose.prod.yml up -d ``` ### 数据库连接 使用配置的凭据连接到 MySQL: ```bash mysql -h 127.0.0.1 -P 3307 -u root -p # 输入你在部署时设置的数据库密码 ``` 或使用图形化工具(如 DBeaver、Navicat): - **主机**: `localhost` - **端口**: `3307`(或你配置的端口) - **数据库**: `polyhermes` - **用户名**: `root`(或你配置的用户名) - **密码**: 部署时设置的密码(可在 `.env` 文件中查看) ## 🔐 安全最佳实践 ### 保护配置文件 ```bash # 设置 .env 文件权限 chmod 600 .env # 确保 .env 已添加到 .gitignore echo ".env" >> .gitignore ``` ### 定期更换密钥 生产环境建议定期更换安全密钥: ```bash # 生成新的 JWT 密钥(128字符) openssl rand -hex 64 # 生成新的管理员重置密钥(64字符) openssl rand -hex 32 # 更新 .env 文件后重启服务 docker compose -f docker-compose.prod.yml restart ``` ### 备份数据库 ```bash # 备份数据库 docker exec polyhermes-mysql mysqldump -u root -p polyhermes > backup_$(date +%Y%m%d).sql # 恢复数据库 docker exec -i polyhermes-mysql mysql -u root -p polyhermes < backup_20260201.sql ``` ## 🌐 生产环境部署建议 ### 1. 使用反向代理 建议使用 Nginx 或 Caddy 作为反向代理: ```nginx # Nginx 配置示例 server { listen 443 ssl http2; server_name polyhermes.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:80; 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; } } ``` ### 2. 配置防火墙 ```bash # UFW (Ubuntu) ufw allow 80/tcp ufw allow 443/tcp ufw enable # Firewalld (CentOS) firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload ``` ### 3. 启用自动更新 配置定时任务自动检查并更新镜像: ```bash # 创建更新脚本 cat > /opt/polyhermes-update.sh <<'EOF' #!/bin/bash cd /path/to/PolyHermes docker pull wrbug/polyhermes:latest docker compose -f docker-compose.prod.yml up -d EOF chmod +x /opt/polyhermes-update.sh # 添加到 crontab(每天凌晨 3 点检查更新) echo "0 3 * * * /opt/polyhermes-update.sh >> /var/log/polyhermes-update.log 2>&1" | crontab - ``` ## 🐛 故障排查 ### 服务无法启动 ```bash # 查看详细错误日志 docker compose -f docker-compose.prod.yml logs # 检查容器状态 docker compose -f docker-compose.prod.yml ps ``` ### 数据库连接失败 ```bash # 检查 MySQL 容器状态 docker logs polyhermes-mysql # 测试数据库连接 docker exec polyhermes-mysql mysql -u root -p -e "SELECT 1" ``` ### 端口被占用 ```bash # 查找占用端口的进程 lsof -i :80 # 或 netstat -tulpn | grep :80 # 修改 SERVER_PORT 环境变量 vim .env # 修改 SERVER_PORT=8080 docker compose -f docker-compose.prod.yml up -d ``` ### 镜像拉取失败 如果 Docker Hub 访问受限,可以配置镜像加速器: ```bash # 配置 Docker 镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOF sudo systemctl restart docker ``` ## 📚 更多资源 - [项目 README](../../README.md) - [发布日志](../../RELEASE.md) - [GitHub 仓库](https://github.com/WrBug/PolyHermes) - [问题反馈](https://github.com/WrBug/PolyHermes/issues) ## 📞 获取帮助 如遇到问题,请: 1. 查看上方的**故障排查**章节 2. 检查 [GitHub Issues](https://github.com/WrBug/PolyHermes/issues) 3. 提交新的 Issue 并附上日志输出 --- **祝部署顺利!** 🎉