Files
caiyunniu/docs/部署文档.md

122 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 云南智慧牛产业平台 - 部署与运维文档
## 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`