Kamixitong/docs/DEPLOYMENT.md

134 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署说明
本文档介绍如何将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应用处理静态文件。