# 考陪练系统 SQL 执行器服务器部署指南

## 服务器信息
- **IP地址**: 120.79.247.16
- **域名**: aiedu.ireborn.com.cn
- **端口**: 8000
- **数据库**: MySQL (已配置在同一服务器)

## 部署步骤

### 1. 连接到服务器

```bash
ssh root@120.79.247.16
```

### 2. 准备环境

```bash
# 更新系统包
apt update && apt upgrade -y

# 安装 Python 3.9+
apt install python3 python3-pip python3-venv -y

# 安装 MySQL 客户端（如果需要）
apt install mysql-client -y

# 安装 Git
apt install git -y

# 创建应用目录
mkdir -p /opt/kaopeilian
cd /opt/kaopeilian
```

### 3. 克隆或上传代码

```bash
# 如果使用 Git
git clone <your-repo-url> backend
cd backend

# 或者使用 scp 上传
# 在本地执行：
# scp -r /Users/nongjun/Desktop/Ai公司/本地开发与测试/kaopeilian-backend root@120.79.247.16:/opt/kaopeilian/backend
```

### 4. 创建虚拟环境和安装依赖

```bash
cd /opt/kaopeilian/backend

# 创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 升级 pip
pip install --upgrade pip

# 安装依赖
pip install -r requirements.txt
```

### 5. 配置环境变量

创建 `.env` 文件：

```bash
cat > .env << EOF
# 应用配置
APP_NAME=KaoPeiLian
DEBUG=False
HOST=0.0.0.0
PORT=8000

# 数据库配置
DATABASE_URL=mysql+aiomysql://root:Kaopeilian2025!@#@localhost:3306/kaopeilian?charset=utf8mb4

# Redis配置（如果有）
REDIS_URL=redis://localhost:6379/0

# JWT配置
SECRET_KEY=your-production-secret-key-at-least-32-chars
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

# CORS配置
CORS_ORIGINS=["http://120.79.247.16:8000", "http://aiedu.ireborn.com.cn", "http://localhost:3000"]

# 日志配置
LOG_LEVEL=INFO
LOG_FORMAT=json
EOF
```

### 6. 创建 systemd 服务

```bash
cat > /etc/systemd/system/kaopeilian-backend.service << EOF
[Unit]
Description=KaoPeiLian Backend API
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/kaopeilian/backend
Environment="PATH=/opt/kaopeilian/backend/venv/bin"
ExecStart=/opt/kaopeilian/backend/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
```

### 7. 启动服务

```bash
# 重新加载 systemd
systemctl daemon-reload

# 启用服务（开机自启）
systemctl enable kaopeilian-backend

# 启动服务
systemctl start kaopeilian-backend

# 查看服务状态
systemctl status kaopeilian-backend

# 查看日志
journalctl -u kaopeilian-backend -f
```

### 8. 配置防火墙

```bash
# 如果使用 ufw
ufw allow 8000/tcp
ufw reload

# 如果使用 iptables
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
```

### 9. 测试部署

```bash
# 健康检查
curl http://localhost:8000/health

# 测试 SQL 执行器（简化认证）
curl -X POST http://localhost:8000/api/v1/sql/execute-simple \
  -H "X-API-Key: dify-2025-kaopeilian" \
  -H "Content-Type: application/json" \
  -d '{
    "sql": "SELECT COUNT(*) as total FROM users"
  }'
```

## 更新部署

```bash
# 进入项目目录
cd /opt/kaopeilian/backend

# 拉取最新代码（如果使用 Git）
git pull

# 或者重新上传文件

# 重启服务
systemctl restart kaopeilian-backend
```

## 日志和监控

### 查看实时日志
```bash
journalctl -u kaopeilian-backend -f
```

### 查看错误日志
```bash
journalctl -u kaopeilian-backend -p err -n 100
```

### 检查服务状态
```bash
systemctl status kaopeilian-backend
```

## 故障排除

### 1. 服务无法启动
```bash
# 检查 Python 路径
which python3

# 检查虚拟环境
ls -la /opt/kaopeilian/backend/venv/bin/

# 手动测试启动
cd /opt/kaopeilian/backend
source venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8000
```

### 2. 数据库连接失败
```bash
# 测试数据库连接
mysql -h localhost -u root -p'Kaopeilian2025!@#' -e "SELECT 1"

# 检查数据库服务
systemctl status mysql
```

### 3. 端口被占用
```bash
# 查看端口占用
netstat -tlnp | grep 8000

# 或
lsof -i :8000
```

## 性能优化（可选）

### 使用 Gunicorn + Uvicorn
```bash
# 安装 gunicorn
pip install gunicorn

# 修改服务文件的 ExecStart
ExecStart=/opt/kaopeilian/backend/venv/bin/gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
```

### 使用 Nginx 反向代理
```bash
# 安装 Nginx
apt install nginx -y

# 配置 Nginx
cat > /etc/nginx/sites-available/kaopeilian << EOF
server {
    listen 80;
    server_name aiedu.ireborn.com.cn;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }
}
EOF

# 启用配置
ln -s /etc/nginx/sites-available/kaopeilian /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
```

## 安全建议

1. **修改默认 API Key**：编辑 `/opt/kaopeilian/backend/app/core/simple_auth.py`
2. **使用 HTTPS**：配置 SSL 证书
3. **限制 IP 访问**：只允许 Dify 服务器访问
4. **定期备份**：数据库和代码
5. **监控日志**：及时发现异常

## Dify 配置

部署完成后，在 Dify 中使用：
- **URL**: http://120.79.247.16:8000/api/v1/sql/execute-simple
- **认证方式**: 请求头
- **X-API-Key**: dify-2025-kaopeilian


