528 lines
11 KiB
Markdown
528 lines
11 KiB
Markdown
|
|
# KaMiXiTong 软件授权管理系统 - MySQL 部署指南
|
|||
|
|
|
|||
|
|
📖 **本指南专为小白用户设计,一步一步教你如何部署 KaMiXiTong 系统**
|
|||
|
|
|
|||
|
|
## 📋 目录
|
|||
|
|
|
|||
|
|
1. [系统要求](#系统要求)
|
|||
|
|
2. [MySQL 数据库安装](#mysql-数据库安装)
|
|||
|
|
3. [Python 环境配置](#python-环境配置)
|
|||
|
|
4. [项目部署](#项目部署)
|
|||
|
|
5. [启动服务](#启动服务)
|
|||
|
|
6. [常见问题解决](#常见问题解决)
|
|||
|
|
7. [维护与管理](#维护与管理)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 系统要求
|
|||
|
|
|
|||
|
|
### 操作系统支持
|
|||
|
|
- ✅ Windows 10/11
|
|||
|
|
- ✅ Windows Server 2016/2019/2022
|
|||
|
|
- ✅ Ubuntu 18.04/20.04/22.04
|
|||
|
|
- ✅ CentOS 7/8
|
|||
|
|
- ✅ macOS 10.15+
|
|||
|
|
|
|||
|
|
### 硬件要求
|
|||
|
|
- **内存**: 最少 2GB,推荐 4GB+
|
|||
|
|
- **硬盘**: 最少 5GB 可用空间
|
|||
|
|
- **网络**: 能够连接互联网(下载依赖包)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🗄️ MySQL 数据库安装
|
|||
|
|
|
|||
|
|
### Windows 系统安装 MySQL
|
|||
|
|
|
|||
|
|
#### 方法一:使用官方安装包(推荐新手)
|
|||
|
|
|
|||
|
|
1. **下载 MySQL**
|
|||
|
|
```
|
|||
|
|
访问官网:https://dev.mysql.com/downloads/mysql/
|
|||
|
|
选择:MySQL Community Server
|
|||
|
|
下载:Windows (x86, 64-bit), MSI Installer
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **安装步骤**
|
|||
|
|
- 双击下载的 `.msi` 文件
|
|||
|
|
- 选择 "Developer Default" 开发者默认配置
|
|||
|
|
- 点击 "Execute" 执行安装
|
|||
|
|
- 配置 root 密码(请记住这个密码!)
|
|||
|
|
- 启动 MySQL 服务
|
|||
|
|
|
|||
|
|
3. **验证安装**
|
|||
|
|
```cmd
|
|||
|
|
# 打开命令提示符,输入:
|
|||
|
|
mysql --version
|
|||
|
|
# 应该显示版本信息
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方法二:使用 XAMPP(简单快捷)
|
|||
|
|
|
|||
|
|
1. **下载 XAMPP**
|
|||
|
|
```
|
|||
|
|
访问官网:https://www.apachefriends.org/
|
|||
|
|
下载适合你系统的 XAMPP 版本
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **安装和启动**
|
|||
|
|
- 安装 XAMPP(一路下一步即可)
|
|||
|
|
- 打开 XAMPP 控制面板
|
|||
|
|
- 启动 MySQL 和 Apache 服务
|
|||
|
|
|
|||
|
|
### Ubuntu 系统安装 MySQL
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 更新软件包列表
|
|||
|
|
sudo apt update
|
|||
|
|
|
|||
|
|
# 安装 MySQL 服务器
|
|||
|
|
sudo apt install mysql-server -y
|
|||
|
|
|
|||
|
|
# 安全配置
|
|||
|
|
sudo mysql_secure_installation
|
|||
|
|
|
|||
|
|
# 启动 MySQL 服务
|
|||
|
|
sudo systemctl start mysql
|
|||
|
|
sudo systemctl enable mysql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### CentOS 系统安装 MySQL
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 下载 MySQL 仓库
|
|||
|
|
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
|
|||
|
|
|
|||
|
|
# 安装 MySQL
|
|||
|
|
sudo yum install mysql-community-server -y
|
|||
|
|
|
|||
|
|
# 启动 MySQL 服务
|
|||
|
|
sudo systemctl start mysqld
|
|||
|
|
sudo systemctl enable mysqld
|
|||
|
|
|
|||
|
|
# 查看临时密码
|
|||
|
|
sudo grep 'temporary password' /var/log/mysqld.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐍 Python 环境配置
|
|||
|
|
|
|||
|
|
### 检查 Python 版本
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查 Python 版本(需要 3.7+)
|
|||
|
|
python --version
|
|||
|
|
# 或者
|
|||
|
|
python3 --version
|
|||
|
|
|
|||
|
|
# 如果没有安装 Python,请访问 https://www.python.org/downloads/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 安装项目依赖
|
|||
|
|
|
|||
|
|
#### 方法一:使用自动安装脚本(推荐新手)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 进入项目目录
|
|||
|
|
cd /path/to/KaMiXiTong
|
|||
|
|
|
|||
|
|
# 运行自动安装脚本
|
|||
|
|
python install_deps.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方法二:手动安装
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 进入项目目录
|
|||
|
|
cd /path/to/KaMiXiTong
|
|||
|
|
|
|||
|
|
# 安装依赖包
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**如果安装过程中遇到错误,试试这个:**
|
|||
|
|
```bash
|
|||
|
|
# 升级 pip
|
|||
|
|
pip install --upgrade pip
|
|||
|
|
|
|||
|
|
# 重新安装依赖
|
|||
|
|
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
|||
|
|
|
|||
|
|
# 如果还是有问题,尝试单独安装关键依赖
|
|||
|
|
pip install cryptography==41.0.4
|
|||
|
|
pip install Flask==2.3.3
|
|||
|
|
pip install Flask-SQLAlchemy==3.0.5
|
|||
|
|
pip install PyMySQL==1.1.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 项目部署
|
|||
|
|
|
|||
|
|
### 第一步:配置数据库连接
|
|||
|
|
|
|||
|
|
1. **找到配置文件**
|
|||
|
|
```
|
|||
|
|
在项目根目录找到 .env 文件
|
|||
|
|
如果没有,复制 .env.example 为 .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **编辑数据库配置**
|
|||
|
|
```bash
|
|||
|
|
# 用记事本或编辑器打开 .env 文件
|
|||
|
|
# 找到这一行:
|
|||
|
|
DATABASE_URL=mysql+pymysql://root:taiyi1224@localhost/kamaxitong
|
|||
|
|
|
|||
|
|
# 修改为你的 MySQL 信息:
|
|||
|
|
# 格式:mysql+pymysql://用户名:密码@主机地址/数据库名
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **配置说明**
|
|||
|
|
- `root`:MySQL 用户名
|
|||
|
|
- `taiyi1224`:MySQL 密码(替换成你自己的密码)
|
|||
|
|
- `localhost`:数据库地址(本地部署就用 localhost)
|
|||
|
|
- `kamaxitong`:数据库名称
|
|||
|
|
|
|||
|
|
### 第二步:创建数据库
|
|||
|
|
|
|||
|
|
#### 方法一:使用命令行(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 登录 MySQL
|
|||
|
|
mysql -u root -p
|
|||
|
|
|
|||
|
|
# 输入密码后,创建数据库
|
|||
|
|
CREATE DATABASE kamaxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|||
|
|
|
|||
|
|
# 查看数据库是否创建成功
|
|||
|
|
SHOW DATABASES;
|
|||
|
|
|
|||
|
|
# 退出 MySQL
|
|||
|
|
EXIT;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方法二:使用图形界面工具
|
|||
|
|
|
|||
|
|
**phpMyAdmin 用户:**
|
|||
|
|
1. 打开 phpMyAdmin 网页界面
|
|||
|
|
2. 点击 "新建数据库"
|
|||
|
|
3. 数据库名称:`kamaxitong`
|
|||
|
|
4. 排序规则:`utf8mb4_unicode_ci`
|
|||
|
|
5. 点击创建
|
|||
|
|
|
|||
|
|
**Navicat 用户:**
|
|||
|
|
1. 连接到 MySQL 服务器
|
|||
|
|
2. 右键点击连接,选择 "新建数据库"
|
|||
|
|
3. 输入数据库名:`kamaxitong`
|
|||
|
|
4. 字符集选择:`utf8mb4`
|
|||
|
|
5. 排序规则选择:`utf8mb4_unicode_ci`
|
|||
|
|
|
|||
|
|
### 第三步:测试数据库连接
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 在项目目录下运行测试
|
|||
|
|
python -c "
|
|||
|
|
from app import create_app, db
|
|||
|
|
app = create_app()
|
|||
|
|
with app.app_context():
|
|||
|
|
try:
|
|||
|
|
db.engine.execute('SELECT 1')
|
|||
|
|
print('✅ 数据库连接成功!')
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f'❌ 数据库连接失败:{e}')
|
|||
|
|
"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第四步:初始化数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 运行数据库初始化脚本
|
|||
|
|
python init_db.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**如果成功,你会看到类似这样的输出:**
|
|||
|
|
```
|
|||
|
|
==================================================
|
|||
|
|
KaMiXiTong 数据库初始化开始...
|
|||
|
|
==================================================
|
|||
|
|
1. 清理现有数据库表...
|
|||
|
|
✓ 已删除所有现有表
|
|||
|
|
|
|||
|
|
2. 创建数据库表结构...
|
|||
|
|
✓ 已创建所有数据表
|
|||
|
|
|
|||
|
|
3. 插入初始数据...
|
|||
|
|
创建默认管理员账号...
|
|||
|
|
✓ 已创建管理员账号 (admin/admin123, test_admin/test123)
|
|||
|
|
创建示例产品...
|
|||
|
|
✓ 已创建3个示例产品
|
|||
|
|
创建版本信息...
|
|||
|
|
✓ 已创建6个版本信息
|
|||
|
|
创建示例许可证...
|
|||
|
|
✓ 已创建6个示例许可证
|
|||
|
|
创建示例设备...
|
|||
|
|
✓ 已创建6个示例设备
|
|||
|
|
创建示例工单...
|
|||
|
|
✓ 已创建5个示例工单
|
|||
|
|
✓ 所有初始数据插入完成
|
|||
|
|
|
|||
|
|
4. 数据库初始化完成!
|
|||
|
|
|
|||
|
|
==================================================
|
|||
|
|
数据库初始化信息统计
|
|||
|
|
==================================================
|
|||
|
|
管理员账号 : 2 条记录
|
|||
|
|
产品 : 3 条记录
|
|||
|
|
版本 : 6 条记录
|
|||
|
|
许可证 : 6 条记录
|
|||
|
|
设备 : 6 条记录
|
|||
|
|
工单 : 5 条记录
|
|||
|
|
|
|||
|
|
==================================================
|
|||
|
|
默认登录信息
|
|||
|
|
==================================================
|
|||
|
|
超级管理员: admin / admin123
|
|||
|
|
普通管理员: test_admin / test123
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🌟 启动服务
|
|||
|
|
|
|||
|
|
### 开发模式启动(测试用)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 方法一:使用 run.py
|
|||
|
|
python run.py
|
|||
|
|
|
|||
|
|
# 方法二:使用 start.py
|
|||
|
|
python start.py
|
|||
|
|
|
|||
|
|
# 方法三:直接启动 Flask
|
|||
|
|
flask run
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**启动成功后,访问:**
|
|||
|
|
- 网页界面:http://localhost:5000
|
|||
|
|
- 管理后台:http://localhost:5000
|
|||
|
|
|
|||
|
|
### 生产模式启动(正式部署)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用 Gunicorn 启动(推荐)
|
|||
|
|
gunicorn -w 4 -b 0.0.0.0:5000 run:app
|
|||
|
|
|
|||
|
|
# 或者使用 start.py(如果配置了生产模式)
|
|||
|
|
python start.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**参数说明:**
|
|||
|
|
- `-w 4`:启动 4 个工作进程
|
|||
|
|
- `-b 0.0.0.0:5000`:绑定到所有网络接口的 5000 端口
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 常见问题解决
|
|||
|
|
|
|||
|
|
### 问题 1:数据库连接失败
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
1. **检查 MySQL 服务是否启动**
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
net start mysql
|
|||
|
|
|
|||
|
|
# Linux
|
|||
|
|
sudo systemctl status mysql
|
|||
|
|
sudo systemctl start mysql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **检查用户名和密码**
|
|||
|
|
```bash
|
|||
|
|
# 测试连接
|
|||
|
|
mysql -u root -p
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **检查防火墙设置**
|
|||
|
|
- 确保 3306 端口没有被防火墙阻止
|
|||
|
|
|
|||
|
|
### 问题 2:权限不足
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
Access denied for user 'root'@'localhost'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```sql
|
|||
|
|
-- 登录 MySQL 后执行
|
|||
|
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
|
|||
|
|
FLUSH PRIVILEGES;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 3:端口被占用
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
Address already in use
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 查看端口占用
|
|||
|
|
netstat -tulpn | grep :5000
|
|||
|
|
|
|||
|
|
# 或者修改端口
|
|||
|
|
# 编辑 .env 文件,修改 PORT=5000 为其他端口
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 4:依赖包安装失败
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 清理 pip 缓存
|
|||
|
|
pip cache purge
|
|||
|
|
|
|||
|
|
# 使用国内镜像源
|
|||
|
|
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
|||
|
|
|
|||
|
|
# 如果还有问题,尝试逐个安装
|
|||
|
|
pip install Flask==2.3.3
|
|||
|
|
pip install Flask-SQLAlchemy==3.0.5
|
|||
|
|
# ... 其他包
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 5:依赖包安装失败
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
ModuleNotFoundError: No module named 'Crypto'
|
|||
|
|
ImportError: cannot import name 'app' from 'app'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 方法一:使用自动安装脚本
|
|||
|
|
python install_deps.py
|
|||
|
|
|
|||
|
|
# 方法二:手动安装关键依赖
|
|||
|
|
pip install cryptography==41.0.4
|
|||
|
|
|
|||
|
|
# 方法三:清理并重新安装
|
|||
|
|
pip cache purge
|
|||
|
|
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
|||
|
|
|
|||
|
|
# 方法四:逐个安装关键包
|
|||
|
|
pip install cryptography==41.0.4
|
|||
|
|
pip install Flask==2.3.3
|
|||
|
|
pip install Flask-SQLAlchemy==3.0.5
|
|||
|
|
pip install Flask-Login==0.6.3
|
|||
|
|
pip install PyMySQL==1.1.0
|
|||
|
|
pip install python-dotenv==1.0.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 6:中文字符乱码
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```sql
|
|||
|
|
-- 确保数据库使用正确的字符集
|
|||
|
|
ALTER DATABASE kamaxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 维护与管理
|
|||
|
|
|
|||
|
|
### 备份数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 完整备份
|
|||
|
|
mysqldump -u root -p kamaxitong > backup_$(date +%Y%m%d_%H%M%S).sql
|
|||
|
|
|
|||
|
|
# 恢复数据库
|
|||
|
|
mysql -u root -p kamaxitong < backup_file.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 更新系统
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 备份数据库
|
|||
|
|
mysqldump -u root -p kamaxitong > backup_before_update.sql
|
|||
|
|
|
|||
|
|
# 2. 拉取最新代码(如果使用 Git)
|
|||
|
|
git pull origin main
|
|||
|
|
|
|||
|
|
# 3. 更新依赖包
|
|||
|
|
pip install -r requirements.txt --upgrade
|
|||
|
|
|
|||
|
|
# 4. 重新初始化数据库(谨慎操作)
|
|||
|
|
python init_db.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查看日志
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看应用日志
|
|||
|
|
tail -f logs/kamaxitong.log
|
|||
|
|
|
|||
|
|
# 查看 MySQL 错误日志
|
|||
|
|
# Windows: C:\ProgramData\MySQL\MySQL Server 8.0\Data\
|
|||
|
|
# Linux: /var/log/mysql/error.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 性能优化
|
|||
|
|
|
|||
|
|
1. **数据库优化**
|
|||
|
|
```sql
|
|||
|
|
-- 创建索引
|
|||
|
|
CREATE INDEX idx_license_key ON license(license_key);
|
|||
|
|
CREATE INDEX idx_machine_code ON device(machine_code);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **应用优化**
|
|||
|
|
- 修改 `.env` 文件中的配置
|
|||
|
|
- 调整 `ITEMS_PER_PAGE` 控制分页大小
|
|||
|
|
- 设置合适的 `LOG_LEVEL`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 技术支持
|
|||
|
|
|
|||
|
|
如果以上步骤都遇到了问题,请提供以下信息:
|
|||
|
|
|
|||
|
|
1. **系统信息**
|
|||
|
|
- 操作系统版本
|
|||
|
|
- Python 版本
|
|||
|
|
- MySQL 版本
|
|||
|
|
|
|||
|
|
2. **错误信息**
|
|||
|
|
- 完整的错误日志
|
|||
|
|
- 执行的具体命令
|
|||
|
|
|
|||
|
|
3. **配置信息**
|
|||
|
|
- `.env` 文件内容(请隐藏密码)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎉 部署完成!
|
|||
|
|
|
|||
|
|
恭喜你!如果以上步骤都成功执行,你的 KaMiXiTong 系统已经成功部署了!
|
|||
|
|
|
|||
|
|
**下一步操作:**
|
|||
|
|
1. 访问 http://localhost:5000
|
|||
|
|
2. 使用默认账号登录:`admin` / `admin123`
|
|||
|
|
3. **立即修改默认密码!**
|
|||
|
|
4. 开始配置你的产品和许可证
|
|||
|
|
|
|||
|
|
**温馨提示:**
|
|||
|
|
- 生产环境请务必修改默认密码
|
|||
|
|
- 定期备份数据库
|
|||
|
|
- 保持系统和依赖包的更新
|
|||
|
|
|
|||
|
|
祝你使用愉快! 🎊
|