1
This commit is contained in:
408
docs/Debian服务器部署指南.md
Normal file
408
docs/Debian服务器部署指南.md
Normal file
@@ -0,0 +1,408 @@
|
||||
# 成绩监控系统 - Debian服务器部署指南
|
||||
|
||||
## 📦 项目文件说明
|
||||
|
||||
### 必需文件(需要上传到服务器)
|
||||
|
||||
| 文件名 | 用途 | 何时使用 |
|
||||
|--------|------|----------|
|
||||
| `monitor.py` | **主程序** | 运行监控的核心文件 |
|
||||
| `config.ini` | **配置文件** | 包含账号密码、邮箱配置(⚠️ 敏感文件) |
|
||||
| `requirements.txt` | **Python依赖列表** | 安装Python包时使用 |
|
||||
| `setup_python.sh` | **环境安装脚本** | 首次部署时执行,安装所有依赖 |
|
||||
| `grade-monitor.service` | **systemd服务配置** | 设置开机自启和后台运行 |
|
||||
|
||||
### 可选文件(参考文档)
|
||||
|
||||
| 文件名 | 用途 |
|
||||
|--------|------|
|
||||
| `config(模板).ini` | 配置文件模板,新用户参考 |
|
||||
| `readme.md` | 项目说明文档 |
|
||||
| `部署.md` | 详细部署步骤 |
|
||||
| `常见问题解决.md` | 常见问题和解决方案 |
|
||||
|
||||
### 不需要的文件(不要上传)
|
||||
|
||||
- `venv/` - 虚拟环境(服务器上重新创建)
|
||||
- `.git/` - Git仓库(可选)
|
||||
- `.last_*` - 运行时生成的缓存文件
|
||||
- `monitor.log` - 运行时生成的日志文件
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Debian服务器部署步骤
|
||||
|
||||
### 第一步:准备文件
|
||||
|
||||
```bash
|
||||
# 在本地打包必需文件
|
||||
cd /mnt/e/50425/Documents/Github/GPA_Monitoring
|
||||
|
||||
# 创建压缩包(只包含必需文件)
|
||||
tar -czf gpa_monitor.tar.gz \
|
||||
monitor.py \
|
||||
config.ini \
|
||||
requirements.txt \
|
||||
setup_python.sh \
|
||||
grade-monitor.service \
|
||||
readme.md
|
||||
|
||||
# 查看压缩包内容
|
||||
tar -tzf gpa_monitor.tar.gz
|
||||
```
|
||||
|
||||
### 第二步:上传到服务器
|
||||
|
||||
```bash
|
||||
# 方法1:使用 scp
|
||||
scp gpa_monitor.tar.gz 用户名@服务器IP:/home/用户名/
|
||||
|
||||
# 方法2:使用 rsync(推荐)
|
||||
rsync -avz gpa_monitor.tar.gz 用户名@服务器IP:/home/用户名/
|
||||
|
||||
# 方法3:使用 sftp
|
||||
sftp 用户名@服务器IP
|
||||
put gpa_monitor.tar.gz
|
||||
```
|
||||
|
||||
### 第三步:在服务器上解压并安装
|
||||
|
||||
```bash
|
||||
# 登录到Debian服务器
|
||||
ssh 用户名@服务器IP
|
||||
|
||||
# 解压文件
|
||||
cd ~
|
||||
tar -xzf gpa_monitor.tar.gz
|
||||
cd gpa_monitor # 或者你解压到的目录
|
||||
|
||||
# 给脚本添加执行权限
|
||||
chmod +x setup_python.sh
|
||||
|
||||
# 运行安装脚本(会自动安装Python、创建虚拟环境、安装依赖)
|
||||
./setup_python.sh
|
||||
```
|
||||
|
||||
### 第四步:检查配置文件
|
||||
|
||||
```bash
|
||||
# 编辑配置文件(如果需要修改)
|
||||
nano config.ini
|
||||
|
||||
# 确认配置正确:
|
||||
# - USERNAME 和 PASSWORD(学号和密码)
|
||||
# - 邮箱配置(SENDER_EMAIL、SENDER_PASSWORD、RECEIVER_EMAIL)
|
||||
# - CHECK_INTERVAL(建议120秒以上)
|
||||
```
|
||||
|
||||
### 第五步:测试运行
|
||||
|
||||
```bash
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 测试运行(获取一次成绩,不进行监控)
|
||||
python3 monitor.py --test
|
||||
|
||||
# 如果测试成功,运行正式监控
|
||||
python3 monitor.py
|
||||
# 按 Ctrl+C 停止
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 设置后台运行(三选一)
|
||||
|
||||
### 方案A:使用 tmux(推荐,简单易用)
|
||||
|
||||
```bash
|
||||
# 1. 安装 tmux(如果没有)
|
||||
sudo apt update
|
||||
sudo apt install tmux
|
||||
|
||||
# 2. 创建会话并运行
|
||||
tmux new -s grade_monitor
|
||||
source venv/bin/activate
|
||||
python3 monitor.py
|
||||
|
||||
# 3. 离开会话(程序继续运行)
|
||||
# 按 Ctrl+B,然后按 D
|
||||
|
||||
# 4. 重新连接查看
|
||||
tmux attach -t grade_monitor
|
||||
|
||||
# 5. 查看所有会话
|
||||
tmux ls
|
||||
```
|
||||
|
||||
**tmux 使用时机:**
|
||||
- ✅ 测试阶段使用
|
||||
- ✅ 需要随时查看程序输出
|
||||
- ✅ 临时运行,不需要开机自启
|
||||
|
||||
---
|
||||
|
||||
### 方案B:使用 systemd 服务(推荐,生产环境)
|
||||
|
||||
**`grade-monitor.service` 文件用途:**
|
||||
这是 systemd 服务配置文件,告诉系统如何启动、管理和自动重启你的程序。
|
||||
|
||||
```bash
|
||||
# 1. 编辑服务文件,修改用户名和路径
|
||||
nano grade-monitor.service
|
||||
|
||||
# 确保这些路径正确:
|
||||
# User=你的用户名
|
||||
# WorkingDirectory=/home/你的用户名/gpa_monitor
|
||||
# ExecStart=/home/你的用户名/gpa_monitor/venv/bin/python3 /home/你的用户名/gpa_monitor/monitor.py
|
||||
|
||||
# 2. 复制服务文件到系统目录
|
||||
sudo cp grade-monitor.service /etc/systemd/system/
|
||||
|
||||
# 3. 重新加载 systemd
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
# 4. 启动服务
|
||||
sudo systemctl start grade-monitor
|
||||
|
||||
# 5. 查看状态
|
||||
sudo systemctl status grade-monitor
|
||||
|
||||
# 6. 设置开机自启
|
||||
sudo systemctl enable grade-monitor
|
||||
```
|
||||
|
||||
**systemd 常用命令:**
|
||||
```bash
|
||||
# 启动
|
||||
sudo systemctl start grade-monitor
|
||||
|
||||
# 停止
|
||||
sudo systemctl stop grade-monitor
|
||||
|
||||
# 重启
|
||||
sudo systemctl restart grade-monitor
|
||||
|
||||
# 查看状态
|
||||
sudo systemctl status grade-monitor
|
||||
|
||||
# 查看日志
|
||||
journalctl -u grade-monitor -f
|
||||
|
||||
# 开机自启
|
||||
sudo systemctl enable grade-monitor
|
||||
|
||||
# 禁用自启
|
||||
sudo systemctl disable grade-monitor
|
||||
```
|
||||
|
||||
**systemd 使用时机:**
|
||||
- ✅ 生产环境长期运行
|
||||
- ✅ 需要开机自启动
|
||||
- ✅ 程序崩溃后自动重启
|
||||
- ✅ 系统化管理
|
||||
|
||||
---
|
||||
|
||||
### 方案C:使用 nohup(最简单,但不推荐)
|
||||
|
||||
```bash
|
||||
# 后台运行
|
||||
source venv/bin/activate
|
||||
nohup python3 monitor.py > output.log 2>&1 &
|
||||
|
||||
# 查看进程
|
||||
ps aux | grep monitor.py
|
||||
|
||||
# 停止程序
|
||||
pkill -f monitor.py
|
||||
```
|
||||
|
||||
**nohup 使用时机:**
|
||||
- ✅ 临时快速运行
|
||||
- ❌ 不适合长期运行
|
||||
- ❌ 程序崩溃不会自动重启
|
||||
|
||||
---
|
||||
|
||||
## 📊 监控和维护
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
# 查看监控日志(程序自己的日志)
|
||||
tail -f ~/gpa_monitor/monitor.log
|
||||
|
||||
# 查看最后100行
|
||||
tail -n 100 ~/gpa_monitor/monitor.log
|
||||
|
||||
# 搜索关键词
|
||||
grep "新增课程" ~/gpa_monitor/monitor.log
|
||||
|
||||
# 查看系统日志(如果用systemd)
|
||||
sudo journalctl -u grade-monitor -f
|
||||
sudo journalctl -u grade-monitor --since "1 hour ago"
|
||||
```
|
||||
|
||||
### 检查运行状态
|
||||
|
||||
```bash
|
||||
# 方法1:查看进程
|
||||
ps aux | grep monitor.py
|
||||
|
||||
# 方法2:查看日志时间戳
|
||||
ls -lh ~/gpa_monitor/monitor.log
|
||||
|
||||
# 方法3:systemd状态(如果用systemd)
|
||||
sudo systemctl status grade-monitor
|
||||
```
|
||||
|
||||
### 更新程序
|
||||
|
||||
```bash
|
||||
# 1. 停止程序
|
||||
# tmux: Ctrl+C 或 tmux kill-session -t grade_monitor
|
||||
# systemd: sudo systemctl stop grade-monitor
|
||||
|
||||
# 2. 备份配置
|
||||
cp config.ini config.ini.backup
|
||||
|
||||
# 3. 上传新版本文件并解压
|
||||
|
||||
# 4. 恢复配置
|
||||
cp config.ini.backup config.ini
|
||||
|
||||
# 5. 重启程序
|
||||
# tmux: 重新运行
|
||||
# systemd: sudo systemctl restart grade-monitor
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔒 安全建议
|
||||
|
||||
### 1. 保护配置文件
|
||||
|
||||
```bash
|
||||
# 设置文件权限(只有所有者可读写)
|
||||
chmod 600 config.ini
|
||||
|
||||
# 查看权限
|
||||
ls -l config.ini
|
||||
# 应该显示:-rw------- 1 用户名 用户名
|
||||
```
|
||||
|
||||
### 2. 不要上传敏感文件到 GitHub
|
||||
|
||||
在 `.gitignore` 中添加:
|
||||
```
|
||||
config.ini
|
||||
*.log
|
||||
.last_*
|
||||
venv/
|
||||
```
|
||||
|
||||
### 3. 定期检查日志
|
||||
|
||||
```bash
|
||||
# 检查是否有异常
|
||||
grep -i "error\|fail\|warning" monitor.log
|
||||
|
||||
# 检查登录情况
|
||||
grep "登录" monitor.log | tail -20
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### Q1: 如何确认程序在运行?
|
||||
|
||||
```bash
|
||||
# 方法1:查看进程
|
||||
ps aux | grep monitor.py
|
||||
|
||||
# 方法2:查看日志最后几行
|
||||
tail monitor.log
|
||||
|
||||
# 方法3:查看文件修改时间
|
||||
ls -lh monitor.log
|
||||
```
|
||||
|
||||
### Q2: 程序报错"请不要过快点击"怎么办?
|
||||
|
||||
```bash
|
||||
# 编辑配置文件,增加检查间隔
|
||||
nano config.ini
|
||||
|
||||
# 修改 CHECK_INTERVAL 为更大的值(如300秒)
|
||||
CHECK_INTERVAL = 300
|
||||
|
||||
# 重启程序
|
||||
```
|
||||
|
||||
### Q3: 如何在多台服务器部署?
|
||||
|
||||
```bash
|
||||
# 每台服务器重复部署步骤,注意:
|
||||
# 1. 每台服务器使用不同的监控账号(如果可能)
|
||||
# 2. 适当增加 CHECK_INTERVAL 避免同时访问
|
||||
# 3. 可以设置不同的邮件接收地址
|
||||
```
|
||||
|
||||
### Q4: 忘记 tmux 会话名怎么办?
|
||||
|
||||
```bash
|
||||
# 列出所有会话
|
||||
tmux ls
|
||||
|
||||
# 连接到第一个会话
|
||||
tmux attach
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 快速命令参考
|
||||
|
||||
```bash
|
||||
# === 部署 ===
|
||||
tar -xzf gpa_monitor.tar.gz
|
||||
cd gpa_monitor
|
||||
chmod +x setup_python.sh
|
||||
./setup_python.sh
|
||||
|
||||
# === 运行 ===
|
||||
# 测试
|
||||
source venv/bin/activate && python3 monitor.py --test
|
||||
|
||||
# tmux运行
|
||||
tmux new -s grade_monitor
|
||||
source venv/bin/activate && python3 monitor.py
|
||||
|
||||
# systemd运行
|
||||
sudo cp grade-monitor.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl start grade-monitor
|
||||
sudo systemctl enable grade-monitor
|
||||
|
||||
# === 监控 ===
|
||||
# 查看日志
|
||||
tail -f monitor.log
|
||||
|
||||
# 查看状态
|
||||
sudo systemctl status grade-monitor
|
||||
|
||||
# === 停止 ===
|
||||
# tmux: Ctrl+C
|
||||
# systemd: sudo systemctl stop grade-monitor
|
||||
# nohup: pkill -f monitor.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 获取帮助
|
||||
|
||||
- 查看项目 README: `cat readme.md`
|
||||
- 查看常见问题: `cat 常见问题解决.md`
|
||||
- 查看详细部署: `cat 部署.md`
|
||||
- 查看程序帮助: `python3 monitor.py --help`
|
||||
Reference in New Issue
Block a user