学校有个研究性学习活动,我便选了这个课题,正好社团(也许吧)刚到一台 Dell Power Edge R730 服务器,我想利用这台服务器来搭建一个镜像分发平台。
而由于那台 R730 搭载的是 E5 2906,因此轻量成了最重要的考虑。
本项目旨在构建一个"镜呈"镜像分发平台,实现以下目标:
- 提供高速、稳定的镜像下载服务
- 提供清晰的版本分类和检索功能
- 构建简洁美观的用户界面
- 支持多平台、多版本的操作系统镜像
- 轻量化的设计
镜呈系统采用分层架构设计,自顶向下分为四层:
| 层级 | 组成 | 说明 |
|---|---|---|
| 用户层 (User Layer) | 浏览器 | 用户通过浏览器访问系统 |
| 展示层 (Presentation Layer) | HTML/CSS/JavaScript | 前端页面,负责界面展示与交互 |
| 服务层 (Service Layer) | Caddy Web Server | 静态文件服务与请求路由 |
| 数据层 (Data Layer) | JSON 配置文件 + ISO 镜像文件 | 镜像信息与文件存储 |
系统采用无状态设计,所有数据通过静态文件存储,无需数据库支持。具有以下优势:
- 部署简单 — 无需配置数据库
- 性能优异 — 无需数据库查询开销
- 易于扩展 — 支持水平扩展
系统采用 JSON 数据驱动的方式管理镜像信息:
- 配置灵活 — 无需修改代码即可添加新镜像
- 数据与展示分离 — 便于维护
系统采用模块化设计,各个组件职责清晰:
- 前端模块 — 负责用户界面展示和交互
- 服务模块 — 负责静态文件服务和请求路由
- 数据模块 — 负责镜像信息的存储和管理
simple-mirror/
├── html/ # 前端静态文件
│ ├── index.html # 主页面
│ └── favicon.svg # 网站图标
├── mirrors/ # 镜像文件目录
│ ├── list.json # 镜像分类列表
│ ├── debian/ # Debian 镜像
│ │ ├── list.json # Debian 版本列表
│ │ └── *.iso # ISO 文件
│ ├── ubuntu/ # Ubuntu 镜像
│ │ ├── list.json # Ubuntu 版本列表
│ │ └── *.iso # ISO 文件
│ ├── windows/ # Windows 镜像
│ │ ├── list.json # Windows 版本列表
│ │ └── *.iso # ISO 文件
│ └── *.png # 系统图标
├── Caddyfile # Caddy 配置文件
├── images/ # 图片资源
│ └── 效果图.png # 界面截图
└── README.md # 项目文档
| 组件 | 技术选型 | 用途 |
|---|---|---|
| 前端 | HTML/CSS/JavaScript | 页面展示与交互 |
| 服务 | Caddy | 静态文件服务与 HTTPS |
| 数据 | JSON 配置文件 | 镜像元数据管理 |
| 存储 | 文件系统 | ISO 镜像文件存储 |
