# 个人版快速部署指南 > **总用时:30-40分钟** > **难度:⭐⭐☆☆☆(简单)** --- ## 📋 准备清单 在开始之前,确保你有: - ✅ 一台云服务器(已有MySQL数据库) - ✅ SSH登录权限 - ✅ 域名(可选,但推荐) - ✅ 本地Python环境 --- ## 🚀 部署流程(3步走) ``` 第一步:云服务器部署API(15分钟) ↓ 第二步:本地修改管理程序(5分钟) ↓ 第三步:测试验证(10分钟) ``` --- ## 第一步:云服务器部署(15分钟) ### 1.1 上传文件到服务器 **Windows用户(使用WinSCP):** 1. 打开WinSCP,连接到你的服务器 2. 创建目录:`/opt/license-api` 3. 上传文件:`api_server_lite.py` **Linux/Mac用户:** ```bash # 使用SCP上传 scp api_server_lite.py root@your-server-ip:/opt/license-api/ ``` ### 1.2 SSH登录服务器 ```bash ssh root@your-server-ip ``` ### 1.3 安装依赖 ```bash # 进入目录 cd /opt/license-api # Ubuntu/Debian apt update apt install python3 python3-pip -y pip3 install flask mysql-connector-python # CentOS/RHEL yum install python3 python3-pip -y pip3 install flask mysql-connector-python ``` ### 1.4 生成API密钥 ```bash # 生成随机密钥 python3 -c "import os; print(os.urandom(32).hex())" # 输出示例: # a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2 # ⚠️ 保存这个密钥,后面要用! ``` ### 1.5 配置环境变量 ```bash # 编辑环境变量文件 nano ~/.bashrc # 在文件末尾添加(修改为你的实际值): export DB_HOST=localhost export DB_USER=taiyi export DB_PASSWORD=taiyi1224 export DB_NAME=filesend_db export API_KEY=你刚才生成的密钥 # 保存并退出(Ctrl+O, Enter, Ctrl+X) # 使配置生效 source ~/.bashrc ``` ### 1.6 测试运行 ```bash # 测试运行(前台) python3 api_server_lite.py # 你应该看到: # ============================================================ # 轻量级API服务器 - 个人管理版 # ============================================================ # 数据库: localhost/filesend_db # 端口: 5000 # API密钥: 已设置 # ============================================================ # 按 Ctrl+C 停止 # 测试接口 curl http://localhost:5000/api/health # 应该返回: # {"status":"ok","timestamp":1234567890.123,"version":"1.0"} ``` ### 1.7 配置为系统服务(后台运行) ```bash # 创建服务文件 nano /etc/systemd/system/license-api.service # 粘贴以下内容(修改为你的实际密钥): ``` ```ini [Unit] Description=License API Server After=network.target mysql.service [Service] Type=simple User=root WorkingDirectory=/opt/license-api Environment="DB_HOST=localhost" Environment="DB_USER=taiyi" Environment="DB_PASSWORD=taiyi1224" Environment="DB_NAME=filesend_db" Environment="API_KEY=你的API密钥" ExecStart=/usr/bin/python3 /opt/license-api/api_server_lite.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` ```bash # 保存并退出 # 启动服务 systemctl daemon-reload systemctl start license-api systemctl enable license-api # 检查状态 systemctl status license-api # 应该显示:Active: active (running) # 查看日志 journalctl -u license-api -f ``` ### 1.8 配置防火墙 ```bash # 开放5000端口 ufw allow 5000 # 或者只允许特定IP访问(更安全) # ufw allow from your-client-ip to any port 5000 ``` ### 1.9 配置Nginx反向代理(推荐) ```bash # 安装Nginx apt install nginx -y # 创建配置文件 nano /etc/nginx/sites-available/license-api ``` ```nginx server { listen 80; server_name your-domain.com; # 改成你的域名 location /api/ { proxy_pass http://127.0.0.1:5000/api/; 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_connect_timeout 10s; proxy_read_timeout 30s; } } ``` ```bash # 启用配置 ln -s /etc/nginx/sites-available/license-api /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx # 申请SSL证书(免费) apt install certbot python3-certbot-nginx -y certbot --nginx -d your-domain.com # 按提示操作即可 ``` --- ## 第二步:本地修改(5分钟) ### 2.1 备份原文件 ```bash # Windows copy main.py main.py.backup # Linux/Mac cp main.py main.py.backup ``` ### 2.2 修改 main.py 在 `main.py` 中找到 `encrypt_software_by_name` 方法(大约1365行): **原代码:** ```python def encrypt_software_by_name(self, software_name): # ... encryptor = EXEEncryptor() success, msg = encryptor.encrypt_file( source_path, dest_path, validator_path, self.db_config, software_name ) ``` **修改为:** ```python def encrypt_software_by_name(self, software_name): # ... 前面代码不变 ... # 🔴 使用新的安全加密器 from encryptor_secure import SecureEXEEncryptor # 配置API(改成你的实际值) api_config = { 'api_url': 'https://your-domain.com/api', # 改成你的域名或IP 'api_key': '你的API密钥' # 改成你生成的密钥 } encryptor = SecureEXEEncryptor() success, msg = encryptor.encrypt_exe( source_path=source_path, output_path=dest_path, api_config=api_config, software_name=software_name ) # ... 后面代码不变 ... ``` ### 2.3 安装依赖(如果还没装) ```bash pip install cryptography requests ``` --- ## 第三步:测试(10分钟) ### 3.1 测试API连接 ```bash # 从本地电脑测试 curl https://your-domain.com/api/health # 或者用浏览器访问 # https://your-domain.com/api/health # 应该看到: # {"status":"ok","timestamp":1234567890.123,"version":"1.0"} ``` ### 3.2 测试加密 ```bash # 运行管理程序 python main.py # 1. 连接数据库 # 2. 选择一个软件 # 3. 点击"加密软件" # 4. 观察是否成功生成加密EXE ``` ### 3.3 测试激活 1. 把加密的EXE复制到另一台电脑 2. 运行EXE 3. 输入机器码(会显示) 4. 在管理程序中生成对应的卡密 5. 输入卡密 6. 验证是否激活成功 --- ## 🎯 配置参考 ### 环境变量配置模板 创建 `.env` 文件(服务器上): ```bash # 数据库配置 DB_HOST=localhost DB_USER=taiyi DB_PASSWORD=taiyi1224 DB_NAME=filesend_db # API密钥(必须修改) API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2 ``` ### main.py 配置模板 ```python # API配置(在 encrypt_software_by_name 方法中) api_config = { # 如果有域名+SSL 'api_url': 'https://your-domain.com/api', # 如果只有IP(不推荐用于生产) # 'api_url': 'http://your-server-ip:5000/api', # API密钥(与服务器上的API_KEY一致) 'api_key': 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2' } ``` --- ## 🐛 故障排查 ### 问题1:API服务无法启动 ```bash # 检查日志 journalctl -u license-api -n 50 # 常见原因: # 1. 端口被占用 netstat -tulpn | grep 5000 # 解决:杀掉占用进程或换端口 # 2. 数据库连接失败 mysql -h localhost -u taiyi -p # 解决:检查数据库配置 # 3. Python模块缺失 pip3 list | grep flask # 解决:重新安装依赖 ``` ### 问题2:客户端无法连接API ```bash # 1. 检查防火墙 ufw status # 2. 检查Nginx状态 systemctl status nginx nginx -t # 3. 测试本地连接 curl http://localhost:5000/api/health # 4. 测试外部连接 curl http://your-server-ip:5000/api/health ``` ### 问题3:加密失败 ```bash # 1. 检查validator_secure.py是否存在 ls -l validator_secure.py # 2. 检查encryptor_secure.py是否存在 ls -l encryptor_secure.py # 3. 检查依赖 pip list | grep cryptography # 4. 查看详细错误 python main.py # 在GUI中查看错误提示 ``` ### 问题4:激活失败 ```bash # 1. 服务器端检查日志 journalctl -u license-api -f # 2. 检查API密钥是否一致 echo $API_KEY # 3. 检查数据库中的软件名称 mysql -u taiyi -p filesend_db SELECT * FROM software_products; # 4. 检查网络连接 curl https://your-domain.com/api/health ``` --- ## 📊 性能监控 ### 查看API服务状态 ```bash # 服务状态 systemctl status license-api # 实时日志 journalctl -u license-api -f # CPU和内存使用 top -p $(pgrep -f api_server_lite) # 网络连接 netstat -an | grep 5000 ``` ### 查看数据库状态 ```bash # 登录MySQL mysql -u taiyi -p # 查询统计 SELECT status, COUNT(*) FROM license_keys GROUP BY status; # 查询今日激活 SELECT COUNT(*) FROM license_keys WHERE DATE(start_time) = CURDATE(); ``` --- ## 🔒 安全建议 ### 必须做的: 1. **修改默认密钥** ```bash # 生成强密钥 python3 -c "import os; print(os.urandom(32).hex())" ``` 2. **使用HTTPS** ```bash certbot --nginx -d your-domain.com ``` 3. **定期备份数据库** ```bash mysqldump -u taiyi -p filesend_db > backup_$(date +%Y%m%d).sql ``` ### 建议做的: 4. **限制SSH访问** ```bash # 只允许密钥登录 nano /etc/ssh/sshd_config # PasswordAuthentication no systemctl restart sshd ``` 5. **配置fail2ban** ```bash apt install fail2ban -y systemctl enable fail2ban ``` 6. **监控异常请求** ```bash # 设置告警 tail -f /var/log/nginx/access.log | grep -i "api" ``` --- ## 📞 需要帮助? ### 免费支持: - 📖 查看文档:`方案_个人管理版.md` - 💬 邮件咨询:shoubo1224@qq.com ### 付费服务: - 🔧 远程部署:¥200/次 - 📞 技术支持:¥500/月 - 🎓 一对一培训:¥500/小时 **微信:taiyi1224** --- ## ✅ 部署完成检查清单 完成后,确认以下项目: - [ ] API服务器正常运行 - [ ] 能访问 /api/health 接口 - [ ] main.py 已修改配置 - [ ] 本地能连接云数据库 - [ ] 加密功能正常 - [ ] 测试EXE能激活 - [ ] 防火墙已配置 - [ ] SSL证书已安装(如有域名) - [ ] 服务设置为开机自启 - [ ] 数据库已备份 **全部完成?恭喜你!🎉** --- **预计总用时:30-40分钟** **实际难度:非常简单!** 有问题随时联系!