企业内网,很多机器不方便直接去外网安装和更新,所以想到了自建Ubuntu Mirror的想法。最开始不知道实现方法,网上上搜索了很多文章,借鉴了很多做法。最后发现,网上别人成功的方法只能借鉴,没法照搬。每一个不同环境实现Mirror都会有不同的差异,但是大道同归,主题思路是差不多的。下面分享我总结和整理的方法。
一、安装Ubuntu 18.04,此过程步骤跳过。
二、安装apt-mirror:
sudo apt-get install apt-mirror
因为最后是通过Web的方式提供源文件,所以我们也把nginx安装了:
sudo apt-get install nginx
安装完apt-mirror后,会在/etc/apt下产生一个mirror.list文件,我们需要在里面设置数据根目录 :
sudo vi /etc/apt/mirror.list
编辑mirror.list文件:
set base_path /var/spool/apt-mirror
#
# 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 <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
# 20个线程同时下载
set nthreads 20
set _tilde 0
保存退出,就可以开始下载离线镜像包了。不过下载前,我们需要先确认自己网络环境,确认是去ubuntu官网同步下载速度,如何很慢的话,建议要更改为国内源,国内源很多,有ubuntu国内官方源,也有一些大学和大厂自建的源。下面网址收录了官网和国内源的地址,大家根据自己喜爱选择,建议选择官网、aliyun、清华:
mirror.list里面默认是国外官网的镜像地址,我修改为国内官网的镜像地址,过程中发现cn.archive.ubuntu.com速度其实很慢,反而直接使用archive.ubuntu.com更改。这还是跟自己的网路环境有关系,因为同步文件数百G,建议大家一定要选好镜像地址。镜像文件目录,因为是测试,我只选择了main、security、updates。
deb http://cn.archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
clean http://cn.archive.ubuntu.com/ubuntu
以上准备好以后,我们开始进行同步:
sudo apt-mirror
这个过程要等很久,同步文件有几百G,大家要提前规划好server磁盘空间。也注意专线频宽占用。
同步完成后,接下来我们开始配置HTTP访问,前面我们安装了nginx,先要调整配置:
先打开配置文件:
sudo vi /etc/nginx/sites-enabled/default
编辑文件内容,主要设定服务端口,autoindex on;调整根目录。
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
autoindex on;
root /var/spool/apt-mirror/mirror/;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
保存配置后,我们看看nginx配置是否成功:
sudo nginx -t
成功后有如下提示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果测试通过,表示配置文件没有问题,那么就可以开启服务:
sudo service nginx restart
通过web可以成功访问:http://localhost 。
三、客户端验证,打开客户端(18.04)source文件:
sudo vi /etc/apt/source.list
将source.list中的网址替换为内网的Ubuntu mirror网址:
deb http://yourservername/ubuntu bionic main restricted universe multiverse
deb http://yourservername/ubuntu bionic-security main restricted universe multiverse
deb http://yourservername/ubuntu bionic-updates main restricted universe multiverse
更新镜像源缓存:
sudo apt-get update
客户端安装测试:
sudo apt-get install nginx
验证安装来源:
sudo apt policy nginx
nginx:
Installed: 1.14.0-0ubuntu1.9
Candidate: 1.14.0-0ubuntu1.9
Version table:
*** 1.14.0-0ubuntu1.9 500
500 http://yourservername/ubuntu bionic-updates/main amd64 Packages
500 http://yourservername/ubuntu bionic-security/main amd64 Packages
100 /var/lib/dpkg/status
1.14.0-0ubuntu1 500
500 http://yourservername/ubuntu bionic/main amd64 Packages
四、此外,还可以在mirror server设置定时更新镜像源,我们需要配置apt-mirror每天定时同步,其实就是配置cron。这里apt-mirror提供了cron模板文件,在/etc/cron.d/apt-mirror 中:
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
PS:注意目录要根据自己的安装目录配置。每台Ubuntu安装后因分区差异,目录都略有不同。
五、以上过程,很多方法都是网上自学的,如果不足之处,望予以指正。极少有ubuntu 自建mirror需求,如有使用,您可以选择作为实现参考方法。镜像URL需要根据自己使用的client架构选择,URL可以参考aliyun、清华等给出的建议URL地址。谢谢!