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