# 成绩监控系统 - 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`