Files
caiyunniu/docs/部署文档.md

2.9 KiB
Raw Blame History

云南智慧牛产业平台 - 部署与运维文档

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 本地构建

在开发机执行:

cd website
npm install
npm run build

构建完成后,生成的 dist 目录即为部署包。

3.2 上传文件

dist 目录内容上传至服务器:

scp -r dist/* user@server_ip:/opt/caiyunniu/nginx/html/website/

3.3 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

FROM openjdk:17-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

4.2 Docker Compose 编排

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