部署指南
部署环境要求
- Linux 服务器(推荐 Ubuntu 20.04 LTS)
- Docker 20.10+
- Docker Compose 2.0+
- Nginx 1.18+
- MySQL 8.0+
- Redis 6.0+
部署步骤
1. 服务器准备
1.1 更新系统
1.2 安装必要工具
1.3 安装 Docker
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. 项目部署
2.1 克隆项目
2.2 配置环境变量
2.3 构建和启动服务
3. Nginx 配置
3.1 创建 Nginx 配置文件
添加以下内容:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
3.2 启用站点配置
sudo ln -s /etc/nginx/sites-available/blog-vue-flask /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
4. SSL 配置
4.1 安装 Certbot
4.2 获取 SSL 证书
5. 数据库备份
5.1 创建备份脚本
添加以下内容:
#!/bin/bash
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
docker exec blog-vue-flask-db mysqldump -u root -p$MYSQL_ROOT_PASSWORD blog > $BACKUP_DIR/backup_$DATE.sql
5.2 设置定时任务
添加以下内容:
6. 监控配置
6.1 安装 Prometheus
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /etc/prometheus:/etc/prometheus \
prom/prometheus
6.2 安装 Grafana
维护指南
1. 日志查看
# 查看应用日志
docker-compose logs -f app
# 查看数据库日志
docker-compose logs -f db
# 查看 Nginx 日志
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
2. 服务重启
3. 更新部署
4. 数据库维护
# 进入数据库容器
docker exec -it blog-vue-flask-db mysql -u root -p
# 备份数据库
docker-compose exec -T db mysqldump -u root -p blog > backup.sql
# 恢复数据库
docker-compose exec -T db mysql -u root -p blog < backup.sql
故障排除
1. 服务无法启动
- 检查日志:
docker-compose logs - 检查端口占用:
sudo lsof -i :3000和sudo lsof -i :5000 - 检查环境变量:
cat .env
2. 数据库连接问题
- 检查数据库容器状态:
docker ps | grep db - 检查数据库日志:
docker-compose logs db - 测试数据库连接:
docker exec -it blog-vue-flask-db mysql -u root -p
3. Nginx 问题
- 检查 Nginx 配置:
sudo nginx -t - 检查 Nginx 日志:
sudo tail -f /var/log/nginx/error.log - 检查防火墙设置:
sudo ufw status
4. 其他问题
- 检查 Docker 容器状态:
docker ps - 检查 Docker 日志:
docker-compose logs - 检查系统资源:
docker stats