- 基于OpenResty的RESTful API服务 - 支持Cookie/Token等数据类型的存储和管理 - 登录认证保护 - Web管理界面 - 数据过期管理
5.7 KiB
5.7 KiB
部署指南
🚀 快速部署
1. 环境要求
- Docker & Docker Compose
- Python 3.7+
- 开放端口:5001
2. 部署步骤
# 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,可以迁移现有数据:
# 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(推荐)
# 添加定时任务(每天上午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
# 编辑 crontab
crontab -e
# 添加以下行(每天上午9点)
0 9 * * * cd /home/hermes/projects/data-sync-service && python3 scripts/check_expiry.py
📱 微信通知配置
脚本的 print() 输出会自动通过 Hermes 发送到微信。确保 Hermes 已配置微信通知:
# 检查 Hermes 配置
hermes config show
# 如需配置微信通知,参考 Hermes 文档
🌐 外网访问配置
如果需要从外网访问服务,建议使用 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:
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 为新密码:
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 块中添加:
# 只允许特定 IP 访问
allow 192.168.1.0/24;
allow 10.0.0.0/8;
deny all;
3. 防火墙配置
# 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
📊 监控和维护
查看服务状态
cd /home/hermes/projects/data-sync-service
# 查看容器状态
docker-compose ps
# 查看实时日志
docker-compose logs -f
# 查看资源占用
docker stats data-sync-service
备份数据
# 手动备份
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/
恢复数据
# 停止服务
docker-compose down
# 恢复备份
tar -xzf data-backup-20260814.tar.gz
# 启动服务
docker-compose up -d
清理过期数据
# 运行清理脚本(删除过期超过30天的数据)
python3 scripts/clean_expired.py
🔄 更新服务
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
❓ 常见问题
服务无法启动
# 查看日志
docker-compose logs
# 检查端口占用
netstat -tlnp | grep 5001
# 检查数据目录权限
ls -la data/
chmod 777 data/
数据无法保存
# 检查磁盘空间
df -h
# 检查数据目录权限
ls -la data/
chmod 777 data/
# 检查容器内文件
docker exec data-sync-service ls -la /data
过期检测不工作
# 手动运行测试
python3 scripts/check_expiry.py
# 检查 Hermes Cron 状态
hermes cron list
# 查看 Cron 日志
hermes cron logs data-sync-expiry-check
微信通知未收到
# 检查 Hermes 配置
hermes config show
# 测试微信通知
python3 scripts/check_expiry.py
# 查看 Hermes 日志
hermes logs
📝 维护检查清单
每日检查
- 服务运行状态
- 过期数据通知
- 磁盘空间
每周检查
- 备份数据
- 查看错误日志
- 清理过期数据
每月检查
- 更新依赖镜像
- 检查安全配置
- 测试恢复流程
🆘 紧急恢复
如果服务完全不可用:
# 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