【rpm】如果在大規(guī)模封閉的生產(chǎn)環(huán)境搭建rpm鏡像站

一肪获、背景前言

在網(wǎng)絡(luò)上,每一個(gè) Linux 分發(fā)版本的安裝教程在文末都不忘提醒讀者“請(qǐng)使用 yum(或者 apt)為你的系統(tǒng)進(jìn)行更新柒傻,安裝最新的更新和補(bǔ)丁孝赫,以修復(fù)安全漏洞和獲取最新功能“,更新的過程也基本上一番風(fēng)順:用戶無需修改配置红符,便能輕易地連接到最快的站點(diǎn)青柄,下載到最新的更新,仰仗互聯(lián)網(wǎng)的開放和便捷预侯,這一切都顯得如此理所應(yīng)當(dāng)致开。

然而如果你是一個(gè)規(guī)模龐大且封閉的生產(chǎn)環(huán)境的管理員,你的設(shè)備沒有公網(wǎng)的訪問權(quán)限萎馅,獲取更新双戳、甚至哪怕是裝一個(gè) vim 的過程都可能變得十分曲折。你可能會(huì)想到從光盤中安裝軟件包糜芳,但遇到關(guān)鍵更新飒货、或者嚴(yán)重 Bug 時(shí),這種方法又失效了峭竣。

如果你也遇見了上面的問題塘辅,那么在你自己管理的環(huán)境中,很可能也需要一個(gè)隨時(shí)更新的鏡像站皆撩。本文就來分享一下扣墩,如何搭建一個(gè)鏡像站,以及如何高效的利用這個(gè)鏡像站。

鑒于生產(chǎn)環(huán)境中的 Linux 分發(fā)版本普及度呻惕,本文介紹的鏡像站安裝和使用主要針對(duì) CentOS盘榨;Ubuntu 另有其獨(dú)特的搭建思路,但因?yàn)閼?yīng)用較少蟆融,本文暫不涉及草巡。


二、搭建鏡像站


初識(shí)公共鏡像站

在 CentOS 的官網(wǎng)上型酥,可以找到所有各個(gè)鏡像站的源頭山憨,也就是最權(quán)威的官方站點(diǎn):http://mirror.centos.org,里面保存了 CentOS 各個(gè)版本的鏡像文件和 rpm 包弥喉。但是郁竟,世界上絕大多數(shù)的鏡像站,同步的都是這個(gè)官方站點(diǎn)的一個(gè)子目錄:http://mirror.centos.org/centos由境。這個(gè)“centos”子目錄有一個(gè)特點(diǎn)棚亩,就是只提供了各個(gè)大版本下面最新的鏡像文件和最新的 rpm 包,比如當(dāng)前的 5.11虏杰,6.8 和 7.2讥蟆。舊版本的文件夾已經(jīng)空了。如果需要下載舊版本的鏡像文件纺阔,則需要去另外一個(gè)地方:http://vault.centos.org瘸彤。這里面將各個(gè)版本的 CentOS 鏡像都做了歸檔,可以通過鏈接和種子的方式下載到笛钝。

雖然鏡像有小版本之分质况,但 rpm 安裝包則是大版本內(nèi)通用的,比如你的系統(tǒng)版本是 CentOS 6.3玻靡,使用 CentOS 6 的最新鏡像源是完全沒有問題的结榄,即便最新版本已經(jīng)到了 6.8。因此通用的鏡像站囤捻,已經(jīng)完全能夠滿足日常更新的需要了臼朗。

還有一件不得不提的事情:有一個(gè)叫做?EPEL(Extra Packages for Enterprise Linux)的軟件源,是由 Fedora 用戶組維護(hù)的面向紅帽系列分發(fā)版的軟件源最蕾,里面包含了諸多優(yōu)質(zhì)的軟件依溯,nginx 就是其中之一。一般地瘟则,我們也會(huì)將這個(gè)軟件源同步在自己的環(huán)境中黎炉。


使用 Nginx, rsync 和 cron 搭建鏡像站


下面我們就來聊一聊如何搭建一個(gè)簡(jiǎn)約的鏡像站。整個(gè)過程大概僅需 20 分鐘醋拧。

首先我們要安裝 Nginx慷嗜。而正如前文所說,安裝 Nginx 首先需要配置 EPEL 源,然后再安裝 Nginx庆械。

#??yum install -y epel-release

#??yum install -y? nginx

然后薇溃,我們要為鏡像站的文件規(guī)劃一個(gè)合適的存放路徑缭乘,用來接收更新沐序,以及對(duì)外提供服務(wù)堕绩。本例中,我們?cè)诟夸浵聞?chuàng)建一個(gè)新文件夾/mirrors奴紧,文件夾內(nèi)的結(jié)構(gòu)如下:

