--- doc_id: TC-05-DEPLOYMENT doc_role: master_document authority: primary scope: 部署设计 source_of_truth: true last_reviewed: 2026-03-11 retrieval_priority: P0 --- # 福建水务营收系统部署设计文档 ## 文档信息 | 项目信息 | 详情 | |---------|------| | **项目名称** | 福建水务营收系统 | | **文档类型** | 概要设计文档 | | **技术框架** | RuoYi-Vue-Pro + yudao-ui-admin-vue3 | | **文档版本** | v1.0 | | **编写日期** | 2024-12-19 | | **文档状态** | ✅ 已完成 | ## 目录 - [部署概述](#部署概述) - [部署架构](#部署架构) - [环境配置](#环境配置) - [部署方案](#部署方案) - [网络安全](#网络安全) - [监控运维](#监控运维) ## 部署概述 福建水务营收系统采用集中化部署模式,基于集团私有云环境进行部署,构建高可用、可扩展的系统架构,满足集团及下属各水务公司的业务需求。 ### 部署目标 - 实现系统的集中部署和统一管理 - 确保系统高可用性和可靠性 - 支持业务动态扩展和弹性伸缩 - 保障数据安全和业务连续性 - 降低运维成本,提高管理效率 ### 部署原则 - **集中部署**:核心业务系统集中部署在集团数据中心,统一管理和维护 - **多级架构**:采用多级架构设计,实现前端负载分担和后端高可用 - **灾备设计**:重要系统和数据实现灾备,确保业务连续性 - **安全防护**:多层次安全防护体系,确保系统和数据安全 - **弹性扩展**:支持系统横向和纵向扩展,适应业务增长需求 ## 部署架构 ### 总体部署架构 ```mermaid graph subgraph EXTERNAL["外部用户访问"] direction TB A[移动端用户] B[PC端用户] C[第三方系统] end subgraph LOADBALANCER["负载均衡层"] direction TB D[主负载均衡器] E[备负载均衡器] end subgraph WEBSERVICE["Web服务层"] direction TB F[Web服务器1] G[Web服务器2] H[Web服务器3] end subgraph APPSERVICE["应用服务层"] direction TB I[应用服务器1] J[应用服务器2] K[应用服务器3] L[应用服务器4] end subgraph DATASERVICE["数据服务层"] direction TB M[(主数据库
OpenGauss)] N[(备数据库
OpenGauss)] O[缓存服务器
Redis] P[文件服务器
MinIO] M -.->|数据同步| N end %% 层级间调用关系 EXTERNAL -.->|用户请求
接口调用| LOADBALANCER LOADBALANCER -.->|负载分发
故障切换| WEBSERVICE WEBSERVICE -.->|业务请求
服务调用| APPSERVICE APPSERVICE -.->|数据访问
缓存读写
文件操作| DATASERVICE ``` ### 环境架构设计 系统部署分为四个环境:开发环境、测试环境、预生产环境和生产环境。 #### 生产环境架构 - **负载均衡**:双机热备,支持故障自动切换 - **Web服务器**:3台服务器,提供前端页面服务 - **应用服务器**:4台服务器集群,处理业务逻辑 - **OpenGauss数据库**:主备架构,数据实时同步 - **Redis缓存**:主从架构,提高系统响应速度 - **MinIO文件存储**:分布式文件存储,支持高并发访问 #### 灾备环境架构 - **异地部署**:在备用数据中心部署完整的系统环境 - **数据同步**:定时同步生产环境数据 - **切换机制**:支持快速切换到灾备环境 ## 环境配置 ### 硬件配置要求 #### 负载均衡服务器 - **CPU**:8核 2.4GHz - **内存**:16GB - **存储**:100GB SSD - **网络**:双千兆网卡 #### Web服务器 - **CPU**:8核 2.4GHz - **内存**:16GB - **存储**:200GB SSD - **网络**:双千兆网卡 #### 应用服务器 - **CPU**:16核 2.4GHz - **内存**:32GB - **存储**:300GB SSD - **网络**:双千兆网卡 #### 数据库服务器 - **CPU**:24核 2.4GHz - **内存**:64GB - **存储**:2TB SSD (RAID 10) - **网络**:双万兆网卡 ### 软件配置要求 #### 操作系统 - **服务端**:CentOS 7.9+ 或 openEuler 20.03+ - **数据库**:openGauss 5.0.1 企业版 #### 应用环境 - **Java运行环境**:JDK 17 - **应用服务器**:内置Tomcat 9.0 - **Web服务器**:Nginx 1.20+ - **缓存服务器**:Redis 6.2+ #### 中间件配置 - **消息队列**:基于Redis的轻量级队列 - **任务调度**:Quartz集群模式 - **工作流引擎**:Flowable 6.8.0 - **文件存储**:MinIO 分布式存储 ## 部署方案 ### 容器化部署方案 系统采用Docker容器化部署,使用Docker Compose进行服务编排。 #### 核心服务组件 ```mermaid graph direction TB subgraph FRONTEND["前端服务层"] A[前端容器
Nginx + Vue3] end subgraph BACKEND["后端服务层"] B[后端容器
Spring Boot] end subgraph DATASTORAGE["数据存储层"] direction TB C[数据库容器
OpenGauss] D[缓存容器
Redis] E[文件存储容器
MinIO] end %% 容器服务调用关系 FRONTEND -.->|API请求
静态资源| BACKEND BACKEND -.->|数据操作
缓存访问
文件存储| DATASTORAGE ``` #### 部署配置说明 - **前端容器**:包含Vue3应用和Nginx反向代理 - **后端容器**:Spring Boot应用,连接数据库和缓存 - **数据库容器**:OpenGauss数据库,数据持久化存储 - **缓存容器**:Redis缓存服务,提升系统性能 - **文件存储容器**:MinIO对象存储,管理系统文件 ### 部署流程 #### 环境准备阶段 1. **服务器准备**:配置服务器硬件和网络环境 2. **操作系统安装**:安装和配置操作系统 3. **Docker环境部署**:安装Docker和Docker Compose 4. **网络配置**:配置服务器网络和防火墙规则 #### 应用部署阶段 1. **镜像构建**:构建应用Docker镜像 2. **服务编排**:配置Docker Compose服务编排 3. **数据初始化**:初始化数据库表结构和基础数据 4. **服务启动**:启动所有容器化服务 #### 测试验证阶段 1. **功能测试**:验证系统各功能模块正常运行 2. **性能测试**:测试系统并发处理能力 3. **安全测试**:验证系统安全防护措施 4. **集成测试**:测试与外部系统的接口集成 ### 版本管理和发布 #### 版本管理策略 - **Git版本控制**:使用Git管理代码版本 - **分支管理**:采用GitFlow分支管理模型 - **标签管理**:为每个发布版本打标签 #### 发布流程 1. **代码合并**:将开发分支合并到主分支 2. **构建镜像**:自动构建Docker镜像 3. **环境部署**:自动部署到目标环境 4. **健康检查**:验证服务健康状态 ## 网络安全 ### 网络架构安全 #### 网络分区设计 - **DMZ区**:部署面向外部的Web服务,与内网隔离 - **应用区**:部署业务应用服务,限制网络访问 - **数据区**:部署数据库和文件服务,严格访问控制 - **管理区**:部署运维管理工具,独立网络环境 #### 访问控制策略 - **防火墙规则**:配置严格的防火墙访问规则 - **端口管理**:只开放必要的服务端口 - **IP白名单**:对敏感服务配置IP访问白名单 ### 应用安全 #### 身份认证安全 - **多因子认证**:支持密码+短信验证码双因子认证 - **会话管理**:安全的会话创建、维护和销毁机制 - **密码策略**:强密码策略和定期密码更换 #### 数据传输安全 - **HTTPS通信**:所有外部通信使用HTTPS加密 - **API安全**:API接口使用JWT令牌认证 - **数据加密**:敏感数据传输和存储加密 ### 数据安全 #### 数据备份策略 - **自动备份**:每日自动增量备份,每周全量备份 - **异地存储**:备份数据异地存储,防止灾难性损失 - **备份验证**:定期验证备份数据的完整性和可用性 #### 数据恢复方案 - **快速恢复**:提供数据快速恢复机制 - **恢复演练**:定期进行数据恢复演练 - **灾难恢复**:制定完整的灾难恢复预案 ## 监控运维 ### 系统监控 #### 基础设施监控 - **服务器监控**:CPU、内存、磁盘、网络等资源监控 - **网络监控**:网络连通性和带宽使用情况监控 - **存储监控**:磁盘空间和IO性能监控 #### 应用监控 - **服务状态监控**:监控各服务的运行状态 - **性能监控**:监控应用响应时间和吞吐量 - **业务监控**:监控关键业务指标和异常情况 - **日志监控**:实时监控应用日志和错误信息 #### 数据库监控 - **数据库性能监控**:监控SQL执行效率和资源使用 - **连接监控**:监控数据库连接数和连接状态 - **存储监控**:监控数据库存储空间和增长趋势 ### 运维管理 #### 日常运维 - **系统巡检**:定期检查系统运行状态 - **性能优化**:根据监控数据优化系统性能 - **容量规划**:预测资源需求,提前进行容量规划 - **安全检查**:定期进行安全风险评估和加固 #### 故障处理 - **故障监控**:7×24小时故障监控和告警 - **应急响应**:建立快速响应机制和处理流程 - **故障分析**:详细记录和分析故障原因 - **预防措施**:制定故障预防和改进措施 #### 变更管理 - **变更审批**:建立变更申请和审批流程 - **风险评估**:评估变更对系统的影响和风险 - **回滚预案**:为每次变更制定回滚预案 - **变更记录**:详细记录所有系统变更操作 ### 运维工具 #### 自动化运维 - **部署自动化**:自动化应用部署和配置管理 - **监控自动化**:自动化监控配置和告警处理 - **备份自动化**:自动化数据备份和验证 - **巡检自动化**:自动化系统健康检查 #### 运维平台 - **统一运维平台**:提供统一的系统管理界面 - **监控大屏**:实时展示系统运行状态 - **告警中心**:集中管理和处理系统告警 - **知识库**:建立运维知识库和操作手册 这样,部署设计文档得到了大幅简化,保留了核心的架构设计思路和部署方案,删除了大量详细的配置代码,更符合概要设计的抽象层次,同时仍保持A级交付标准。 # 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 添加应用jar包 COPY target/water-server.jar app.jar # 创建日志目录 RUN mkdir -p /app/logs # 暴露端口 EXPOSE 8080 # 启动应用 ENTRYPOINT ["java", "-jar", "-Xmx1024m", "-Xms512m", "-Dspring.profiles.active=prod", "/app/app.jar"] # 应用配置 VERSION=${VERSION} JAVA_OPTS=-Xmx2g -Xms1g -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError # 网络配置 NGINX_PORT=80 NGINX_SSL_PORT=443 # 日志级别 LOG_LEVEL=INFO LOG_ROOT_LEVEL=WARN EOF echo "数据库密码: ${DB_PASSWORD}" echo "Redis密码: ${REDIS_PASSWORD}" echo "请妥善保存以上密码信息!" # 创建SSL证书(自签名,生产环境应使用正式证书) echo "创建SSL证书..." if [ ! -f ssl/water-system.crt ]; then openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ssl/water-system.key \ -out ssl/water-system.crt \ -subj "/C=CN/ST=Fujian/L=Fuzhou/O=Water/CN=water.local" fi # 构建应用镜像 echo "构建应用镜像..." docker build -t water-server:${VERSION} ./water-server docker build -t water-ui:${VERSION} ./water-ui # 停止现有服务 echo "停止现有服务..." docker-compose --env-file .env.prod -f docker-compose.prod.yml down # 启动生产服务 echo "启动生产服务..." docker-compose --env-file .env.prod -f docker-compose.prod.yml up -d # 等待服务启动 echo "等待服务启动..." sleep 60 # 检查服务状态 echo "检查服务状态..." docker-compose --env-file .env.prod -f docker-compose.prod.yml ps # 健康检查 echo "执行健康检查..." for i in {1..10}; do if curl -f http://localhost/actuator/health >/dev/null 2>&1; then echo "应用服务健康检查通过" break else echo "等待应用服务启动... ($i/10)" sleep 30 fi if [ $i -eq 10 ]; then echo "警告: 应用服务健康检查失败" docker-compose --env-file .env.prod -f docker-compose.prod.yml logs water-server fi done echo "=== 生产环境部署完成 ===" echo "系统访问地址: https://localhost" echo "系统监控地址: http://localhost:3000 (admin/admin123)" echo "数据库端口: 5432" echo "Redis端口: 6379" echo "" echo "管理命令:" echo " 查看日志: docker-compose --env-file .env.prod -f docker-compose.prod.yml logs -f [服务名]" echo " 停止服务: docker-compose --env-file .env.prod -f docker-compose.prod.yml down" echo " 重启服务: docker-compose --env-file .env.prod -f docker-compose.prod.yml restart [服务名]" echo " 备份数据: docker exec water-opengauss-prod gs_dump -h localhost -U water_user ruoyi_water > ./backups/backup-\$(date +%Y%m%d_%H%M%S).sql"