8.1 KiB
8.1 KiB
成绩监控系统 - 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服务器部署步骤
第一步:准备文件
# 在本地打包必需文件
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
第二步:上传到服务器
# 方法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
第三步:在服务器上解压并安装
# 登录到Debian服务器
ssh 用户名@服务器IP
# 解压文件
cd ~
tar -xzf gpa_monitor.tar.gz
cd gpa_monitor # 或者你解压到的目录
# 给脚本添加执行权限
chmod +x setup_python.sh
# 运行安装脚本(会自动安装Python、创建虚拟环境、安装依赖)
./setup_python.sh
第四步:检查配置文件
# 编辑配置文件(如果需要修改)
nano config.ini
# 确认配置正确:
# - USERNAME 和 PASSWORD(学号和密码)
# - 邮箱配置(SENDER_EMAIL、SENDER_PASSWORD、RECEIVER_EMAIL)
# - CHECK_INTERVAL(建议120秒以上)
第五步:测试运行
# 激活虚拟环境
source venv/bin/activate
# 测试运行(获取一次成绩,不进行监控)
python3 monitor.py --test
# 如果测试成功,运行正式监控
python3 monitor.py
# 按 Ctrl+C 停止
🔧 设置后台运行(三选一)
方案A:使用 tmux(推荐,简单易用)
# 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 服务配置文件,告诉系统如何启动、管理和自动重启你的程序。
# 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 常用命令:
# 启动
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(最简单,但不推荐)
# 后台运行
source venv/bin/activate
nohup python3 monitor.py > output.log 2>&1 &
# 查看进程
ps aux | grep monitor.py
# 停止程序
pkill -f monitor.py
nohup 使用时机:
- ✅ 临时快速运行
- ❌ 不适合长期运行
- ❌ 程序崩溃不会自动重启
📊 监控和维护
查看日志
# 查看监控日志(程序自己的日志)
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"
检查运行状态
# 方法1:查看进程
ps aux | grep monitor.py
# 方法2:查看日志时间戳
ls -lh ~/gpa_monitor/monitor.log
# 方法3:systemd状态(如果用systemd)
sudo systemctl status grade-monitor
更新程序
# 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. 保护配置文件
# 设置文件权限(只有所有者可读写)
chmod 600 config.ini
# 查看权限
ls -l config.ini
# 应该显示:-rw------- 1 用户名 用户名
2. 不要上传敏感文件到 GitHub
在 .gitignore 中添加:
config.ini
*.log
.last_*
venv/
3. 定期检查日志
# 检查是否有异常
grep -i "error\|fail\|warning" monitor.log
# 检查登录情况
grep "登录" monitor.log | tail -20
❓ 常见问题
Q1: 如何确认程序在运行?
# 方法1:查看进程
ps aux | grep monitor.py
# 方法2:查看日志最后几行
tail monitor.log
# 方法3:查看文件修改时间
ls -lh monitor.log
Q2: 程序报错"请不要过快点击"怎么办?
# 编辑配置文件,增加检查间隔
nano config.ini
# 修改 CHECK_INTERVAL 为更大的值(如300秒)
CHECK_INTERVAL = 300
# 重启程序
Q3: 如何在多台服务器部署?
# 每台服务器重复部署步骤,注意:
# 1. 每台服务器使用不同的监控账号(如果可能)
# 2. 适当增加 CHECK_INTERVAL 避免同时访问
# 3. 可以设置不同的邮件接收地址
Q4: 忘记 tmux 会话名怎么办?
# 列出所有会话
tmux ls
# 连接到第一个会话
tmux attach
📝 快速命令参考
# === 部署 ===
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