在 Nginx 中特姐,將 Nginx 的根目錄設(shè)置為?"/mirrors/data"黍氮,同時(shí)還要開啟?autoindex。

下面是一個(gè) Nginx 配置文件樣例沫浆,將下面這段配置復(fù)制在?/etc/nginx/conf.d/mirror-site.conf?中捷枯,重啟 Nginx 后即可生效。

#? vim??mirror-site.conf

####################################

server {

? ? listen? ? ? 80;

? ? server_name? {服務(wù)器的名稱};

? ? # 鏡像站的主要數(shù)據(jù)

? ? location / {

? ? ? ? root? ? ? ? /mirrors/data/;

? ? ? ? autoindex? on;

? ? }

? ? # repo文件

? ? location /repo {

? ? ? ? root? ? ? ? ? /mirrors;

? ? ? ? autoindex? ? on;

? ? }

? ? # 自動(dòng)配置腳本

? ? location /sh {

? ? ? ? root? ? ? ? ? /mirrors;

? ? }

}

####################################


為我們的鏡像站安好“新家”之后铜靶,接下來就要把他們“請(qǐng)來”了。這里我們使用了?rsync他炊,一個(gè) Linux 下的高效的文件同步工具。


在 CentOS 網(wǎng)站中已艰,有一個(gè)專門提供第三方鏡像站的頁面:https://www.centos.org/download/mirrors/痊末。

用戶可以在這個(gè)頁面查詢到有哪些鏡像站,以及每一個(gè)鏡像站是否支持 rsync —— 不是所有的鏡像站都開啟了這個(gè)功能哩掺,使用 HTTP 同步則會(huì)相對(duì)麻煩一點(diǎn)凿叠。

這里我們推薦您使用清華大學(xué)中國科學(xué)技術(shù)大學(xué)的鏡像站。這兩個(gè)鏡像站相對(duì)穩(wěn)定嚼吞,提供了多種豐富的鏡像庫盒件,而且還支持 rsync 協(xié)議。


我們這里就以清華大學(xué)的鏡像站為例舱禽,編寫如下兩個(gè) rsync 命令:

#? vim??/mirrors/scripts/tuna-centos.sh

###########################################################################

#!/bin/bash

/usr/bin/rsync? -rltz4 \

?--progress? \

--delete? \

--log-file=/mirrors/log/tuna-centos.log? \

rsync://mirrors.tuna.tsinghua.edu.cn/centos/? ? /mirrors/data/centos/

#############################################################################


# vim??/mirrors/scripts/tuna-epel.sh

##############################################################################

#!/bin/bash

/usr/bin/rsync -rltz4? \

--progress? \

--delete \?

--log-file=/mirrors/log/tuna-epel.log \

rsync://mirrors.tuna.tsinghua.edu.cn/epel/ /mirrors/data/epel/

###############################################################################

參數(shù)說明:

r 表示遞歸同步炒刁,也就是將文件夾內(nèi)的所有文件都同步

l 表示同步鏈接文件,t表示保留時(shí)間戳誊稚,z表示開啟壓縮

--progress和--delete分別表示使用現(xiàn)實(shí)詳細(xì)進(jìn)度翔始,和刪除源地址中沒有的文件(也就是和上游保持完全的一致)

--log-file能指定一個(gè)日志位置


我們將其保存成兩個(gè) Shell 腳本罗心。放在 /mirrors/scripts 文件夾中,隨意執(zhí)行一下城瞎,可以看見 rsync 已經(jīng)在歡快地進(jìn)行同步了渤闷!


#? sh???/mirrors/scripts/tuna-centos.sh?


注意,這里僅是一個(gè)演示脖镀,一切的操作都是在 root 用戶名下進(jìn)行的飒箭;如果您是在實(shí)際環(huán)境中搭建,強(qiáng)烈建議您使用普通用戶進(jìn)行操作蜒灰。

接下來我們將這個(gè)腳本放在 cron 中定時(shí)執(zhí)行即可弦蹂。

#? crontab? -l

0 23 * * 1,3,5 sh /mirrors/scripts/epel-ustc.sh >> /dev/null

0 23 * * 2,4,6 sh /mirrors/scripts/centos-ustc.sh >> /dev/null


第一次同步需要耗費(fèi)的時(shí)間較長(zhǎng)。如果您的網(wǎng)絡(luò)質(zhì)量不理想卷员,還有可能斷掉盈匾,所以請(qǐng)?jiān)诘谝淮瓮綍r(shí)多加注意。

好了毕骡,現(xiàn)在你的專屬鏡像站已經(jīng)搭建完成了削饵。如果你愿意,還可以為它制作一份首頁和幫助文檔未巫,方便他人使用窿撬。


三、使用鏡像站


