Quellcode durchsuchen

Add 上传docker部署说明文档

Yue vor 3 Wochen
Ursprung
Commit
d6fc1beebc

+ 2 - 0
.gitignore

@@ -64,9 +64,11 @@ build/
 /UI/dist/
 /UI/dist
 /UI/**/dist.rar
+/docs/部署文档/Deployment/images
 
 *.flattened-pom.xml
 /SERVER/**/vber/profile/
 UI/VAP_V3.VUE/pnpm-lock.yaml
 
 .data/
+

BIN
docs/~$更新说明.doc


+ 99 - 0
docs/部署文档/Deployment/chicken_farm/docker-compose.yml

@@ -0,0 +1,99 @@
+services:
+  chicken-farm_mysql:
+    image: mysql:8.0.42
+    container_name: cf_mysql
+    environment:
+      # 时区上海
+      - TZ=Asia/Shanghai
+      # root 密码
+      - MYSQL_ROOT_PASSWORD=rootcf
+      # 初始化数据库(后续的初始化sql会在这个库执行)
+      - MYSQL_DATABASE=ChickenFarmDB_V1
+    ports:
+      - "3306:3306"
+    volumes:
+      - ./mysql/data/:/var/lib/mysql/
+      - ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql
+    command:
+      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
+      --default-authentication-plugin=mysql_native_password
+      --character-set-server=utf8mb4
+      --collation-server=utf8mb4_general_ci
+      --explicit_defaults_for_timestamp=true
+      --lower_case_table_names=1
+    privileged: true
+    networks:
+      - chicken-net
+
+  chicken-farm_redis:
+    image: redis:7.2.8
+    container_name: cf_redis
+    ports:
+      - "6379:6379"
+    environment:
+      # 时区上海
+      TZ: Asia/Shanghai
+    volumes:
+      # 配置文件
+      #- ./redis/conf/redis.conf:/redis/config/redis.conf
+      # 数据文件
+      #- ../../.data/redis/data:/redis/data/:rw
+      #配置文件
+      - ./redis/conf/redis.conf:/redis/config/redis.conf
+      #数据文件
+      - ./redis/data:/redis/data/:rw
+    command: "redis-server /redis/config/redis.conf"
+    privileged: true
+    networks:
+      - chicken-net
+
+  chicken-farm_admin-server:
+    image: cf_admin-server:1.0.0
+    container_name: cf_admin-server
+    environment:
+      # 时区上海
+      TZ: Asia/Shanghai
+      #SERVER_PORT: 6080
+      JAVA_OPTS: >-
+        --spring.datasource.dynamic.datasource.master.url=jdbc:mysql://cf_mysql:3306/ChickenFarmDB_V1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+        --spring.datasource.dynamic.datasource.master.username=root
+        --spring.datasource.dynamic.datasource.master.password=rootcf
+        --spring.data.redis.host=cf_redis
+        --spring.data.redis.port=6379
+        --spring.data.redis.password=ChickenFarm2025
+    volumes:
+      # 配置文件
+      - ./server/:/vber/server/
+    privileged: true
+    ports:
+      - "8080:8080"
+    depends_on:
+      - chicken-farm_mysql
+      - chicken-farm_redis
+    networks:
+      - chicken-net
+
+  chicken-farm_admin-ui:
+    image: cf_admin-ui:1.0.0
+    container_name: cf_admin-ui
+    environment:
+      # 时区上海
+      TZ: Asia/Shanghai
+    depends_on:
+      - chicken-farm_admin-server
+    ports:
+      - "80:80"
+    volumes:
+      # 配置映射
+      - ./nginx/conf:/etc/nginx/conf.d
+      # 证书映射
+      - ./nginx/cert:/etc/nginx/cert
+      # 日志目录
+      - ./nginx/logs:/var/log/nginx
+    privileged: true
+    networks:
+      - chicken-net
+
+networks:
+  chicken-net:
+    external: false

+ 96 - 0
docs/部署文档/Deployment/chicken_farm/nginx/conf/default.conf

@@ -0,0 +1,96 @@
+
+upstream server {
+    ip_hash;
+    server cf_admin-server:8080;
+}
+
+server {
+    listen  80;
+    server_name  localhost;
+
+    # https配置参考 start
+    #listen       443 ssl;
+
+    # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
+    #ssl on;
+    #ssl_certificate      /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
+    #ssl_certificate_key  /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
+    #ssl_session_timeout 5m;
+    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
+    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+    #ssl_prefer_server_ciphers on;
+    # https配置参考 end
+
+
+    # 限制外网访问内网 actuator 相关路径
+    location ~ ^(/[^/]*)?/actuator(/.*)?$ {
+        return 403;
+    }
+
+    location / {
+        root   /usr/share/nginx/html; # docker映射路径 不允许更改
+        try_files $uri $uri/ /index.html;
+        index  index.html index.htm;
+    }
+
+    # 明确处理静态资源
+    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
+        root /usr/share/nginx/html;
+        expires 1y;
+        add_header Cache-Control "public, immutable";
+        try_files $uri =404;
+    }
+
+    location /prod-api/ {
+        proxy_set_header Host $http_host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header REMOTE-HOST $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        # websocket参数
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+
+        proxy_pass http://server/;
+    }
+
+    # 针对 SSE 的特殊配置
+    location /prod-api/resource/sse {
+        proxy_set_header Host $http_host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header REMOTE-HOST $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
+        # 1. 彻底禁用所有缓冲和压缩(关键修复)
+        proxy_buffering off;           # 禁用代理缓冲(必须)
+        proxy_request_buffering off;   # 禁用请求缓冲
+        proxy_cache off;               # 禁用缓存
+        gzip off;                      # 显式禁用gzip(避免压缩分块数据)
+        proxy_set_header Accept-Encoding "";  # 告诉后端不接受压缩数据
+
+        # 2. 延长超时时间(确保长连接不被Nginx主动关闭)
+        proxy_connect_timeout 3600s;   # 连接建立超时(1小时,远超业务需求)
+        proxy_send_timeout 3600s;      # 发送数据超时
+        proxy_read_timeout 3600s;      # 读取后端响应超时(核心:SSE长连接必须足够长)
+        send_timeout 3600s;            # 向客户端发送数据超时(补充配置)
+
+        # 3. HTTP/1.1 长连接配置(修复连接被强制关闭的问题)
+        proxy_http_version 1.1;        # 强制HTTP/1.1(分块传输依赖)
+        proxy_set_header Connection "";  # 清除Connection头,避免Nginx注入"close"
+
+        # 4. SSE响应头(添加always参数,确保所有状态码都生效)
+        add_header 'Content-Type' 'text/event-stream' always;
+        add_header 'Cache-Control' 'no-cache, no-store' always;  # 彻底禁用缓存
+        add_header 'Connection' 'keep-alive' always;
+        add_header 'X-Accel-Buffering' 'no' always;  # 额外禁用Nginx的加速缓冲(关键)
+
+        tcp_nodelay on;  # 确保数据立即发送
+
+        proxy_pass http://server/resource/sse;
+    }
+
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   html;
+    }
+}

+ 28 - 0
docs/部署文档/Deployment/chicken_farm/redis/conf/redis.conf

@@ -0,0 +1,28 @@
+# redis 密码
+requirepass ChickenFarm2025
+
+# key 监听器配置
+# notify-keyspace-events Ex
+
+# 配置持久化文件存储路径
+dir /redis/data
+# 配置rdb
+# 15分钟内有至少1个key被更改则进行快照
+save 900 1
+# 5分钟内有至少10个key被更改则进行快照
+save 300 10
+# 1分钟内有至少10000个key被更改则进行快照
+save 60 10000
+# 开启压缩
+rdbcompression yes
+# rdb文件名 用默认的即可
+dbfilename dump.rdb
+
+# 开启aof
+appendonly yes
+# 文件名
+appendfilename "appendonly.aof"
+# 持久化策略,no:不同步,everysec:每秒一次,always:总是同步,速度比较慢
+# appendfsync always
+appendfsync everysec
+# appendfsync no

