10 KiB
10 KiB
个人版快速部署指南
总用时:30-40分钟
难度:⭐⭐☆☆☆(简单)
📋 准备清单
在开始之前,确保你有:
- ✅ 一台云服务器(已有MySQL数据库)
- ✅ SSH登录权限
- ✅ 域名(可选,但推荐)
- ✅ 本地Python环境
🚀 部署流程(3步走)
第一步:云服务器部署API(15分钟)
↓
第二步:本地修改管理程序(5分钟)
↓
第三步:测试验证(10分钟)
第一步:云服务器部署(15分钟)
1.1 上传文件到服务器
Windows用户(使用WinSCP):
- 打开WinSCP,连接到你的服务器
- 创建目录:
/opt/license-api - 上传文件:
api_server_lite.py
Linux/Mac用户:
# 使用SCP上传
scp api_server_lite.py root@your-server-ip:/opt/license-api/
1.2 SSH登录服务器
ssh root@your-server-ip
1.3 安装依赖
# 进入目录
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密钥
# 生成随机密钥
python3 -c "import os; print(os.urandom(32).hex())"
# 输出示例:
# a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2
# ⚠️ 保存这个密钥,后面要用!
1.5 配置环境变量
# 编辑环境变量文件
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 测试运行
# 测试运行(前台)
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 配置为系统服务(后台运行)
# 创建服务文件
nano /etc/systemd/system/license-api.service
# 粘贴以下内容(修改为你的实际密钥):
[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
# 保存并退出
# 启动服务
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 配置防火墙
# 开放5000端口
ufw allow 5000
# 或者只允许特定IP访问(更安全)
# ufw allow from your-client-ip to any port 5000
1.9 配置Nginx反向代理(推荐)
# 安装Nginx
apt install nginx -y
# 创建配置文件
nano /etc/nginx/sites-available/license-api
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;
}
}
# 启用配置
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 备份原文件
# 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行):
原代码:
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
)
修改为:
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 安装依赖(如果还没装)
pip install cryptography requests
第三步:测试(10分钟)
3.1 测试API连接
# 从本地电脑测试
curl https://your-domain.com/api/health
# 或者用浏览器访问
# https://your-domain.com/api/health
# 应该看到:
# {"status":"ok","timestamp":1234567890.123,"version":"1.0"}
3.2 测试加密
# 运行管理程序
python main.py
# 1. 连接数据库
# 2. 选择一个软件
# 3. 点击"加密软件"
# 4. 观察是否成功生成加密EXE
3.3 测试激活
- 把加密的EXE复制到另一台电脑
- 运行EXE
- 输入机器码(会显示)
- 在管理程序中生成对应的卡密
- 输入卡密
- 验证是否激活成功
🎯 配置参考
环境变量配置模板
创建 .env 文件(服务器上):
# 数据库配置
DB_HOST=localhost
DB_USER=taiyi
DB_PASSWORD=taiyi1224
DB_NAME=filesend_db
# API密钥(必须修改)
API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2
main.py 配置模板
# 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服务无法启动
# 检查日志
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
# 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:加密失败
# 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:激活失败
# 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服务状态
# 服务状态
systemctl status license-api
# 实时日志
journalctl -u license-api -f
# CPU和内存使用
top -p $(pgrep -f api_server_lite)
# 网络连接
netstat -an | grep 5000
查看数据库状态
# 登录MySQL
mysql -u taiyi -p
# 查询统计
SELECT status, COUNT(*) FROM license_keys GROUP BY status;
# 查询今日激活
SELECT COUNT(*) FROM license_keys WHERE DATE(start_time) = CURDATE();
🔒 安全建议
必须做的:
-
修改默认密钥
# 生成强密钥 python3 -c "import os; print(os.urandom(32).hex())" -
使用HTTPS
certbot --nginx -d your-domain.com -
定期备份数据库
mysqldump -u taiyi -p filesend_db > backup_$(date +%Y%m%d).sql
建议做的:
-
限制SSH访问
# 只允许密钥登录 nano /etc/ssh/sshd_config # PasswordAuthentication no systemctl restart sshd -
配置fail2ban
apt install fail2ban -y systemctl enable fail2ban -
监控异常请求
# 设置告警 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分钟
实际难度:非常简单!
有问题随时联系!