# 云南智慧牛产业平台 - 部署与运维文档 ## 1. 部署环境 - **操作系统**: CentOS 10 64位 - **Web服务器**: Nginx 1.24+ - **容器引擎**: Docker 24.0+ - **容器编排**: Docker Compose 2.20+ ## 2. 目录结构规范 服务器根目录建议为 `/opt/caiyunniu/`: ``` /opt/caiyunniu/ ├── docker-compose.yml # 容器编排文件 ├── nginx/ │ ├── conf.d/ # Nginx 配置文件 │ ├── certs/ # SSL 证书 │ └── html/ # 前端静态资源 │ ├── website/ # 官网构建产物 (dist) │ └── admin/ # 管理后台构建产物 (dist) ├── mysql/ │ ├── data/ # 数据库数据卷 │ └── init/ # 初始化 SQL 脚本 ├── redis/ │ └── data/ # Redis 数据卷 └── logs/ # 应用日志 ``` ## 3. 前端部署 (Website) ### 3.1 本地构建 在开发机执行: ```bash cd website npm install npm run build ``` 构建完成后,生成的 `dist` 目录即为部署包。 ### 3.2 上传文件 将 `dist` 目录内容上传至服务器: ```bash scp -r dist/* user@server_ip:/opt/caiyunniu/nginx/html/website/ ``` ### 3.3 Nginx 配置示例 ```nginx server { listen 80; server_name www.caiyunniu.com; # 强制跳转 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.caiyunniu.com; ssl_certificate /etc/nginx/certs/caiyunniu.pem; ssl_certificate_key /etc/nginx/certs/caiyunniu.key; # 官网前端 location / { root /usr/share/nginx/html/website; index index.html; try_files $uri $uri/ /index.html; # Vue Router History 模式支持 } # 后端 API 代理 location /api/ { proxy_pass http://backend-service:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ## 4. 后端部署 (Backend) ### 4.1 Docker 镜像构建 在后端项目根目录创建 `Dockerfile`: ```dockerfile FROM openjdk:17-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` ### 4.2 Docker Compose 编排 ```yaml version: '3' services: backend-service: build: ./backend ports: - "8080:8080" environment: - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/caiyunniu?useSSL=false - SPRING_REDIS_HOST=redis depends_on: - mysql - redis mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: strong_password volumes: - ./mysql/data:/var/lib/mysql redis: image: redis:6.0 volumes: - ./redis/data:/data ``` ## 5. 运维常用命令 - **启动所有服务**: `docker-compose up -d` - **查看日志**: `docker-compose logs -f backend-service` - **重启服务**: `docker-compose restart backend-service` - **Nginx 重载配置**: `docker exec -it nginx nginx -s reload`