CoolBotDataSys/docs/服务器运维手册.md

251 lines
6.5 KiB
Markdown
Raw Permalink 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.

# 一尘数据系统 - 服务器运维手册
> 适用服务器2号 (101.37.160.219)、3号 (42.121.116.25)
> 统一密码:`Coolbot123`2号也用此密码登录
---
## 一、服务器概览
| 服务器 | IP | 用途 | 爬虫 cron |
|--------|-----|------|-----------|
| 2号 | 101.37.160.219 | 爬虫 + API | 每 15 分钟 |
| 3号 | 42.121.116.25 | 爬虫 + API | 每 25 分钟 |
---
## 二、下载更新版本
### 方式 A通过 Git 拉取(推荐)
```bash
cd /root/coolbot-data
git pull origin main
```
> 注意:可能需要先设置 Git 凭据
> ```bash
> git config --global credential.helper store
> # 首次需要输入一次用户名密码
> # 用户名: caibotmi
> # 密码: Caibotmi123
> ```
### 方式 B手动上传
如果 Git 有问题,可以让机器人(我)从 1 号服务器打包文件,通过中间服务器转发。
---
## 三、部署启动服务
### 3.1 安装 Python 依赖
```bash
cd /root/coolbot-data
source venv/bin/activate
pip install -r requirements.txt -q
```
### 3.2 重启爬虫服务
```bash
# 重启 cron让新代码生效
crontab /root/coolbot-data/scripts/root.cron
# 或手动重启 crond
systemctl restart crond
```
### 3.3 重启 API 服务
```bash
# 查看 API 是否在运行
ps aux | grep uvicorn | grep -v grep
# 如果在运行kill 掉
pkill -f uvicorn
# 重新启动(后台运行)
cd /root/coolbot-data
source venv/bin/activate
nohup python3 -m uvicorn api.main:app --host 0.0.0.0 --port 8080 > /root/coolbot-data/logs/api.log 2>&1 &
echo "API 已重启PID: $!"
```
---
## 四、验证服务
### 4.1 验证爬虫日志
```bash
# 查看最近爬虫执行记录
tail -20 /root/coolbot-data/logs/cron_s2.log # 2号
tail -20 /root/coolbot-data/logs/cron_s3.log # 3号
```
**正常的日志格式:**
```
开始全量采集第1-2页 (今天: 2026/4/7)
扫描第 1 页...
该页共 391 条帖子
[保存] 36193766 - 13100元求购... (今日2026/4/7中已存2条)
===== 采集完成 =====
总计检查: 781 条
成功保存: 23 条
```
**出现以下情况请处理:**
- `保存失败: not all arguments converted` → 代码未更新,需重新拉取
- `保存失败: connection` → 数据库连接问题
- 一直是 0 条 → 检查网络或目标网站
### 4.2 验证 API 服务
```bash
# 测试 API 是否响应
curl -s http://localhost:8080/health | python3 -m json.tool
```
**正常响应:**
```json
{"status": "ok", "message": "CoolBotDataSys API is running", "version": "1.0.0"}
```
### 4.3 验证数据库新帖
```bash
python3 -c "
import psycopg2
conn = psycopg2.connect(host='pgm-bp1t1008h019ez6c.pg.rds.aliyuncs.com', port=5432, database='coolbot_data', user='coolbot', password='Coolbot123')
cur = conn.cursor()
cur.execute('SELECT COUNT(*), MAX(crawled_at) FROM yichens_posts WHERE DATE(crawled_at) = CURRENT_DATE')
r = cur.fetchone()
print(f'今日帖子: {r[0]}条 | 最后采集: {r[1]}')
conn.close()
"
```
---
## 五、定期检查
### 5.1 每日检查(建议)
```bash
# 1. 检查爬虫是否在运行
ps aux | grep crawl_today | grep -v grep
# 2. 检查 cron 是否生效
crontab -l | grep crawl
# 3. 检查今日数据量(应该 > 0
python3 -c "import psycopg2; conn = psycopg2.connect(host='pgm-bp1t1008h019ez6c.pg.rds.aliyuncs.com', port=5432, database='coolbot_data', user='coolbot', password='Coolbot123'); cur = conn.cursor(); cur.execute('SELECT COUNT(*) FROM yichens_posts WHERE DATE(crawled_at) = CURRENT_DATE'); print(cur.fetchone()[0], '条'); conn.close()"
```
### 5.2 每周检查
- 检查磁盘空间:`df -h`
- 检查日志文件大小:`ls -lh /root/coolbot-data/logs/`
- 清理旧日志:`find /root/coolbot-data/logs -name "*.log" -mtime +7 -delete`
---
## 六、问题处理
### 问题 1爬虫一直报 "保存失败: not all arguments converted"
**原因:** 代码未更新到最新版本
**解决:**
```bash
cd /root/coolbot-data
git pull origin main
```
### 问题 2爬虫返回 0 条新帖
**排查步骤:**
1. 检查网络:`curl -s -o /dev/null -w "%{http_code}" http://www4.pm001.net`
2. 查看详细日志:`tail -50 /root/coolbot-data/logs/cron_s*.log`
3. 手动跑一次爬虫看输出
### 问题 3API 服务无响应
**解决:**
```bash
# 检查端口是否监听
netstat -tlnp | grep 8080
# 重启 API
cd /root/coolbot-data
pkill -f uvicorn
source venv/bin/activate
nohup python3 -m uvicorn api.main:app --host 0.0.0.0 --port 8080 > logs/api.log 2>&1 &
```
### 问题 4数据库连接失败
**原因:** 阿里云 RDS 网络不通 或 密码错误
**排查:**
```bash
# 测试数据库连接
psql "postgresql://coolbot:Coolbot123@pgm-bp1t1008h019ez6c.pg.rds.aliyuncs.com:5432/coolbot_data" -c "SELECT 1"
```
### 问题 5SSH 连接被拒
**原因:** 服务器 SSH 策略或网络问题
**解决:** 等待几分钟后重试,或联系网络管理员
---
## 七、快速命令汇总
```bash
# === 查看状态 ===
git -C /root/coolbot-data log --oneline -1 # 最新版本
ps aux | grep crawl_today | grep -v grep # 爬虫进程
ps aux | grep uvicorn | grep -v grep # API 进程
tail -5 /root/coolbot-data/logs/cron_s*.log # 最新日志
# === 更新代码 ===
cd /root/coolbot-data && git pull origin main
# === 重启爬虫 ===
pkill -f crawl_today
# 等待 cron 自动触发,或手动运行:
# cd /root/coolbot-data && source venv/bin/activate && python3 scripts/crawl_cron_s2.sh
# === 重启 API ===
cd /root/coolbot-data && pkill -f uvicorn && source venv/bin/activate && nohup python3 -m uvicorn api.main:app --host 0.0.0.0 --port 8080 > logs/api.log 2>&1 &
# === 验证服务 ===
curl -s http://localhost:8080/health # API 健康检查
python3 -c "import psycopg2; c=psycopg2.connect(host='pgm-bp1t1008h019ez6c.pg.rds.aliyuncs.com',port=5432,database='coolbot_data',user='coolbot',password='Coolbot123'); print(c.cursor().execute('SELECT 1'),'OK')" # DB 连接
```
---
## 八、重要文件路径
| 路径 | 说明 |
|------|------|
| `/root/coolbot-data/crawlers/crawl_today.py` | 爬虫主程序 |
| `/root/coolbot-data/scripts/crawl_cron_s2.sh` | 2号 cron 脚本 |
| `/root/coolbot-data/scripts/crawl_cron_s3.sh` | 3号 cron 脚本 |
| `/root/coolbot-data/logs/cron_s2.log` | 2号爬虫日志 |
| `/root/coolbot-data/logs/cron_s3.log` | 3号爬虫日志 |
| `/root/coolbot-data/api/main.py` | API 主程序 |
| `/root/coolbot-data/logs/api.log` | API 日志 |
| `/root/coolbot-data/.env` | 环境变量(包含数据库密码) |
---
## 九、联系方式
如遇到无法解决的问题,请联系:**菜鸟Micaibotmini**