9.9 KiB
9.9 KiB
服务器部署指南
本文档详细说明如何将成绩监控系统部署到Linux服务器上。
📋 前置要求
- Linux服务器(Debian/Ubuntu/CentOS等)
- Python 3.7+
- 服务器能访问外网
- SSH访问权限
📦 准备文件
需要上传的文件
grade_monitor/
├── monitor.py # 主程序(必需)
├── config.ini # 配置文件(必需)
├── requirements.txt # Python依赖(必需)
├── setup_python.sh # 安装脚本(必需)
└── readme.md # 说明文档(可选)
打包文件
在Windows本地执行:
# 方法1:使用tar(需要WSL或Git Bash)
tar -czf grade_monitor.tar.gz monitor.py config.ini requirements.txt setup_python.sh readme.md
# 方法2:使用7-Zip或WinRAR手动打包
🚀 部署步骤
步骤1:修改配置文件
在上传前,确保 config.ini 中填入了正确的信息:
[login]
USERNAME = 你的学号
PASSWORD = 你的密码
LOGIN_URL = ...
GRADE_URL = ...
[email]
SENDER_EMAIL = your_email@163.com
SENDER_PASSWORD = SMTP授权码
RECEIVER_EMAIL = 接收通知的邮箱
[monitor]
CHECK_INTERVAL = 60
REQUEST_DELAY = 5
MAX_RETRIES = 3
RETRY_DELAY = 10
步骤2:上传到服务器
方法A:使用SCP上传
# 上传打包文件
scp grade_monitor.tar.gz username@server-ip:/home/username/
# 或直接上传文件
scp monitor.py config.ini requirements.txt setup_python.sh username@server-ip:/home/username/grade_monitor/
方法B:使用SFTP上传
sftp username@server-ip
put grade_monitor.tar.gz
exit
方法C:使用FTP客户端
使用FileZilla、WinSCP等工具上传文件。
步骤3:连接到服务器
ssh username@server-ip
步骤4:解压和安装
# 创建工作目录
mkdir -p ~/grade_monitor
cd ~/grade_monitor
# 添加执行权限
chmod +x setup_python.sh
# 运行安装脚本
./setup_python.sh
安装脚本会自动:
- 更新apt包列表
- 安装Python3和pip
- 创建虚拟环境
- 安装所需的Python包(requests、beautifulsoup4)
步骤5:测试运行
# 激活虚拟环境
source venv/bin/activate
# 测试模式运行
python3 monitor.py --test
检查输出:
- 是否成功登录
- 是否获取到成绩页面
- 查看提取的成绩内容
# 查看提取的成绩
cat .last_grade_content.txt
# 应该看到类似这样的内容:
# ============================================================
# 总平均绩点:4.3471
# ============================================================
#
# 学年学期 | 课程代码 | 课程序号 | 课程名称 | ...
# --------------------------------------------------------
# 2025-2026 秋季 | A0801051020 | A095478 | C++程序设计 | ...
🔄 后台运行方案
方案A:使用systemd(推荐,适合长期运行)
1. 创建服务文件
sudo nano /etc/systemd/system/grade-monitor.service
2. 填入以下内容
[Unit]
Description=Grade Monitoring Service
After=network.target
[Service]
Type=simple
User=你的用户名
WorkingDirectory=/home/你的用户名/grade_monitor
ExecStart=/home/你的用户名/grade_monitor/venv/bin/python3 /home/你的用户名/grade_monitor/monitor.py
Restart=always
RestartSec=30
StandardOutput=append:/home/你的用户名/grade_monitor/monitor.log
StandardError=append:/home/你的用户名/grade_monitor/monitor.log
[Install]
WantedBy=multi-user.target
注意: 将上面的"你的用户名"替换为实际的Linux用户名
3. 启动服务
# 重载systemd配置
sudo systemctl daemon-reload
# 启用开机自启
sudo systemctl enable grade-monitor
# 启动服务
sudo systemctl start grade-monitor
# 查看服务状态
sudo systemctl status grade-monitor
4. 管理服务
# 查看日志
sudo journalctl -u grade-monitor -f
# 停止服务
sudo systemctl stop grade-monitor
# 重启服务
sudo systemctl restart grade-monitor
# 禁用开机自启
sudo systemctl disable grade-monitor
方案B:使用tmux(简单,适合临时运行)
1. 安装tmux
# Debian/Ubuntu
sudo apt install tmux
# CentOS/RHEL
sudo yum install tmux
2. 创建会话并运行
# 创建新的tmux会话
tmux new -s grade_monitor
# 激活虚拟环境
source venv/bin/activate
# 运行程序
python3 monitor.py
3. 离开和重连会话
# 离开会话(程序继续运行)
# 按键:Ctrl+B,然后按 D
# 重新连接到会话
tmux attach -t grade_monitor
# 查看所有会话
tmux ls
# 关闭会话
tmux kill-session -t grade_monitor
方案C:使用screen
# 安装screen
sudo apt install screen
# 创建新会话
screen -S grade_monitor
# 激活环境并运行
source venv/bin/activate
python3 monitor.py
# 离开会话:Ctrl+A,然后按 D
# 重新连接
screen -r grade_monitor
# 查看所有会话
screen -ls
方案D:使用nohup(最简单)
# 激活虚拟环境
source venv/bin/activate
# 后台运行
nohup python3 monitor.py > monitor.log 2>&1 &
# 查看进程
ps aux | grep monitor.py
# 停止进程
kill <进程ID>
📊 监控和维护
查看运行状态
# 方法1:查看日志文件
tail -f ~/grade_monitor/monitor.log
# 方法2:查看systemd日志(如果使用systemd)
sudo journalctl -u grade-monitor -n 50 -f
# 方法3:查看进程
ps aux | grep monitor.py
查看当前成绩
cd ~/grade_monitor
cat .last_grade_content.txt
手动触发测试
cd ~/grade_monitor
source venv/bin/activate
python3 monitor.py --test
🔧 常见问题
问题1:连接服务器失败
可能原因:
- SSH端口被防火墙拦截
- 服务器IP或用户名错误
- SSH密钥配置问题
解决方法:
# 指定端口
ssh -p 端口号 username@server-ip
# 使用密钥
ssh -i /path/to/key.pem username@server-ip
问题2:无法访问学校网站
可能原因:
- 服务器在校外,需要VPN
- 防火墙拦截
解决方法:
- 使用校内服务器
- 配置代理
- 联系网络管理员
问题3:pip安装失败
解决方法:
# 更新pip
pip install --upgrade pip
# 使用国内镜像
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 或使用清华源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
问题4:权限不足
解决方法:
# 修改文件所有者
sudo chown -R username:username ~/grade_monitor
# 修改执行权限
chmod +x ~/grade_monitor/*.sh
问题5:邮件发送失败
解决方法:
- 确认SMTP授权码正确(不是邮箱密码)
- 检查服务器能否访问smtp.163.com(端口465)
- 查看详细错误信息:
tail -f monitor.log
# 测试网络连接
telnet smtp.163.com 465
# 或
nc -zv smtp.163.com 465
🔐 安全建议
1. 保护配置文件
# 限制config.ini权限
chmod 600 ~/grade_monitor/config.ini
# 确保只有自己能访问
ls -la ~/grade_monitor/config.ini
# 应显示:-rw------- 1 username username
2. 使用环境变量(可选)
不在配置文件中存储明文密码,而是使用环境变量:
# 设置环境变量
export GRADE_USERNAME="你的学号"
export GRADE_PASSWORD="你的密码"
export EMAIL_PASSWORD="SMTP授权码"
# 添加到.bashrc使其永久生效
echo 'export GRADE_USERNAME="你的学号"' >> ~/.bashrc
echo 'export GRADE_PASSWORD="你的密码"' >> ~/.bashrc
echo 'export EMAIL_PASSWORD="SMTP授权码"' >> ~/.bashrc
3. 定期更新
# 更新系统
sudo apt update && sudo apt upgrade
# 更新Python包
cd ~/grade_monitor
source venv/bin/activate
pip install --upgrade requests beautifulsoup4
📱 监控建议
设置监控脚本
创建一个检查脚本 check_status.sh:
#!/bin/bash
# 检查进程是否运行
if pgrep -f "monitor.py" > /dev/null; then
echo "✓ 监控程序正在运行"
else
echo "✗ 监控程序未运行!"
# 可以在这里添加重启逻辑
# systemctl start grade-monitor
fi
# 检查最近的日志
echo ""
echo "最近的日志:"
tail -n 5 ~/grade_monitor/monitor.log
定期检查(使用cron)
# 编辑crontab
crontab -e
# 添加以下行(每天检查一次)
0 12 * * * /home/username/grade_monitor/check_status.sh
🎯 完整部署示例
# === 本地操作(Windows/WSL) ===
cd E:\50425\Documents\Github\GPA_Monitoring
tar -czf grade_monitor.tar.gz monitor.py config.ini requirements.txt setup_python.sh readme.md
scp grade_monitor.tar.gz user@server.com:~/
# === 服务器操作 ===
ssh user@server.com
# 解压和安装
mkdir -p ~/grade_monitor
cd ~/grade_monitor
tar -xzf ../grade_monitor.tar.gz
chmod +x setup_python.sh
./setup_python.sh
# 测试
source venv/bin/activate
python3 monitor.py --test
cat .last_grade_content.txt
# 配置systemd服务
sudo nano /etc/systemd/system/grade-monitor.service
# (填入服务配置)
sudo systemctl daemon-reload
sudo systemctl enable grade-monitor
sudo systemctl start grade-monitor
sudo systemctl status grade-monitor
# 查看日志
sudo journalctl -u grade-monitor -f
✅ 部署检查清单
- 文件已上传到服务器
- config.ini配置正确(账号、密码、邮箱)
- 运行setup_python.sh安装依赖
- 测试模式运行成功
- 成绩提取格式正确
- 配置后台运行(systemd/tmux/screen)
- 服务正常启动
- 日志输出正常
- 收到测试邮件
- 设置文件权限(chmod 600 config.ini)
📞 获取帮助
如果遇到问题:
- 查看
monitor.log了解详细错误 - 运行
python3 monitor.py --test测试 - 检查
.debug_response.html了解实际响应 - 查看
readme.md了解更多功能说明
部署完成后,系统将自动监控成绩变化,有新课程成绩时会立即发送邮件通知!