运行与部署

本文档介绍如何运行 Mindra 开源版本以及部署相关的事项。

运行应用

前提条件

运行前请确保:

  1. Python 3.8+ 已安装
  2. 所需 Python 包已安装 (PySide6, openai, pymysql, PyYAML)
  3. MySQL 数据库已配置(如需用户管理功能)
  4. config.yaml 配置文件已正确配置

启动应用

在项目根目录下运行:

python main.py

首次运行

首次运行时,应用会:

  1. 创建 Mindra_data 目录用于数据存储
  2. 弹出登录对话框
  3. 您需要注册新账户或登录现有账户

注册新用户

  1. 在登录对话框点击「注册」按钮
  2. 输入用户名、密码和激活码
  3. 点击「注册」完成注册
  4. 使用新账户登录

注意: 激活码需要预先在数据库中插入。

运行参数

调试模式

如需查看详细日志,可以直接运行,错误信息会输出到控制台。

指定配置文件

如果配置文件不在默认位置,需要修改 user_operations.py 中的配置路径:

# 修改此行
config_path = Path("config.yaml")

# 改为绝对路径
config_path = Path("your/custom/path/config.yaml")

打包分发

使用 PyInstaller 打包

  1. 安装 PyInstaller:
pip install pyinstaller
  1. 打包应用:
pyinstaller --onefile --windowed --name Mindra --icon=Mindra_logo.ico main.py

参数说明:

参数 说明
--onefile 打包为单个可执行文件
--windowed 不显示控制台窗口
--name 指定输出文件名
--icon 设置应用图标
--add-data 添加额外文件(如 config.yaml
  1. 添加额外文件:
# Windows
pyinstaller --onefile --windowed --name Mindra --add-data "config.yaml;." --add-data "homepage.html;." --icon=Mindra_logo.ico main.py

# macOS/Linux
pyinstaller --onefile --windowed --name Mindra --add-data "config.yaml:." --add-data "homepage.html:." --icon=Mindra_logo.ico main.py

打包后的文件结构

dist/
└── Mindra.exe        # 可执行文件(Windows)
    # 或 Mindra.app(macOS)
    # 或 Mindra(Linux)

创建安装包

Windows - 使用 Inno Setup

  1. 下载并安装 Inno Setup
  2. 创建安装脚本 setup.iss
[Setup]
AppName=Mindra
AppVersion=1.0.0
DefaultDirName={pf}\Mindra
DefaultGroupName=Mindra
OutputDir=.
OutputBaseFilename=Mindra_Setup
Compression=lzma
SolidCompression=yes

[Files]
Source: "dist\Mindra.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "config.yaml"; DestDir: "{app}"; Flags: ignoreversion
Source: "homepage.html"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\Mindra"; Filename: "{app}\Mindra.exe"
Name: "{commondesktop}\Mindra"; Filename: "{app}\Mindra.exe"
  1. 编译安装包

macOS - 创建 DMG

# 创建 DMG 文件
hdiutil create -volname Mindra -srcfolder dist/Mindra.app -ov -format UDZO Mindra.dmg

部署注意事项

数据库部署

生产环境数据库配置

  1. 使用强密码
  2. 限制数据库访问 IP
  3. 定期备份数据库
-- 备份数据库
mysqldump -u root -p mindra > mindra_backup.sql

-- 恢复数据库
mysql -u root -p mindra < mindra_backup.sql

配置文件管理

生产环境配置

在生产环境中,建议:

  1. 使用专用的数据库用户
  2. 定期更换 API 密钥
  3. 启用数据库 SSL 连接(如支持)
database:
  host: "production-db.example.com"
  database: "mindra"
  user: "mindra_prod_user"
  password: "strong_password_here"

性能优化

数据库优化

-- 为 users 表创建索引
CREATE INDEX idx_username ON users(username);

-- 定期优化表
OPTIMIZE TABLE users;
OPTIMIZE TABLE activation;

应用优化

  • 使用连接池管理数据库连接
  • 启用 PySide6 的硬件加速
  • 减少不必要的日志输出

常见问题

应用无法启动

问题: 双击 exe 文件后无反应

解决方案:

  1. 检查是否缺少 config.yaml 文件
  2. 在命令行中运行 exe 文件查看错误信息
  3. 确保依赖文件在正确位置

登录对话框不显示

问题: 应用启动后没有弹出登录对话框

解决方案: 检查 config.yaml 中的数据库配置是否正确。

打包后无法运行

问题: PyInstaller 打包后程序无法运行

解决方案:

  1. 检查是否所有依赖都被正确打包
  2. 使用 --hidden-import 添加隐式导入:
pyinstaller --onefile --windowed --hidden-import pymysql --hidden-import openai main.py

中文字体显示问题

问题: 界面中文显示为方块

解决方案: 确保系统安装了中文字体,或在样式中指定中文字体:

# 在 style_settings.py 中指定字体
font-family: "Microsoft YaHei", "SimHei", sans-serif;

更新与维护

版本更新

  1. 备份配置文件和数据库
  2. 拉取最新代码
  3. 安装新增的依赖
  4. 运行更新后的应用

日志管理

建议在代码中添加日志记录,便于问题排查:

import logging

logging.basicConfig(
    filename='mindra.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

logging.info("应用启动")
logging.error("数据库连接失败")