Files
EnterpriseArchitect/knowledge/运维/lotto-deploy/DEPLOY.md
T
opengineer 0326c87c00 BIZ-72: 双色球系统部署文档与配置文件
- systemd 服务文件 (lotto-web.service)
- cron 抓取脚本 (fetch_daily.sh)
- 部署文档 (DEPLOY.md)
- 依赖清单 (requirements.txt)
2026-06-29 00:19:14 +08:00

178 lines
4.5 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.
# 双色球系统部署文档
## 部署信息
| 项目 | 值 |
|------|-----|
| 项目名称 | 双色球自动化系统 |
| 部署时间 | 2026-06-29 |
| 部署人员 | 严维序 (opengineer) |
| 服务地址 | http://192.168.1.99:5000 |
| 宿主服务器 | Ubuntu-OpenClaw (192.168.1.99) |
---
## 一、项目结构
```
/home/vincent/Studio/lottoData/
├── venv/ # Python 虚拟环境
├── web_executor.py # Flask Web 服务 (监听 0.0.0.0:5000)
├── fetch_data.py # 数据抓取脚本
├── lottery.py # 双色球号码生成器
├── web_console.html # Web 控制台页面
├── LottoSpider/ # 爬虫模块
├── lottery/ # 彩票模块
├── docs/ # 文档
├── 双色球历史数据.xlsx # 历史数据文件
└── deploy/ # 部署文件
├── DEPLOY.md # 本文档
├── lotto-web.service # systemd 服务文件
├── fetch_daily.sh # 每日抓取脚本
├── cron.log # Cron 执行日志
└── fetch_YYYYMMDD.log # 每日抓取详细日志
```
---
## 二、依赖清单
| 包 | 版本 | 用途 |
|----|------|------|
| Flask | 3.1.3 | Web 服务框架 |
| pandas | 3.0.4 | 数据处理 |
| openpyxl | 3.1.5 | Excel 读写 |
| requests | 2.34.2 | HTTP 请求 |
| beautifulsoup4 | 4.15.0 | HTML 解析 |
安装命令:
```bash
python3 -m venv venv
./venv/bin/pip install flask pandas openpyxl requests beautifulsoup4
```
---
## 三、systemd 服务配置
### 服务文件
`/etc/systemd/system/lotto-web.service`
```ini
[Unit]
Description=双色球数据抓取 Web 服务
After=network.target
[Service]
Type=simple
User=vincent
WorkingDirectory=/home/vincent/Studio/lottoData
ExecStart=/home/vincent/Studio/lottoData/venv/bin/python3 /home/vincent/Studio/lottoData/web_executor.py
ExecStartPre=/home/vincent/Studio/lottoData/venv/bin/python3 -c "import flask; import pandas; import openpyxl; import requests; import bs4"
Restart=on-failure
RestartSec=5
KillMode=control-group
[Install]
WantedBy=multi-user.target
```
### 管理命令
```bash
# 安装/启用
sudo cp deploy/lotto-web.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable lotto-web
sudo systemctl start lotto-web
# 日常管理
sudo systemctl status lotto-web # 查看状态
sudo systemctl restart lotto-web # 重启
sudo systemctl stop lotto-web # 停止
sudo journalctl -u lotto-web -f # 查看实时日志
```
---
## 四、Cron 定时任务
### Cron 配置
```
30 2 * * * /home/vincent/Studio/lottoData/deploy/fetch_daily.sh >> /home/vincent/Studio/lottoData/deploy/cron.log 2>&1
```
每天凌晨 2:30 自动抓取双色球历史数据。
### 手动执行
```bash
/home/vincent/Studio/lottoData/deploy/fetch_daily.sh
# 或
/home/vincent/Studio/lottoData/venv/bin/python3 /home/vincent/Studio/lottoData/fetch_data.py
```
---
## 五、Web 接口
| 路径 | 方法 | 说明 |
|------|------|------|
| `/` | GET | Web 控制台页面 |
| `/api/status` | GET | 获取执行状态 |
| `/api/execute` | POST | 触发数据抓取 |
### 示例
```bash
# 查看状态
curl http://192.168.1.99:5000/api/status
# 触发抓取
curl -X POST http://192.168.1.99:5000/api/execute
```
---
## 六、验证清单
- [x] 依赖安装完整 (Flask, pandas, openpyxl, requests, beautifulsoup4)
- [x] systemd 服务运行正常 (active, enabled)
- [x] Web 服务可访问 (http://192.168.1.99:5000, HTTP 200)
- [x] API 接口正常 (/api/status, /api/execute)
- [x] Cron 定时任务已配置 (每日 2:30 抓取)
- [x] 手动抓取测试通过 (121 条记录保存成功)
- [x] 开机自启已配置 (systemd enable)
---
## 七、回滚方案
```bash
# 停止服务
sudo systemctl stop lotto-web
sudo systemctl disable lotto-web
sudo rm /etc/systemd/system/lotto-web.service
sudo systemctl daemon-reload
# 移除 cron
crontab -l | grep -v 'lottoData' | crontab -
# 不影响数据文件和代码
```
---
## 八、监控要点
1. **服务存活**`systemctl status lotto-web` 确认 active
2. **Web 可达**`curl http://127.0.0.1:5000/api/status`
3. **数据更新**:检查 `/home/vincent/Studio/lottoData/双色球历史数据.xlsx` 修改时间
4. **Cron 日志**:检查 `/home/vincent/Studio/lottoData/deploy/cron.log`
5. **磁盘空间**Excel 文件约 250KB,可忽略
---
> 部署人:严维序 (opengineer) | 2026-06-29