Kamixitong/docs/DEPLOYMENT.md

3.4 KiB
Raw Blame History

部署说明

本文档介绍如何将KaMiXiTong系统部署到生产环境并通过域名访问。

域名访问配置

问题描述

在本地开发环境中,系统默认通过 http://localhost:5000 访问。当部署到服务器并通过域名访问时,前端页面中的接口调用可能会仍然指向 localhost:5000,导致接口调用失败。

解决方案

系统已通过修改前端JavaScript中的 apiRequest 函数来自动检测当前访问的主机并构建正确的API调用地址。

前端JavaScript现在会使用 window.location.origin 来获取当前访问的完整域名并自动构建完整的API URL。

配置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";
    }
}

环境变量配置

在生产环境中,建议通过环境变量来配置应用:

# 复制示例配置文件
cp .env.example .env

# 编辑配置文件
nano .env

重要的环境变量包括:

  • FLASK_ENV: 设置为 production
  • SECRET_KEY: 设置为强随机字符串
  • DATABASE_URL: 数据库连接URL
  • HOST: 监听地址,生产环境建议设置为 0.0.0.0

使用Gunicorn启动应用

在生产环境中推荐使用Gunicorn作为WSGI服务器

# 安装Gunicorn
pip install gunicorn

# 启动应用
gunicorn -w 4 -b 127.0.0.1:5000 run:app

使用Systemd管理服务Linux

创建Systemd服务文件

# /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

启用并启动服务:

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应用处理静态文件。