2009年2月28日星期六

建立Ubuntu APT镜像服务器

由于学校的网络环境特殊,造成部分Linux用户无法正常上网更新,于是在学校内搭建了一个Apt的镜像服务器,现在吧搭建过程交代一下:
首先先装好了一个ubuntu server系统,装了个lighttpd服务器(个人喜好而已,其实真正使用时应该用apache)

#apt-get install lighttpd

然后是apt-mirror

#apt-get install apt-mirror

配置apt-mirror:

#pico /etc/apt/mirror.list

文件内容:

############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privileges
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
set nthreads 40
set _tilde 0
#
############# end config ##############

deb http://mirrors.163.com/ubuntu/ intrepid main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ intrepid-backports main restricted universe multiverse

clean http://mirrors.163.com/ubuntu/

其实就是source.list的内容,加上一头一尾。
因为需求比较少,我就没加deb-src,可以节省不少空间。另外,默认是20线程的,我改成了40线程。
修改好了以后就可以建立镜像了:

#apt-mirror

根据你的网速,这个下载过程会很久(因为要下载的东西很多,我的配置文件需要下载26G左右的数据)。我等了6个小时左右完成了这个操作。
下载的文件保存在/var/spool/apt-mirror/ 下一步就是在lighttpd的web文件夹建立一个link过去就可以了

#ln -s /var/spool/apt-mirror/mirror/mirrors.163.com /var/www/ubuntu

这样,一个apt镜像就可以访问了,客户端只需要修改它的/etc/apt/source.list就可以了,替换一下服务器地址就行。

另外,还要建立一个定期任务,让apt-mirror自动更新:
修改/etc/cron.d/apt-mirror:

0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log


另外,/var/spool/apt-mirror/var/clean.sh可以清理掉一些没用的文件,每隔一段时间运行一下就行。

1 条评论: