QAUP_Management/deploy/docs/离线部署指南.md

7.0 KiB
Raw Permalink Blame History

QAUP 系统离线部署指南

概述

本文档详细介绍了如何在无互联网连接的内网环境中部署 QAUP 系统。离线部署包含所有必需的 Docker 镜像、配置文件和脚本,确保在完全隔离的网络环境中也能成功部署。

离线部署流程

阶段一:准备离线部署包(在有网络环境中进行)

1. 环境要求

准备环境

  • 有互联网连接的 Linux/macOS 系统
  • Docker 20.10+ 和 Docker Compose 1.29+
  • 至少 10GB 可用磁盘空间

2. 获取项目代码

# 克隆或下载项目代码
git clone <项目地址>
cd QAUP-Management

# 或者解压项目源码包
tar -xzf qaup-source-code.tar.gz
cd QAUP-Management

3. 准备 Docker 镜像

# 运行镜像准备脚本
./docker/prepare-offline-images.sh

该脚本将执行以下操作:

  • 拉取所有必需的基础镜像
  • 构建自定义应用镜像
  • 导出所有镜像为 tar.gz 文件
  • 生成镜像清单和校验和

4. 完成离线部署包创建

镜像准备脚本执行完成后,会自动创建完整的离线部署包:

# 脚本执行完成后,会显示类似输出:
# 离线部署包创建完成: qaup-offline-deploy-20240801_143022.tar.gz
# 部署包大小: 1.2G

# 查看生成的文件
ls -lh qaup-offline-deploy-*.tar.gz

离线部署包包含:

  • Docker镜像文件images/
  • 部署脚本scripts/
  • Docker配置docker/
  • 文档docs/
  • 配置文件docker-compose.yml, docker-compose.prod.yml, .env.template
  • 镜像导入脚本
  • 校验和文件

阶段二:离线部署(在客户内网环境中进行)

1. 传输部署包

将离线部署包传输到目标服务器:

# 通过 U盘、移动硬盘等方式传输文件
# 或通过内网文件传输
scp qaup-offline-deploy-*.tar.gz user@target-server:/opt/

2. 解压和验证

# 进入目标目录
cd /opt

# 验证文件完整性
sha256sum -c qaup-offline-deploy-*.tar.gz.sha256

# 解压部署包
tar -xzf qaup-offline-deploy-*.tar.gz
cd qaup-offline-deploy-*

3. 运行离线安装

# 导入镜像
./scripts/load-images.sh

# 初始化配置
./scripts/deploy.sh init

安装脚本将:

  • 检查 Docker 环境
  • 导入所有 Docker 镜像
  • 初始化配置文件
  • 设置脚本权限
  • 创建必要目录

4. 配置系统

# 复制环境配置模板
cp .env.template .env

# 编辑环境配置
nano .env

重要配置项

# 数据库配置
POSTGRES_PASSWORD=设置强密码
APP_DB_PASSWORD=设置强密码

# 服务器配置
SERVER_NAME=内网IP或域名
NGINX_PORT=80

# 其他配置根据实际环境调整

手动部署方式(如果部署脚本遇到问题):

# 1. 导入镜像
./scripts/load-images.sh

# 2. 配置环境变量
cp .env.template .env
# 编辑 .env 文件,设置数据库密码、端口等配置

# 3. 启动服务
docker-compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env up -d

# 4. 查看服务状态
docker-compose -f docker-compose.yml -f docker-compose.prod.yml ps

5. 启动系统

# 一键部署
./scripts/deploy.sh install

离线环境特殊配置

1. 时间同步

内网环境可能无法自动同步时间:

# 手动设置系统时间
sudo date -s "2024-01-01 12:00:00"

# 或配置内网 NTP 服务器
sudo nano /etc/systemd/timesyncd.conf
# 添加: NTP=内网NTP服务器IP

2. DNS 配置

# 配置内网 DNS
sudo nano /etc/resolv.conf
# 添加: nameserver 内网DNS服务器IP

# 或在 hosts 文件中添加必要的域名解析
sudo nano /etc/hosts

3. 防火墙配置

# 配置防火墙规则
sudo ufw allow from 内网网段 to any port 80
sudo ufw allow from 内网网段 to any port 443
sudo ufw enable

离线更新

1. 准备更新包

在有网络的环境中:

# 构建新版本镜像(会自动创建更新包)
./deploy/docker/prepare-offline-images.sh

2. 应用更新

在离线环境中:

# 备份当前配置
./docker/config-manager.sh backup

# 停止服务
./deploy.sh stop

# 解压更新包
tar -xzf qaup-offline-deploy-*.tar.gz

# 导入新镜像
./scripts/load-images.sh

# 启动服务
./deploy.sh start

离线监控

1. 本地监控

# 启动本地监控
./docker/monitor.sh watch 60

# 设置告警监控
./docker/alert-manager.sh monitor 300 &

2. 日志管理

# 配置日志轮转
./docker/log-manager.sh setup

# 定期清理日志
echo "0 2 * * * /opt/qaup/docker/log-manager.sh cleanup 30" | crontab -

离线备份

1. 数据备份

使用内置的备份脚本:

# 手动备份
./docker/backup-restore.sh backup

# 设置定时备份
echo "0 1 * * * /opt/qaup/docker/backup-restore.sh backup" | crontab -

2. 系统备份

# 完整系统备份
tar -czf qaup-system-backup-$(date +%Y%m%d).tar.gz \
    --exclude='data/postgres' \
    --exclude='logs' \
    .

故障排除

1. 镜像导入失败

# 检查镜像文件
ls -la images/

# 验证镜像文件完整性
cd images && sha256sum -c checksums.sha256

# 手动导入单个镜像
gunzip -c qaup-app.tar.gz | docker load

2. 服务无法启动

# 检查 Docker 服务
sudo systemctl status docker

# 检查容器日志
docker logs qaup-app
docker logs qaup-postgres

# 检查网络连接
docker network ls

3. 配置问题

# 验证配置文件
./docker/config-manager.sh validate

# 重新初始化配置
./docker/config-manager.sh init

安全考虑

1. 网络隔离

# 确保容器网络隔离
docker network inspect qaup_qaup-network

# 配置防火墙规则
sudo ufw deny out 53
sudo ufw deny out 80
sudo ufw deny out 443

2. 访问控制

# 设置文件权限
chmod 600 .env
chmod 700 data/
chmod 755 logs/

# 限制用户访问
sudo chown -R qaup:qaup /opt/qaup

3. 审计日志

# 启用系统审计
sudo apt install auditd
sudo systemctl enable auditd

# 配置审计规则
echo "-w /opt/qaup -p wa -k qaup-access" | sudo tee -a /etc/audit/rules.d/qaup.rules

性能优化

1. 内网优化

# 调整网络参数
echo 'net.core.rmem_max = 16777216' | sudo tee -a /etc/sysctl.conf
echo 'net.core.wmem_max = 16777216' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

2. 存储优化

# 使用本地存储
# 修改 docker-compose.yml 中的卷配置
# 使用高性能磁盘存储数据库文件

维护计划

日常维护

使用内置的运维脚本:

# 系统状态检查
./docker/monitor.sh status

# 系统清理
./docker/ops-manager.sh cleanup

# 设置定时维护
echo "0 6 * * * /opt/qaup/docker/ops-manager.sh daily-maintenance" | crontab -

定期检查

  • 每日:系统状态检查、日志查看
  • 每周:性能监控、备份验证
  • 每月:安全检查、配置审核
  • 每季度:系统更新、容量规划

注意: 离线环境部署需要特别注意安全和稳定性,建议在部署前进行充分测试。