Skip to content

部署指南

部署环境要求

  • Linux 服务器(推荐 Ubuntu 20.04 LTS)
  • Docker 20.10+
  • Docker Compose 2.0+
  • Nginx 1.18+
  • MySQL 8.0+
  • Redis 6.0+

部署步骤

1. 服务器准备

1.1 更新系统

sudo apt update
sudo apt upgrade -y

1.2 安装必要工具

sudo apt install -y curl git nginx

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 克隆项目

git clone https://github.com/yourusername/blog-vue-flask.git
cd blog-vue-flask

2.2 配置环境变量

cp .env.example .env
# 编辑 .env 文件,配置必要的环境变量

2.3 构建和启动服务

docker-compose up -d --build

3. Nginx 配置

3.1 创建 Nginx 配置文件

sudo nano /etc/nginx/sites-available/blog-vue-flask

添加以下内容:

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

sudo apt install -y certbot python3-certbot-nginx

4.2 获取 SSL 证书

sudo certbot --nginx -d your-domain.com

5. 数据库备份

5.1 创建备份脚本

nano /usr/local/bin/backup-db.sh

添加以下内容:

#!/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 设置定时任务

sudo chmod +x /usr/local/bin/backup-db.sh
sudo crontab -e

添加以下内容:

0 2 * * * /usr/local/bin/backup-db.sh

6. 监控配置

6.1 安装 Prometheus

docker run -d \
    --name prometheus \
    -p 9090:9090 \
    -v /etc/prometheus:/etc/prometheus \
    prom/prometheus

6.2 安装 Grafana

docker run -d \
    --name grafana \
    -p 3001:3000 \
    grafana/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. 服务重启

# 重启所有服务
docker-compose restart

# 重启单个服务
docker-compose restart app

3. 更新部署

# 拉取最新代码
git pull

# 重新构建和启动
docker-compose up -d --build

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 :3000sudo 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