+ 2 - 0
docs/部署文档/Deployment/chicken_farm/sql/init.sql

@@ -0,0 +1,2 @@
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;

BIN
docs/部署文档/Deployment/养鸡场管理系统部署说明.pdf


+ 107 - 0
docs/部署文档/养鸡场管理系统部署说明.md

@@ -0,0 +1,107 @@
+# <center> 养鸡场管理系统部署说明
+
+
+本文档详细说明了如何部署养鸡场管理系统。
+
+## 部署步骤
+
+### 1. 拷贝文件到服务器
+
+将 `Deployment` 目录下的所有内容拷贝到目标服务器上。
+
+
+### 2. 导入 Docker 镜像
+
+使用命令行工具,进入 `images` 目录,导入该目录下的 Docker 镜像:
+
+```bash
+cd /path/to/images
+# /path/to/换成自己的实际目录
+# 导入MySQL镜像
+docker load -i mysql_8.0.42.tar
+# 导入Redis镜像
+docker load -i redis_7.2.8.tar
+# 导入后端服务镜像
+docker load -i cf_admin-server_1.0.0.tar
+# 导入前端服务镜像
+docker load -i cf_admin-ui_1.0.0.tar
+```
+
+> 注意:具体的导入命令取决于镜像文件的格式及名称,请根据实际情况调整命令。
+
+
+### 3. 运行 docker-compose
+
+切换目录到 `chicken_farm`,运行以下命令启动服务:
+
+```bash
+cd /path/to/chicken_farm
+# /path/to/换成自己的实际目录
+docker-compose up -d
+```
+
+该命令将根据 [docker-compose.yml](chicken_farm/docker-compose.yml) 文件中定义的服务启动所有相关容器。
+
+> 注意:运行前请检查端口(MySQL:3306、Redis:6379、后端:8080、前端:80)是否被占用,如果某些端口被占用,请修改 `docker-compose.yml` 文件中的端口映射配置,再运行 docker-compose up -d 命令。
+
+
+运行完成后,将包含以下服务:
+- MySQL 数据库服务(端口: 3306)
+- Redis 服务(端口: 6379)
+- 后端服务(端口: 8080)
+- 前端服务(端口: 80)
+  
+> 注意:如果前端服务启动失败,请等待后端服务启动完成后,再重新启动前端服务。
+
+所有服务正常运行后,使用浏览器访问 http://your-server-ip:80 访问系统。
+
+### 4. 镜像升级
+
+当需要升级系统时,请按以下步骤操作:
+
+1. 停止当前运行的服务:
+   ```bash
+   cd /path/to/chicken_farm
+   # /path/to/换成自己的实际目录
+   docker-compose down
+   ```
+
+2. 备份重要数据:
+   ```bash
+   # 备份数据库数据
+   cp -r ./mysql/data /path/to/backup/mysql_data_$(date +%Y%m%d)
+   
+   # 备份Redis数据
+   cp -r ./redis/data /path/to/backup/redis_data_$(date +%Y%m%d)
+   ```
+
+3. 导入新的升级镜像:
+   ```bash
+   cd /path/to/images
+   # 根据实际的镜像文件格式执行导入命令,例如:
+   # docker load -i new_image_name.tar
+   ```
+
+4. 如有配置文件变更,请先备份原配置文件,再用新配置文件覆盖:
+   ```bash
+   # 备份并覆盖配置文件示例(根据实际情况调整)
+   cp ./nginx/conf/default.conf /path/to/backup/default.conf.backup
+   # cp new_default.conf ./nginx/conf/default.conf
+   ```
+
+5. 启动服务:
+   ```bash
+   cd /path/to/chicken_farm
+   # /path/to/换成自己的实际目录
+   docker-compose up -d
+   ```
+
+
+
+## 注意事项
+
+1. 请确保服务器已安装 Docker 和 docker-compose。
+2. 部署前请检查端口是否被占用。
+3. 如需修改配置,请在运行 docker-compose 命令前完成相关配置文件的修改。
+4. 升级前务必备份重要数据。
+5. 升级过程中服务会短暂中断,请选择合适的时间进行升级操作。