Exeprotector/个人版_快速部署指南.md

551 lines
10 KiB
Markdown
Raw Normal View History

2025-10-23 18:28:10 +08:00
# 个人版快速部署指南
> **总用时30-40分钟**
> **难度:⭐⭐☆☆☆(简单)**
---
## 📋 准备清单
在开始之前,确保你有:
- ✅ 一台云服务器已有MySQL数据库
- ✅ SSH登录权限
- ✅ 域名(可选,但推荐)
- ✅ 本地Python环境
---
## 🚀 部署流程3步走
```
第一步云服务器部署API15分钟
第二步本地修改管理程序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'
}
```
---
## 🐛 故障排查
### 问题1API服务无法启动
```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分钟**
**实际难度:非常简单!**
有问题随时联系!