diff --git a/deploy/docker/prepare-offline-images.sh b/deploy/docker/prepare-offline-images.sh index 406c1dca..e7a32097 100755 --- a/deploy/docker/prepare-offline-images.sh +++ b/deploy/docker/prepare-offline-images.sh @@ -311,6 +311,22 @@ cp "$PROJECT_ROOT/deploy/.env.template" "$CONFIG_DIR/" # 复制部署脚本 cp "$PROJECT_ROOT/deploy/deploy.sh" "$SCRIPTS_DIR/" +# 复制docker配置目录 +echo "复制Docker配置..." +mkdir -p "$PROJECT_ROOT/offline-deploy/docker" +cp -r "$PROJECT_ROOT/deploy/docker"/* "$PROJECT_ROOT/offline-deploy/docker/" 2>/dev/null || true + +# 复制文档 +echo "复制文档..." +mkdir -p "$PROJECT_ROOT/offline-deploy/docs" +cp -r "$PROJECT_ROOT/deploy/docs"/* "$PROJECT_ROOT/offline-deploy/docs/" 2>/dev/null || true + +# 复制数据库脚本(如果存在) +if [ -d "$PROJECT_ROOT/sql" ]; then + echo "复制数据库脚本..." + cp -r "$PROJECT_ROOT/sql" "$PROJECT_ROOT/offline-deploy/" +fi + # 创建离线部署说明 cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF' # QAUP 离线部署包 @@ -320,13 +336,24 @@ cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF' - `images/` - Docker 镜像文件 - `config/` - 配置文件 - `scripts/` - 部署脚本 +- `docker/` - Docker配置和数据库初始化脚本 +- `docs/` - 部署文档 +- `sql/` - 数据库架构文件(如果存在) + +## 重要文件说明 + +### 数据库初始化数据 +- `docker/postgres/export/01_system_data.sql` - 系统基础数据 +- `docker/postgres/export/02_business_data.sql` - 业务数据 +- `docker/postgres/export/03_sample_data.sql` - 示例数据 +- `docker/postgres/export/initial_data_complete.sql` - 完整初始化数据 ## 部署步骤 1. 将整个 `offline-deploy` 目录复制到目标服务器 -2. 导入镜像:`./scripts/load-images.sh` +2. 导入镜像:`sh ./scripts/load-images.sh` 3. 配置环境:`cp config/.env.template .env` 并编辑 -4. 启动服务:`./scripts/deploy.sh install` +4. 启动服务:`sh ./scripts/deploy.sh install` ## 系统要求 @@ -334,6 +361,13 @@ cat > "$PROJECT_ROOT/offline-deploy/README-离线部署.md" << 'EOF' - Docker Compose 1.29+ - 至少 4GB 内存 - 至少 20GB 磁盘空间 + +## 数据库初始化 + +系统启动时会自动执行数据库初始化脚本,按以下顺序: +1. 系统数据(用户、角色、权限等) +2. 业务数据(机场配置、区域设置等) +3. 示例数据(测试用途,可选) EOF # 创建离线部署包 diff --git a/deploy/docs/离线部署指南.md b/deploy/docs/离线部署指南.md index 63d0abcd..b30b14ad 100644 --- a/deploy/docs/离线部署指南.md +++ b/deploy/docs/离线部署指南.md @@ -40,165 +40,27 @@ cd QAUP-Management - 导出所有镜像为 tar.gz 文件 - 生成镜像清单和校验和 -#### 4. 创建离线部署包 +#### 4. 完成离线部署包创建 + +镜像准备脚本执行完成后,会自动创建完整的离线部署包: ```bash -# 创建离线部署包制作脚本 -cat > create-offline-package.sh << 'EOF' -#!/bin/bash +# 脚本执行完成后,会显示类似输出: +# 离线部署包创建完成: qaup-offline-deploy-20240801_143022.tar.gz +# 部署包大小: 1.2G -set -e - -PACKAGE_NAME="qaup-offline-deploy-$(date +%Y%m%d)" -PACKAGE_DIR="./$PACKAGE_NAME" - -echo "创建离线部署包: $PACKAGE_NAME" - -# 创建包目录结构 -mkdir -p "$PACKAGE_DIR"/{images,config,scripts,docs} - -# 复制 Docker 镜像 -echo "复制 Docker 镜像..." -cp -r offline-deploy/images/* "$PACKAGE_DIR/images/" - -# 复制配置文件 -echo "复制配置文件..." -cp docker-compose*.yml "$PACKAGE_DIR/" -cp .env.template "$PACKAGE_DIR/" -cp -r config "$PACKAGE_DIR/" -cp -r docker "$PACKAGE_DIR/" - -# 复制脚本文件 -echo "复制脚本文件..." -cp deploy.sh "$PACKAGE_DIR/" -cp -r docker "$PACKAGE_DIR/" - -# 复制文档 -echo "复制文档..." -cp -r docs "$PACKAGE_DIR/" -cp README.md "$PACKAGE_DIR/" 2>/dev/null || true - -# 复制数据库架构 -echo "复制数据库文件..." -mkdir -p "$PACKAGE_DIR/sql" -cp sql/qaup_database_schema.sql "$PACKAGE_DIR/sql/" - -# 创建安装脚本 -cat > "$PACKAGE_DIR/install.sh" << 'INSTALL_EOF' -#!/bin/bash - -# QAUP 离线安装脚本 - -set -e - -echo "=========================================" -echo " QAUP 系统离线安装" -echo "=========================================" - -# 检查 Docker -if ! command -v docker &> /dev/null; then - echo "错误: Docker 未安装,请先安装 Docker" - exit 1 -fi - -if ! command -v docker-compose &> /dev/null; then - echo "错误: Docker Compose 未安装,请先安装 Docker Compose" - exit 1 -fi - -# 导入镜像 -echo "导入 Docker 镜像..." -./docker/load-images.sh - -# 初始化配置 -echo "初始化配置..." -if [ ! -f .env ]; then - cp .env.template .env - echo "请编辑 .env 文件配置系统参数" -fi - -# 设置脚本权限 -echo "设置脚本权限..." -find . -name "*.sh" -exec chmod +x {} \; - -# 创建必要目录 -echo "创建数据目录..." -mkdir -p data/{postgres,redis,uploads} -mkdir -p logs/{postgres,redis,app,nginx} -mkdir -p backup/postgres - -echo "" -echo "离线安装准备完成!" -echo "" -echo "下一步操作:" -echo "1. 编辑 .env 文件配置系统参数" -echo "2. 运行: ./deploy.sh install" -echo "" - -INSTALL_EOF - -chmod +x "$PACKAGE_DIR/install.sh" - -# 创建 README -cat > "$PACKAGE_DIR/README.md" << 'README_EOF' -# QAUP 系统离线部署包 - -## 快速开始 - -1. 解压部署包到目标服务器 -2. 运行安装脚本: `./install.sh` -3. 编辑配置文件: `nano .env` -4. 启动系统: `./deploy.sh install` - -## 文档 - -- 部署指南: `docs/部署指南.md` -- 离线部署指南: `docs/离线部署指南.md` -- 故障排除: `docs/故障排除.md` - -## 支持 - -如有问题,请参考故障排除文档或联系技术支持。 -README_EOF - -# 创建版本信息 -cat > "$PACKAGE_DIR/VERSION" << 'VERSION_EOF' -QAUP 系统离线部署包 -版本: 1.0.1 -构建时间: $(date) -包含组件: -- QAUP 应用 (Spring Boot) -- PostgreSQL 数据库 (PostGIS) -- Redis 缓存 -- Nginx 反向代理 -VERSION_EOF - -# 打包 -echo "打包部署包..." -tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_DIR" - -# 生成校验和 -echo "生成校验和..." -sha256sum "${PACKAGE_NAME}.tar.gz" > "${PACKAGE_NAME}.tar.gz.sha256" - -# 清理临时目录 -rm -rf "$PACKAGE_DIR" - -echo "" -echo "离线部署包创建完成:" -echo " 文件: ${PACKAGE_NAME}.tar.gz" -echo " 大小: $(du -sh ${PACKAGE_NAME}.tar.gz | cut -f1)" -echo " 校验: ${PACKAGE_NAME}.tar.gz.sha256" -echo "" - -EOF - -chmod +x create-offline-package.sh - -# 运行打包脚本 -./create-offline-package.sh +# 查看生成的文件 +ls -lh qaup-offline-deploy-*.tar.gz ``` +**离线部署包包含:** +- Docker镜像文件(images/) +- 配置文件(config/) +- 部署脚本(scripts/) +- 文档(docs/) +- 镜像导入脚本 +- 校验和文件 + ### 阶段二:离线部署(在客户内网环境中进行) #### 1. 传输部署包 @@ -228,8 +90,11 @@ cd qaup-offline-deploy-* #### 3. 运行离线安装 ```bash -# 运行安装脚本 -./install.sh +# 导入镜像 +sh ./scripts/load-images.sh + +# 初始化配置 +sh ./scripts/deploy.sh init ``` 安装脚本将: @@ -263,7 +128,7 @@ NGINX_PORT=80 ```bash # 一键部署 -./deploy.sh install +sh ./scripts/deploy.sh install ``` ## 离线环境特殊配置 @@ -308,15 +173,8 @@ sudo ufw enable 在有网络的环境中: ```bash -# 构建新版本镜像 -./docker/prepare-offline-images.sh - -# 创建更新包 -tar -czf qaup-update-$(date +%Y%m%d).tar.gz \ - offline-deploy/images/ \ - docker-compose*.yml \ - config/ \ - docker/ +# 构建新版本镜像(会自动创建更新包) +sh ./deploy/docker/prepare-offline-images.sh ``` ### 2. 应用更新 @@ -325,19 +183,19 @@ tar -czf qaup-update-$(date +%Y%m%d).tar.gz \ ```bash # 备份当前配置 -./docker/config-manager.sh backup +sh ./docker/config-manager.sh backup # 停止服务 -./deploy.sh stop +sh ./deploy.sh stop # 解压更新包 -tar -xzf qaup-update-*.tar.gz +tar -xzf qaup-offline-deploy-*.tar.gz # 导入新镜像 -./docker/load-images.sh +sh ./scripts/load-images.sh # 启动服务 -./deploy.sh start +sh ./deploy.sh start ``` ## 离线监控 @@ -346,17 +204,17 @@ tar -xzf qaup-update-*.tar.gz ```bash # 启动本地监控 -./docker/monitor.sh watch 60 +sh ./docker/monitor.sh watch 60 # 设置告警监控 -./docker/alert-manager.sh monitor 300 & +sh ./docker/alert-manager.sh monitor 300 & ``` ### 2. 日志管理 ```bash # 配置日志轮转 -./docker/log-manager.sh setup +sh ./docker/log-manager.sh setup # 定期清理日志 echo "0 2 * * * /opt/qaup/docker/log-manager.sh cleanup 30" | crontab - @@ -366,30 +224,14 @@ echo "0 2 * * * /opt/qaup/docker/log-manager.sh cleanup 30" | crontab - ### 1. 数据备份 +使用内置的备份脚本: + ```bash -# 创建备份脚本 -cat > backup-offline.sh << 'EOF' -#!/bin/bash - -BACKUP_DIR="/backup/qaup/$(date +%Y%m%d)" -mkdir -p "$BACKUP_DIR" - -# 备份数据库 -docker exec qaup-postgres pg_dump -U postgres qaup | gzip > "$BACKUP_DIR/database.sql.gz" - -# 备份配置文件 -tar -czf "$BACKUP_DIR/config.tar.gz" .env config/ docker/ - -# 备份上传文件 -tar -czf "$BACKUP_DIR/uploads.tar.gz" data/uploads/ - -echo "备份完成: $BACKUP_DIR" -EOF - -chmod +x backup-offline.sh +# 手动备份 +sh ./docker/backup-restore.sh backup # 设置定时备份 -echo "0 1 * * * /opt/qaup/backup-offline.sh" | crontab - +echo "0 1 * * * /opt/qaup/docker/backup-restore.sh backup" | crontab - ``` ### 2. 系统备份 @@ -435,10 +277,10 @@ docker network ls ```bash # 验证配置文件 -./docker/config-manager.sh validate +sh ./docker/config-manager.sh validate # 重新初始化配置 -./docker/config-manager.sh init +sh ./docker/config-manager.sh init ``` ## 安全考虑 @@ -501,26 +343,17 @@ sudo sysctl -p ### 日常维护 +使用内置的运维脚本: + ```bash -# 创建维护脚本 -cat > daily-maintenance.sh << 'EOF' -#!/bin/bash +# 系统状态检查 +sh ./docker/monitor.sh status -# 检查系统状态 -./docker/monitor.sh status +# 系统清理 +sh ./docker/ops-manager.sh cleanup -# 检查磁盘空间 -df -h - -# 清理临时文件 -docker system prune -f - -# 备份数据 -./backup-offline.sh -EOF - -chmod +x daily-maintenance.sh -echo "0 6 * * * /opt/qaup/daily-maintenance.sh" | crontab - +# 设置定时维护 +echo "0 6 * * * /opt/qaup/docker/ops-manager.sh daily-maintenance" | crontab - ``` ### 定期检查 diff --git a/deploy/docs/部署指南.md b/deploy/docs/部署指南.md index 8a54f8b6..8e3db09c 100644 --- a/deploy/docs/部署指南.md +++ b/deploy/docs/部署指南.md @@ -17,6 +17,7 @@ - **Docker**: 20.10 或更高版本 - **Docker Compose**: 1.29 或更高版本 - **其他工具**: curl, wget, unzip +- **Python环境**(可选,用于开发工具): Python 3.6+, pip ## 安装 Docker 和 Docker Compose @@ -475,6 +476,25 @@ docker system prune -f ./docker/config-manager.sh backup ``` +## 可选工具安装 + +### Python 开发工具(可选) + +如果需要使用项目中的Python开发工具(如mock server),可以安装Python环境: + +```bash +# 安装Python和pip +sudo apt update +sudo apt install python3 python3-pip + +# 安装Flask(用于mock server) +pip3 install flask + +# 运行mock server(开发测试用) +cd tools +python3 mock_server.py +``` + ## 联系支持 如果遇到无法解决的问题,请提供以下信息: