Exeprotector/个人版_快速部署指南.md
2025-10-23 18:28:10 +08:00

551 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 个人版快速部署指南
> **总用时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分钟**
**实际难度:非常简单!**
有问题随时联系!