Files
011-ai-interview/docs/部署文档.md
2026-01-23 13:57:48 +08:00

5.1 KiB

AI 语音面试系统 - 部署文档

更新日期: 2026-01-21 状态: 已部署

一、服务器信息

项目
服务器 IP 47.107.172.23
SSH 用户名 root
SSH 密码 Nj861021
宝塔面板 http://47.107.172.23:8888/
宝塔 API Token PKdfnaInQL0P5ghB8SvwbrGcIpXWaEvq
域名解析 *.ai.ireborn.com.cn → 47.107.172.23
测试域名 *.test.ai.ireborn.com.cn

二、部署地址 (已上线)

服务 地址 状态
用户端 http://interview.test.ai.ireborn.com.cn
管理后台 http://interview.test.ai.ireborn.com.cn/admin
后端 API http://interview.test.ai.ireborn.com.cn/api/health
文件服务 https://files.test.ai.ireborn.com.cn

⚠️ 当前为简化版后端,完整功能代码需要手动上传后重新构建

三、Docker 部署

3.1 目录结构

/www/wwwroot/ai-interview/
├── deploy/
│   ├── docker-compose.yml
│   ├── Dockerfile.frontend
│   ├── Dockerfile.backend
│   ├── nginx/
│   │   └── frontend.conf
│   └── .env
├── frontend/
├── backend/
└── uploads/

3.2 环境变量配置

创建 /www/wwwroot/ai-interview/deploy/.env:

# Coze 配置
COZE_PAT_TOKEN=pat_nd1wU47WyPS9GCIyJ1clnH8h1WOQXGrYELX8w73TnSZaYbFdYD4swIhzcETBUbfT
COZE_BOT_ID=7595113005181386792

# 工作流 ID
COZE_WORKFLOW_A_ID=7597357422713798710
COZE_WORKFLOW_C_ID=7597376294612107318

# 文件服务器
FILE_SERVER_URL=https://files.test.ai.ireborn.com.cn
FILE_SERVER_TOKEN=ai_interview_2026_secret

3.3 部署命令

cd /www/wwwroot/ai-interview/deploy

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

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

3.4 端口映射

服务 容器端口 宿主机端口
Frontend 80 3000
Backend 8000 8000

四、Nginx 反向代理配置

4.1 前端 + API 合并 (推荐)

域名: interview.test.ai.ireborn.com.cn

server {
    listen 80;
    listen 443 ssl http2;
    server_name interview.test.ai.ireborn.com.cn;

    # SSL 证书 (宝塔自动配置)
    ssl_certificate /www/server/panel/vhost/cert/interview.test.ai.ireborn.com.cn/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/interview.test.ai.ireborn.com.cn/privkey.pem;

    # 前端
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # API 代理 (前端容器内部已处理,此处可选)
    location /api/ {
        proxy_pass http://127.0.0.1:8000/api/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 120s;
    }
}

4.2 独立 API 域名 (可选)

域名: interview-api.test.ai.ireborn.com.cn

server {
    listen 80;
    listen 443 ssl http2;
    server_name interview-api.test.ai.ireborn.com.cn;

    ssl_certificate /www/server/panel/vhost/cert/interview-api.test.ai.ireborn.com.cn/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/interview-api.test.ai.ireborn.com.cn/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 120s;
        proxy_connect_timeout 120s;
        
        # CORS
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    }
}

五、更新部署

cd /www/wwwroot/ai-interview

# 拉取最新代码
git pull origin main

# 重新构建并部署
cd deploy
docker-compose down
docker-compose up -d --build

# 查看状态
docker-compose ps

六、故障排查

6.1 查看容器日志

# 前端日志
docker logs ai-interview-frontend

# 后端日志
docker logs ai-interview-backend

6.2 进入容器调试

# 进入后端容器
docker exec -it ai-interview-backend /bin/sh

# 进入前端容器
docker exec -it ai-interview-frontend /bin/sh

6.3 常见问题

问题 解决方案
前端白屏 检查 nginx 配置,确保 try_files 指向 index.html
API 404 检查 proxy_pass 地址和端口
CORS 错误 在 nginx 添加 CORS 头
环境变量无效 确认 .env 文件存在且格式正确