mirror of
https://github.com/wangdage12/Snap.Server.git
synced 2026-02-17 08:52:10 +08:00
115 lines
2.8 KiB
Markdown
115 lines
2.8 KiB
Markdown
# Snap.Server
|
||
Snap.Hutao新后端API
|
||
|
||
## 部署方法
|
||
|
||
### 在服务器生成RSA密钥
|
||
|
||
执行以下代码在根目录生成密钥:
|
||
```python
|
||
from Crypto.PublicKey import RSA
|
||
|
||
# 生成 2048 位 RSA 密钥对
|
||
key = RSA.generate(2048)
|
||
|
||
private_key = key.export_key()
|
||
public_key = key.publickey().export_key()
|
||
|
||
with open("private.pem", "wb") as f:
|
||
f.write(private_key)
|
||
|
||
with open("public.pem", "wb") as f:
|
||
f.write(public_key)
|
||
|
||
print("Keys generated.")
|
||
|
||
```
|
||
|
||
**确保客户端的公钥和生成的相同,否则将无法使用账户功能**
|
||
|
||
### 创建配置文件
|
||
|
||
创建`config.json`文件,示例内容如下:
|
||
|
||
```json
|
||
{
|
||
"SECRET_KEY": "jwt_secret_key",
|
||
"MONGO_URI": "mongodb+srv://wdgwdg889_db_user:xxxxxx@cluster0.eplrcvl.mongodb.net/?appName=Cluster0",
|
||
"TIMEZONE": "Asia/Shanghai",
|
||
"ISTEST_MODE": false,
|
||
"SERVER": {
|
||
"HOST": "0.0.0.0",
|
||
"PORT": 5222,
|
||
"DEBUG": false
|
||
},
|
||
"JWT": {
|
||
"ALGORITHM": "HS256",
|
||
"EXPIRATION_HOURS": 24
|
||
},
|
||
"EMAIL": {
|
||
"GMAIL_USER": "wdgwdg889@gmail.com",
|
||
"APP_PASSWORD": ""
|
||
},
|
||
"RSA": {
|
||
"PRIVATE_KEY_FILE": "private.pem",
|
||
"PUBLIC_KEY_FILE": "public.pem"
|
||
},
|
||
"LOGGING": {
|
||
"LEVEL": "DEBUG",
|
||
"FORMAT": ""
|
||
}
|
||
}
|
||
```
|
||
|
||
参数说明:
|
||
|
||
| 参数 | 说明 |
|
||
|------|------|
|
||
| SECRET_KEY | 用于JWT签名的密钥,请设置为复杂字符串 |
|
||
| MONGO_URI | MongoDB连接字符串 |
|
||
| TIMEZONE | 服务器时区 |
|
||
| ISTEST_MODE | 是否启用测试模式,测试模式下部分功能将返回默认值,不连接数据库 |
|
||
| SERVER.HOST | 服务器监听地址 |
|
||
| SERVER.PORT | 服务器监听端口 |
|
||
| SERVER.DEBUG | 是否启用Flask的调试模式 |
|
||
| JWT.ALGORITHM | JWT签名算法 |
|
||
| JWT.EXPIRATION_HOURS | JWT过期时间(小时) |
|
||
| EMAIL.GMAIL_USER | 用于发送验证邮件的Gmail账号 |
|
||
| EMAIL.APP_PASSWORD | Gmail应用专用密码 |
|
||
| RSA.PRIVATE_KEY_FILE | RSA私钥文件路径 |
|
||
| RSA.PUBLIC_KEY_FILE | RSA公钥文件路径 |
|
||
| LOGGING.LEVEL | 日志记录级别,生产环境建议设置为INFO |
|
||
| LOGGING.FORMAT | 日志记录格式 |
|
||
|
||
### 开发环境启动方法
|
||
|
||
确保已安装依赖:
|
||
```
|
||
pip install -r requirements.txt
|
||
```
|
||
运行Flask应用:
|
||
```
|
||
python app.py
|
||
```
|
||
|
||
### 生产环境启动方法
|
||
|
||
建议使用Gunicorn部署:
|
||
```
|
||
pip install -r requirements.txt && python -m gunicorn run:app --bind 0.0.0.0:5222 --workers 4 --threads 2 --access-logfile - --error-logfile -
|
||
```
|
||
|
||
请根据服务器性能调整`--workers`和`--threads`参数。
|
||
|
||
### API文档
|
||
|
||
API文档可以在该地址访问:
|
||
|
||
https://rdgm3wrj7r.apifox.cn/
|
||
|
||
### 注意事项
|
||
|
||
在轻量使用的场景下,可以直接使用MongoDB Atlas的免费套餐,但在高并发场景下,建议使用自建MongoDB服务器以获得更好的性能和稳定性。
|
||
|
||
新MongoDB数据库会在写入数据时自动创建,无需手动创建数据库和集合。
|