Files

4.7 KiB
Raw Permalink Blame History

部署指南

目标服务器

  • 服务器: 阿里云 ECS (CentOS 7)
  • IP: 47.115.32.206
  • 连接: ssh -i ~/.ssh/id_rsa root@47.115.32.206

部署架构

┌─────────────────────────────┐
│      阿里云 ECS (CentOS 7)   │
│                             │
│   ┌─────────────────────┐   │
│   │  Docker Container   │   │
│   │   piano-plan:5000   │   │
│   └─────────────────────┘   │
│          ▲   │               │
│          │   │               │
│   ┌──────┴───┴──────────┐   │
│   │  数据卷 (宿主机目录)   │   │
│   │  /data               │   │
│   │  /output             │   │
│   │  /config             │   │
│   └──────────────────────┘   │
└─────────────────────────────┘

数据分离(关键)

目录 容器内 宿主机 说明
数据库 /app/data ./data SQLite数据库
PDF输出 /app/output ./output 导出的PDF
API配置 /app/config ./config LLM配置

优势:

  • 容器删除重建,数据不丢失
  • 备份只需备份宿主机目录

部署步骤

1. 上传代码

# 在本地打包
cd projects/青年钢琴集体课/练习方案系统
tar -czvf piano-plan.tar.gz \
  --exclude=venv \
  --exclude=__pycache__ \
  --exclude=.git \
  -f - .

# 上传到服务器
scp -i ~/.ssh/id_rsa piano-plan.tar.gz root@47.115.32.206:/opt/

# SSH登录服务器
ssh -i ~/.ssh/id_rsa root@47.115.32.206

2. 服务器准备

# 安装 Docker(如果未安装)
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker

# 安装 docker-composeCentOS 7
curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

cd /opt
mkdir -p piano-plan && cd piano-plan
tar -xzf ../piano-plan.tar.gz --strip-components=1

# 创建数据目录
mkdir -p data output config

# 开放端口
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload

3. 启动容器

# 方式一:使用 docker-compose(推荐)
docker-compose up -d --build

# 方式二:手动 docker run
docker build -t piano-plan .
docker run -d \
  --name piano-plan \
  -p 5000:5000 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/output:/app/output \
  -v $(pwd)/config:/app/config \
  -e FLASK_ENV=production \
  piano-plan

4. 验证部署

# 检查容器状态
docker ps | grep piano-plan

# 检查日志
docker logs piano-plan

# 访问测试
curl http://localhost:5000/

5. 配置防火墙

# 开放5000端口(如果需要)
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload

6. 配置 Nginx 反向代理(可选)

server {
    listen 80;
    server_name piano.yourdomain.com;  # 替换为实际域名

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

备份与恢复

备份

# 停止服务
docker-compose stop

# 打包数据
tar -czvf piano-plan-backup-$(date +%Y%m%d).tar.gz data/ output/ config/

# 重启服务
docker-compose start

恢复

# 停止服务
docker-compose stop

# 解压备份
tar -xzf piano-plan-backup-20260418.tar.gz

# 重启服务
docker-compose start

更新部署

# 拉取新代码(方式一:git pull)
git pull

# 或 上传新代码(方式二)
# 重复"上传代码"步骤

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

# 数据不会丢失(挂载卷)

常用命令

# 查看日志
docker logs -f piano-plan

# 重启服务
docker-compose restart

# 停止服务
docker-compose stop

# 删除容器(数据不丢失)
docker-compose down

# 完全删除(包括镜像)
docker-compose down --rmi local

故障排查

容器启动失败

# 查看日志
docker logs piano-plan

# 检查端口
netstat -tlnp | grep 5000

数据库问题

# 进入容器检查
docker exec -it piano-plan sh

# 检查数据目录
ls -la /app/data/

版本信息

日期 版本 说明
2026-04-18 V1.2 初始部署版本,含用户/角色/班级管理

联系

部署完成后访问: http://47.115.32.206:5000