# 部署说明 本文档介绍如何将KaMiXiTong系统部署到生产环境并通过域名访问。 ## 域名访问配置 ### 问题描述 在本地开发环境中,系统默认通过 `http://localhost:5000` 访问。当部署到服务器并通过域名访问时,前端页面中的接口调用可能会仍然指向 `localhost:5000`,导致接口调用失败。 ### 解决方案 系统已通过修改前端JavaScript中的 `apiRequest` 函数来自动检测当前访问的主机并构建正确的API调用地址。 前端JavaScript现在会使用 `window.location.origin` 来获取当前访问的完整域名,并自动构建完整的API URL。 ### 配置Nginx反向代理 推荐使用Nginx作为反向代理服务器。以下是一个Nginx配置示例: ```nginx server { listen 80; server_name your-domain.com; # 重定向到HTTPS(可选) return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; # SSL证书配置 ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; # 代理到Flask应用 location / { proxy_pass http://127.0.0.1:5000; 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; } # 静态文件直接由Nginx处理 location /static/ { alias /path/to/your/app/static/; expires 1y; add_header Cache-Control "public, immutable"; } } ``` ### 环境变量配置 在生产环境中,建议通过环境变量来配置应用: ```bash # 复制示例配置文件 cp .env.example .env # 编辑配置文件 nano .env ``` 重要的环境变量包括: - `FLASK_ENV`: 设置为 `production` - `SECRET_KEY`: 设置为强随机字符串 - `DATABASE_URL`: 数据库连接URL - `HOST`: 监听地址,生产环境建议设置为 `0.0.0.0` ### 使用Gunicorn启动应用 在生产环境中,推荐使用Gunicorn作为WSGI服务器: ```bash # 安装Gunicorn pip install gunicorn # 启动应用 gunicorn -w 4 -b 127.0.0.1:5000 run:app ``` ### 使用Systemd管理服务(Linux) 创建Systemd服务文件: ```ini # /etc/systemd/system/kamaxitong.service [Unit] Description=KaMiXiTong Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/path/to/your/app Environment="FLASK_ENV=production" ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 run:app Restart=always [Install] WantedBy=multi-user.target ``` 启用并启动服务: ```bash sudo systemctl enable kamaxitong.service sudo systemctl start kamaxitong.service ``` ## 常见问题 ### Q: 前端页面能正常访问,但API调用失败怎么办? A: 检查以下几点: 1. 确认Nginx配置正确,特别是 `proxy_set_header` 指令 2. 确认Flask应用监听地址设置为 `0.0.0.0` 3. 检查浏览器开发者工具中的网络请求,确认API请求的URL是否正确 ### Q: 如何确认域名配置是否正确? A: 可以通过以下方式检查: 1. 在浏览器中打开应用,按F12打开开发者工具 2. 切换到Network标签页 3. 刷新页面,观察API请求的URL是否为域名地址而非localhost ### Q: 静态文件无法加载怎么办? A: 确保Nginx配置中正确设置了静态文件的location块,或者让Flask应用处理静态文件。