- 基于OpenResty的RESTful API服务 - 支持Cookie/Token等数据类型的存储和管理 - 登录认证保护 - Web管理界面 - 数据过期管理
331 lines
5.7 KiB
Markdown
331 lines
5.7 KiB
Markdown
# 部署指南
|
||
|
||
## 🚀 快速部署
|
||
|
||
### 1. 环境要求
|
||
|
||
- Docker & Docker Compose
|
||
- Python 3.7+
|
||
- 开放端口:5001
|
||
|
||
### 2. 部署步骤
|
||
|
||
```bash
|
||
# 1. 进入项目目录
|
||
cd /home/hermes/projects/data-sync-service
|
||
|
||
# 2. 创建数据目录并设置权限
|
||
mkdir -p data
|
||
chmod 777 data
|
||
|
||
# 3. 启动服务
|
||
docker-compose up -d
|
||
|
||
# 4. 验证服务
|
||
curl http://localhost:5001/health
|
||
# 预期输出: {"status":"ok"}
|
||
|
||
# 5. 查看日志
|
||
docker-compose logs -f
|
||
```
|
||
|
||
### 3. 从 cookie-receiver 迁移
|
||
|
||
如果你之前使用 cookie-receiver,可以迁移现有数据:
|
||
|
||
```bash
|
||
# 1. 停止旧服务
|
||
cd /home/hermes/projects/cookie-receiver
|
||
docker-compose down
|
||
|
||
# 2. 运行迁移脚本
|
||
cd /home/hermes/projects/data-sync-service
|
||
python3 scripts/migrate_data.py
|
||
|
||
# 3. 启动新服务
|
||
docker-compose up -d
|
||
|
||
# 4. 验证迁移
|
||
curl http://localhost:5001/api/data
|
||
```
|
||
|
||
## 🔧 配置过期检测
|
||
|
||
### 使用 Hermes Cron(推荐)
|
||
|
||
```bash
|
||
# 添加定时任务(每天上午9点检查)
|
||
hermes cron add \
|
||
--name "data-sync-expiry-check" \
|
||
--schedule "0 9 * * *" \
|
||
--command "python3 /home/hermes/projects/data-sync-service/scripts/check_expiry.py"
|
||
|
||
# 查看定时任务
|
||
hermes cron list
|
||
|
||
# 测试立即运行
|
||
python3 /home/hermes/projects/data-sync-service/scripts/check_expiry.py
|
||
```
|
||
|
||
### 使用系统 Cron
|
||
|
||
```bash
|
||
# 编辑 crontab
|
||
crontab -e
|
||
|
||
# 添加以下行(每天上午9点)
|
||
0 9 * * * cd /home/hermes/projects/data-sync-service && python3 scripts/check_expiry.py
|
||
```
|
||
|
||
## 📱 微信通知配置
|
||
|
||
脚本的 `print()` 输出会自动通过 Hermes 发送到微信。确保 Hermes 已配置微信通知:
|
||
|
||
```bash
|
||
# 检查 Hermes 配置
|
||
hermes config show
|
||
|
||
# 如需配置微信通知,参考 Hermes 文档
|
||
```
|
||
|
||
## 🌐 外网访问配置
|
||
|
||
如果需要从外网访问服务,建议使用 Nginx 反向代理:
|
||
|
||
```nginx
|
||
# /etc/nginx/sites-available/data-sync.conf
|
||
|
||
server {
|
||
listen 80;
|
||
server_name sync.yourdomain.com;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:5001;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
```
|
||
|
||
或使用 HTTPS:
|
||
|
||
```nginx
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name sync.yourdomain.com;
|
||
|
||
ssl_certificate /path/to/cert.pem;
|
||
ssl_certificate_key /path/to/key.pem;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:5001;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🔐 安全加固
|
||
|
||
### 1. 修改默认密码
|
||
|
||
编辑 `nginx/nginx.conf`,替换所有 `admin123123123` 为新密码:
|
||
|
||
```bash
|
||
cd /home/hermes/projects/data-sync-service
|
||
sed -i 's/admin123123123/YOUR_NEW_PASSWORD/g' nginx/nginx.conf
|
||
docker-compose restart
|
||
```
|
||
|
||
同时更新客户端配置。
|
||
|
||
### 2. IP 白名单
|
||
|
||
在 `nginx/nginx.conf` 的 `server` 块中添加:
|
||
|
||
```nginx
|
||
# 只允许特定 IP 访问
|
||
allow 192.168.1.0/24;
|
||
allow 10.0.0.0/8;
|
||
deny all;
|
||
```
|
||
|
||
### 3. 防火墙配置
|
||
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo ufw allow from 192.168.1.0/24 to any port 5001
|
||
sudo ufw enable
|
||
|
||
# CentOS/RHEL
|
||
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="5001" accept'
|
||
sudo firewall-cmd --reload
|
||
```
|
||
|
||
## 📊 监控和维护
|
||
|
||
### 查看服务状态
|
||
|
||
```bash
|
||
cd /home/hermes/projects/data-sync-service
|
||
|
||
# 查看容器状态
|
||
docker-compose ps
|
||
|
||
# 查看实时日志
|
||
docker-compose logs -f
|
||
|
||
# 查看资源占用
|
||
docker stats data-sync-service
|
||
```
|
||
|
||
### 备份数据
|
||
|
||
```bash
|
||
# 手动备份
|
||
tar -czf data-backup-$(date +%Y%m%d).tar.gz data/
|
||
|
||
# 定期备份(添加到 crontab)
|
||
0 2 * * * cd /home/hermes/projects/data-sync-service && tar -czf backups/data-backup-$(date +\%Y\%m\%d).tar.gz data/
|
||
```
|
||
|
||
### 恢复数据
|
||
|
||
```bash
|
||
# 停止服务
|
||
docker-compose down
|
||
|
||
# 恢复备份
|
||
tar -xzf data-backup-20260814.tar.gz
|
||
|
||
# 启动服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
### 清理过期数据
|
||
|
||
```bash
|
||
# 运行清理脚本(删除过期超过30天的数据)
|
||
python3 scripts/clean_expired.py
|
||
```
|
||
|
||
## 🔄 更新服务
|
||
|
||
```bash
|
||
cd /home/hermes/projects/data-sync-service
|
||
|
||
# 1. 备份数据
|
||
tar -czf data-backup-$(date +%Y%m%d).tar.gz data/
|
||
|
||
# 2. 更新配置文件
|
||
# 编辑 nginx/nginx.conf 或其他文件
|
||
|
||
# 3. 重启服务
|
||
docker-compose restart
|
||
|
||
# 4. 验证更新
|
||
curl http://localhost:5001/health
|
||
```
|
||
|
||
## ❓ 常见问题
|
||
|
||
### 服务无法启动
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker-compose logs
|
||
|
||
# 检查端口占用
|
||
netstat -tlnp | grep 5001
|
||
|
||
# 检查数据目录权限
|
||
ls -la data/
|
||
chmod 777 data/
|
||
```
|
||
|
||
### 数据无法保存
|
||
|
||
```bash
|
||
# 检查磁盘空间
|
||
df -h
|
||
|
||
# 检查数据目录权限
|
||
ls -la data/
|
||
chmod 777 data/
|
||
|
||
# 检查容器内文件
|
||
docker exec data-sync-service ls -la /data
|
||
```
|
||
|
||
### 过期检测不工作
|
||
|
||
```bash
|
||
# 手动运行测试
|
||
python3 scripts/check_expiry.py
|
||
|
||
# 检查 Hermes Cron 状态
|
||
hermes cron list
|
||
|
||
# 查看 Cron 日志
|
||
hermes cron logs data-sync-expiry-check
|
||
```
|
||
|
||
### 微信通知未收到
|
||
|
||
```bash
|
||
# 检查 Hermes 配置
|
||
hermes config show
|
||
|
||
# 测试微信通知
|
||
python3 scripts/check_expiry.py
|
||
|
||
# 查看 Hermes 日志
|
||
hermes logs
|
||
```
|
||
|
||
## 📝 维护检查清单
|
||
|
||
### 每日检查
|
||
- [ ] 服务运行状态
|
||
- [ ] 过期数据通知
|
||
- [ ] 磁盘空间
|
||
|
||
### 每周检查
|
||
- [ ] 备份数据
|
||
- [ ] 查看错误日志
|
||
- [ ] 清理过期数据
|
||
|
||
### 每月检查
|
||
- [ ] 更新依赖镜像
|
||
- [ ] 检查安全配置
|
||
- [ ] 测试恢复流程
|
||
|
||
## 🆘 紧急恢复
|
||
|
||
如果服务完全不可用:
|
||
|
||
```bash
|
||
# 1. 停止所有容器
|
||
docker-compose down
|
||
|
||
# 2. 清理容器和网络
|
||
docker system prune -f
|
||
|
||
# 3. 从备份恢复数据
|
||
tar -xzf data-backup-YYYYMMDD.tar.gz
|
||
|
||
# 4. 重新启动
|
||
docker-compose up -d
|
||
|
||
# 5. 验证服务
|
||
curl http://localhost:5001/health
|
||
curl http://localhost:5001/api/data
|
||
```
|
||
|
||
## 📞 获取支持
|
||
|
||
- 查看日志:`docker-compose logs -f`
|
||
- 运行测试:`bash scripts/test_api.sh`
|
||
- 检查配置:查看 `nginx/nginx.conf`
|
||
- 项目文档:`README.md`
|