1. 选择云厂商与学生机型号
- 注册:使用学生邮箱申请教育优惠(阿里云/腾讯云/AWS/GCP等),选择含香港地域的账号权限。
- 型号选择:CPU 1~2 核、内存 1~4GB、系统盘 20~40GB 足够课堂实验;项目复杂可升配置。
- 网络:确认可选香港(HK)地域与公网带宽计费方式,优先选择按量包年结合带宽流量包。
2. 购买实例与网络设置
- 实例购买:选择镜像(Ubuntu 22.04 推荐),选择按小时或按月计费,确认安全组默认规则。
- 弹性公网 IP(EIP):绑定到实例,开通DNS解析(如将课程域名指向EIP)。
- 安全组规则:允许 22(SSH),80(HTTP),443(HTTPS);课堂可临时开放额外端口,实验结束及时关闭。
3. 创建 SSH 密钥与登录
- 本地生成密钥:ssh-keygen -t rsa -b 4096 -C "you@school"。
- 在控制台上传公钥,创建实例时选择该公钥;首次登录:ssh -i ~/.ssh/id_rsa ubuntu@
。
- 禁用密码登录:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no,重启 sshd。
4. 系统初始化与性能调整
- 更新与常用工具:sudo apt update && sudo apt upgrade -y;安装 git, curl, build-essential。
- 配置时区与时钟:sudo timedatectl set-timezone Asia/Hong_Kong;确保 NTP 正常。
- 调整 swap(若内存小):fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile。
5. 安装并配置 Nginx 作为反向代理
- 安装:sudo apt install nginx -y;启用并开机启动:sudo systemctl enable --now nginx。
- 配置站点:在 /etc/nginx/sites-available/ 创建站点 conf,proxy_pass 到后端(如 127.0.0.1:5000)。
- 开启 HTTPS:使用 certbot 自动申请 Let's Encrypt(注意: 香港 IP 需能访问 80/443),sudo apt install certbot python3-certbot-nginx。
6. 课堂实验示例:部署 Flask/Python 应用
- 环境准备:创建虚拟环境 python3 -m venv venv && source venv/bin/activate;安装依赖 pip install -r requirements.txt。
- 启动方式:使用 gunicorn 启动并创建 systemd 服务文件 /etc/systemd/system/myapp.service,设置 Restart=always。
- Nginx 反向代理:在站点 conf 中 proxy_pass http://127.0.0.1:8000,重载 nginx。
7. 使用 Docker 将课外项目容器化
- Docker 安装:sudo apt install docker.io && sudo usermod -aG docker $USER。
- 编写 Dockerfile:FROM python:3.11 ... COPY . /app ... CMD ["gunicorn","app:app","-b","0.0.0.0:8000"]。
- 容器编排:使用 docker-compose.yml 定义服务、网络与卷,docker-compose up -d 部署,多项目隔离。
8. 自动化部署(CI/CD)与版本控制
- 代码托管:使用 GitHub/GitLab,主分支保护与简单 PR 流程。
- CI 示例:GitHub Actions 配置 .github/workflows/deploy.yml,触发构建镜像并通过 SSH 或使用云镜像仓库更新实例。
- 部署脚本:写 deploy.sh 做拉取代码、重建镜像、重启容器,设置为可由 CI 远程执行。
9. 备份、快照与数据持久化
- 快照:定期在控制台对系统盘做快照(课堂前后各一次)。
- 数据卷:将数据库或上传文件放在独立数据盘或 Docker 卷,配置自动备份脚本 rsync/s3-sync 到对象存储。
- 恢复演练:定期进行一次恢复演练,验证快照可用于重建。
10. 安全与成本优化最佳实践
- 安全:仅开放必要端口、使用 SSH Key、禁用 root 登录、安装 fail2ban 与 ufw 规则。
- 监控:安装监控 agent(如 CloudWatch/Prometheus + Grafana)并设置报警。
- 成本:课堂闲时关机、使用学生折扣或预留实例、按需扩缩容,避免长时间高规格实例空置。
11. 问:学生机适合同时做课堂实验和课外项目吗?
- 回答要点:适合小规模并发低的实验与项目,建议为课堂与个人项目分配不同实例或使用容器/端口隔离;复杂项目应选择更高配置并考虑成本。
12. 答:如何保证多名学生能获得一致的实验环境?
- 建议:制作基础镜像或 Docker 镜像,提供初始化脚本(bootstrap.sh),统一 Git 仓库示例代码;课堂开始前由教师恢复快照或批量启动容器实例。
13. 问:在香港部署有什么网络/合规优势与注意事项?
- 回答:香港延迟低、对内地/亚太访问友好,但需注意跨境数据传输法规和课程内容合规;若面向内地学生,考虑 CDN 与内地镜像加速。
来源:云服务器学生机 香港课堂实验与课外项目部署最佳实践