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