# 私有化部署运行手册 ## 一键部署 ```bash curl -fsSL https://xuqinmin.com/xuqmGroup/XuqmGroup-PrivateDeploy/raw/branch/main/install.sh \ -o install.sh && bash install.sh ``` 交互式向导依次完成: 1. 选择租户初始化方式(新建 / 迁移) 2. 填写租户信息或迁移密钥 3. 填写外部访问地址(宿主机 nginx 对外的地址,用于 SDK 配置) 4. 自动完成容器启动、数据库初始化、全量验证 完成后按输出的端口表配置宿主机 nginx。 --- ## Nginx 配置 部署内置了一个 nginx 容器处理所有内部路由,直接绑定宿主机 `0.0.0.0:80`。**宿主机无需任何 nginx 配置。** 上层 nginx 直接 `proxy_pass` 指向本机 IP(端口 80)即可,例如: ```nginx location / { proxy_pass http://192.168.x.x; # 填写部署服务器 IP proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_read_timeout 3600s; } ``` > 如果有多层 nginx 代理,**每一层**都必须加上 `proxy_http_version 1.1` 和 `Upgrade`/`Connection` 头,否则 IM WebSocket 握手会在中间某层断开。 内置 nginx 路由配置在 `config/nginx/conf.d/xuqm.conf`,使用 Docker 服务名路由到各容器,无需关心具体端口。 --- ## 端口说明 | 宿主机端口 | 说明 | |-----------|------| | **80** | 内置 nginx 入口(上层 nginx 直接指向此端口) | | 11224–11231 | 各业务容器(绑定 127.0.0.1,调试用) | 各业务容器端口仅用于直接调试,正常流量全部走 80。 --- ## 租户迁移 迁移通过一键部署向导完成,选择「迁移租户」后: 1. 前往公有化平台控制台 → 安全中心 → 私有化部署迁移 → 生成迁移密钥 2. 将 `pmk_` 开头的密钥粘贴进向导 3. 脚本自动导出租户数据、导入私有库、写入 license 记录、重启服务 迁移为单租户操作,会清空现有 bootstrap 数据后写入迁移数据。 --- ## 常用运维命令 ```bash # 查看所有容器状态 docker compose -f docker-compose.yml -f docker-compose.infra.yml ps # 查看服务日志 docker compose -f docker-compose.yml -f docker-compose.infra.yml logs --tail 100 tenant-service # 重新运行全量验证 bash scripts/verify.sh # 停止所有服务(保留数据) docker compose -f docker-compose.yml -f docker-compose.infra.yml down # 启用可选服务 bash scripts/enable-service.sh im # 禁用可选服务(不删数据) bash scripts/disable-service.sh im # 备份数据 bash scripts/backup.sh # 恢复数据 bash scripts/restore.sh ``` --- ## 数据目录 | 路径 | 说明 | |------|------| | `data/mysql/` | MySQL 数据文件 | | `data/redis/` | Redis AOF 文件 | | `data/uploads/` | 文件服务上传目录 | | `data/update/` | 版本管理包存储 | | `data/backups/` | 备份文件 | | `logs/` | 审计日志 | --- ## 重新部署(幂等) 脚本幂等,可重复执行: ```bash bash install.sh ``` 已运行的容器不会被重建,数据目录不受影响。