?“.repo” 文件范例

有了鏡像站只是第一步叙凡,接下來我們就要聊一聊如何使用了劈伴。

眾所周知,YUM 源的信息都會(huì)存放在?/etc/yum.repos.d/?這個(gè)文件夾內(nèi)握爷,以后綴為?.repo?的形式存在跛璧。我們可以預(yù)先寫好標(biāo)準(zhǔn)的?.repo?文件,在部署機(jī)器的時(shí)候直接下載新啼,省時(shí)省力追城。

最簡(jiǎn)單的方法是找一個(gè)系統(tǒng)自帶的?.repo?文件。然后我們把它改成我們的內(nèi)容燥撞。下面就是用在 CentOS 7 的原始?CentOS-Base.repo?文件的一部分座柱。

# cat? ???/etc/yum.repos.d/CentOS-Base.repo

#############################################################################

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

################################################################################

每一段的以下兩個(gè)地方都需要我們修改:

1.注釋掉?mirrorlist?一行,這個(gè)地方會(huì)幫我們尋找最快的鏡像站物舒,但僅適用于能連外網(wǎng)的情況色洞,我們已經(jīng)有了我們的鏡像站,所以這一行已經(jīng)不需要了

2.打開?baseurl?這一行冠胯,并且將域名修改為我們剛剛建立的鏡像站地址火诸,其他的東西就不用修改了。


如果有的段落里有?enabled=0?的涵叮,也無需做改動(dòng)惭蹂。僅在需要時(shí)臨時(shí)打開即可伞插。

有的運(yùn)維人員可能喜歡將?gpgcheck?設(shè)置為?0,也就是不用密鑰校驗(yàn)軟件包的真實(shí)性盾碗,但這樣的做法有非常大的風(fēng)險(xiǎn)性媚污,因此我們還是建議開啟這個(gè)功能。

EPEL 的?.repo?文件獲取方式也很簡(jiǎn)單廷雅。只要執(zhí)行了?yum install epel-release耗美。

你的?/etc/yum.repos.d/?文件夾下就會(huì)有?epel.repo?和?epel-testing.repo?這兩個(gè)文件,要修改的內(nèi)容和上面的大致相同航缀。

有一點(diǎn)區(qū)別是商架,如果使用了 EPEL 源,且打開了?gpgckech?在首次使用時(shí)芥玉,YUM 會(huì)詢問用戶是否導(dǎo)入配置中說明的密鑰蛇摸。


插件的取舍

在我們使用了內(nèi)部的鏡像站之后灿巧,便可以禁用掉一些不再適用的 YUM 插件了。比如?fastestmirror:如果配置了?mirrorlist抠藕,這個(gè)插件會(huì)幫我們測(cè)算最快的鏡像站。但我們此時(shí)已經(jīng)無需再測(cè)速了盾似,在?/etc/yum/pluginconf.d/fastestmirror.conf?中,將?enabled?改為?0即可零院。



四、參考

大規(guī)模封閉的生產(chǎn)環(huán)境告抄?你需要一個(gè)鏡像站

http://v.colinlee.fish/posts/how-to-set-up-a-centos-mirror-site.html


List of CentOS Mirrors

https://www.centos.org/download/mirrors

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市玄妈,隨后出現(xiàn)的幾起案子髓梅,更是在濱河造成了極大的恐慌,老刑警劉巖枯饿,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搔扁,居然都是意外死亡爸舒,警方通過查閱死者的電腦和手機(jī)稿蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涂炎,“玉大人,你說我怎么就攤上這事唱捣。” “怎么了震缭?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵拣宰,是天一觀的道長(zhǎng)徐裸。 經(jīng)常有香客問我回懦,道長(zhǎng)怯晕,這世上最難降的妖魔是什么吧凉? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮圆雁,結(jié)果婚禮上伪朽,老公的妹妹穿的比我還像新娘患雇。我一直安慰自己酪术,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布住拭。 她就那樣靜靜地躺著,像睡著了一般摊求。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天梁只,我揣著相機(jī)與錄音秋忙,去河邊找鬼堵幽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的团滥。 我是一名探鬼主播秉溉,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼苍蔬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼俺猿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谊惭,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤铁蹈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后姚建,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年包斑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涕俗。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萌抵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绍填,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布讨永,位于F島的核電站,受9級(jí)特大地震影響卿闹,放射性物質(zhì)發(fā)生泄漏揭糕。R本人自食惡果不足惜插佛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一量窘、第九天 我趴在偏房一處隱蔽的房頂上張望氢拥。 院中可真熱鬧,春花似錦嫩海、人聲如沸冬殃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涣觉。三九已至,卻和暖如春血柳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犀盟。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工蓖谢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留员淫,地道東北人击敌。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愚争,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轰枝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容