Kamixitong/docs/DEPLOYMENT.md

134 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2025-11-17 12:56:43 +08:00
# 部署说明
本文档介绍如何将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应用处理静态文件。