欢迎来到福编程网,本站提供各种互联网专业知识!

以中山大学镜像站为例谈如何利用开源来搭建镜像网站

发布时间:2016-08-29 作者:fangpeishi 来源:FPs
这篇文章主要介绍了以中山大学镜像站为例谈如何利用开源来搭建镜像网站的方案,文中提的一些大学网站在GitHub上的开源同步工具都很实用,需要的朋友可以参考下

基本流程

服务器&带宽&存储

同步源选择 ,架构选择

提供的服务:ftp | http | rsync 3.官网获取同步方法或工具,源列表(选择上游源)

配置同步工具

定时同步 (crontable)

备份工作,监控与报警,日常维护,优化

文档编写(Wiki),Submit MirrorsList

其他

0/8.服务器&带宽&存储

服务器: Linux ,maybe windows ?..orz

带宽: 越大越好(上行带宽太小无法提供更好的服务,下行太小无法及时同步完整(按网络情况分时段同步,同时尽量避开负载高峰))。 如果要对外服务,需要一个公网IP,有域名更好。

储存: 越大越好(如果是对外提供大量服务,家用的硬盘估计撑不了一年)。可考虑用SSD作为cache。

1/8.同步源选择 ,架构选择

同步源选择:

按需求选择需要的发行版,稳定性第一,多样性第二,满足需求即可。同时也要注意”性价比“(自用镜像无需考虑),例如 OpenBSD之类的性价比可能很低 ,消耗大量的同步流量和磁盘空间可能性价比不是很大,同时例如大学中的镜像站需要网络中心的支持,所以需要考虑到校内用户的支持和热度(学生支持度不 够,nc的支持可能也会下降),同时校内有一定热度才好传承,所以如果添加类似Ubuntu的发行版”性价比“会很高。 慎重选择上线的发行版(自身资源估计),上线尽量保持稳定。切勿随意更换服务。注意预留足够空间!

感谢中大IGI师兄以上给出的建议。推荐:《搭建linux mirror镜像》

架构选择:

一个发行版可能保护多种架构,(例如debian :alpha、amd64、arm、armel、hppa、hurd-i386、i386、ia64、m68k、mipsel、mips、powerpc、s390、sh and sparc,source,debian现有oldstable,stable ,testing,unstable,还有experimental版本),所以需要按需求选择需要同步的架构(因为磁盘空间不是无限的),一般来说就选择i386,amd64,外加source。

2/8.提供的服务:ftp | http | rsync

FTP:vsftpd ?还有很多,不太了解,囧。

HTTP: Webserver建议选择nginx或lighttpd,因为镜像包含大量的静态文件,这两者据说比Apache更有优势, 记得cn99挂掉后,将Apache换到nginx了? 建议 :nginx, lighttpd

Rsync:为下游提供,例如清华,中科大有开放某些发行版,国内提供rsync的镜像站不多,主要是提供rsync会有很高的IO负载,一般承受不起。如果有意愿提供rsync,google即可。

3/8.官网获取同步方法或工具,源列表(选择上游源)

同步方法或工具: 一般就是Rsync,然后从上游拉东西,可以自己写脚本,也可以用官方提供的工具,例如debian的ftpsync等。 切勿使用wget 等工具!不能保证文件link等属性,也无法做到增量同步,浪费资源!

清华的同步脚本:http://git.tuna.tsinghua.edu.cn/

北交Ideal的Mirror工具:https://github.com/ideal/mirror

(感谢ideal曾经提供的帮助,有意愿搭建镜像站的同学遇到 问题可在Twitter上找到他)Rubygems,PyPI,npm也是同样找寻或自己编写同步脚本后工具,或做反向代理。除了主动拉的,还有是官方主镜像推送到官方其他镜像,例如ArchlinuxARM。

ubuntu还有个同步工具 apt-mirror

上游源:

上发行版官网获取MirrorsList,然后找寻提供rsync服务的镜像,选择上游源,一般选择国内,日本,新加坡,台湾等亚太地区的源。 注意:官方rsync可能只对指定IP开放(负载问题)

4/8.配置同步工具

自己写同步脚本 :

失败邮件报警,同步锁控制,两步同步,其他rsync参数。

Rsync教程:读 igi的同步脚本: http://www.igigo.net/archives/65

使用同步工具:

清华的同步脚本:http://git.tuna.tsinghua.edu.cn/

北交Ideal的Mirror工具:https://github.com/ideal/mirror/

PyPI,Rubygems,npm:

读Rubygems和PyPI同步简单教程 : http://fangpeishi.com/post/da-jian-pypiji-rubygemsjing-xiang

读npm同步教程 :http://maskray.me/blog/2012-11-21-tuna-npm-mirror

注意: 添加同步锁,debian系需要两步同步(先同步pool目录)。

5/8.定时同步 (crontable)

定时同步: 把写好的cron脚本丢进 /etc/cron.d/ 《定时自动任务crontab使用教程》 注意:

/etc/cron.d the file names must conform to the filename requirements of run-parts: they must be entirely made up of let

相关推荐