CentOS7.3部署局域網yum源(http方式)

一.搭建原因

由於開發工作都是在單位局域網內,平時開發機可以通過代理服務器連外網絡,但是服務器是不允許連接到外網的。在部署一臺新的服務器,安裝服務軟件只能通內網環境的其它機器傳輸或拷貝,所以需要部署局域網內的yum源。

Linux版本:

[root@hanzo ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

二.安裝

1.啓動httpd

如果沒有安裝httpd,請執行以下命令:
yum -y install httpd

  • 若對httpd配置不是很熟悉的話,不要修改其配置文件(/etc/httpd/conf/httpd.conf)。httpd默認目錄爲/var/www/html
  • 若需要修改httpd端口,可以先查看http的開放端口,防止訪問http服務失敗;
[root@hanzo ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000 #httpd服務可用端口
  • 儘量使用80端口,不然很有可能訪問失敗。在這裏就使用默認的80端口了

查看httpd是否已經啓動:
systemctl status httpd.service
如果沒有啓動,使用以下命令啓動:
systemctl start httpd.service
查看httpd服務是否開機啓動:

[root@hanzo ~]# systemctl list-unit-files httpd.service
UNIT FILE     STATE   
httpd.service disabled #enabled爲開機啓動。這裏顯示開機不啓動

1 unit files listed.

若需要開機啓動,執行以下命令:
systemctl enable httpd.service

2.準備rpm

本地yum源中的rpm軟件包可以通過以下方式獲取:

  • 從CentOS-xxxx.iso或其他iso鏡像中獲取;
  • 通過網絡下載自己所需要的rpm軟件包;
  • 通過reposync(由yum-utils提供的一個服務)工具從遠程鏡像站點(yum服務器)同步到本地。
    當然還有很多別的方式獲取,但是不管用什麼方式,總之,在你的本地會得到一些rpm軟件包文件。
    在本例中,我需要在內網的服務器上和自己的開發機上安裝docker。所以,我使用配置docker的yum源來獲取rpm軟件包以進行安裝。

添加docker yum軟件源

#在/etc/yum.repos.d目錄下新建文件docker.repo
[root@hanzo yum.repos.d]# pwd
/etc/yum.repos.d
[root@hanzo yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker.repo
[root@hanzo yum.repos.d]# cat docker.repo 
#添加以下內容至docker.repo文件中
[dockerrepo] #[name]repo id,隨意但必須存在
name=Docker Repository #repo name,描述性內容
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

完成上述步驟之後,就可以在本機上安裝docker了。如果你不需要就略過。
yum update
yum install docker-engine

同步docker yum軟件源至本地

#進入httpd默認目錄。將rpm包同步到此目錄,以供創建倉庫使用
[root@hanzo html]# pwd
/var/www/html
#列出目前本機上所使用的倉庫,找到之上添加的dockerrepo倉庫標識
[root@hanzo html]# yum repolist all
...
repo id                        repo name                              status
......
dockerrepo                     Docker Repository                      enabled:   110
.......
[root@hanzo html]# reposync -r dockerrepo -p /var/www/html/
#-r 指定倉庫標識。我的是dockerrepo,如果你和我的不一樣,注意換成自己的
#-p 指定目標目錄,默認爲當前工作目錄
dockerrepo                                                             | 2.9 kB  00:00:00     
(1/66): docker-engine-1.7.0-1.el7.centos.x86_64.rpm                    | 4.5 MB  00:00:32
......
(66/66): docker-engine-debuginfo-17.05.0.ce-1.el7.centos.x86_64.rpm    | 3.4 MB  00:00:25 
[root@hanzo html]# ls dockerrepo/
Packages #包含一堆rpm

上述reposync -r dockerrepo -p /var/www/html/執行完後,會將docker yum軟件源同步到本地的/var/www/html/目錄中,在此目錄中會生成dockerrepo目錄用於存放rpm包。第一次同時時間比較長,大概66個rpm包。

3.創建本地yum倉庫

[root@hanzo dockerrepo]# pwd
/var/www/html/dockerrepo #當前工作目錄
[root@hanzo dockerrepo]# ls
Packages
[root@hanzo dockerrepo]# createrepo . #創建當前目錄爲yum倉庫
Spawning worker 0 with 17 pkgs
Spawning worker 1 with 17 pkgs
Spawning worker 2 with 16 pkgs
Spawning worker 3 with 16 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@hanzo dockerrepo]# ls
Packages  repodata

dockerrepo中的repodata目錄很重要,它就是分析rpm軟件後所產生的軟件屬性相依數據存放處。

4.使用yum倉庫

使用ssh登陸內網中其他的服務器

[root@Riped-MicroService-01 yum.repos.d]# pwd
/etc/yum.repos.d
#當前服務器不能連接外網,所以默認使用的倉庫不能使用。
#重命名或者修改enable=0使CentOS-Base.repo中配置的源失效。
#若你的服務器上的其它*.repo文件中有啓用的最好也修改一下,以防影響測試。
[root@Riped-MicroService-01 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak  
#創建lan-yum.repo文件,並添加以下內容
[root@Riped-MicroService-01 yum.repos.d]# cat lan-yum.repo 
[lanrepo]
name=LAN YUM Repository
baseurl=http://yum倉庫IP/dockerrepo
enable=1
gpgcheck=0
#查看當前目錄的變化
[root@Riped-MicroService-01 yum.repos.d]# ls
CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo        CentOS-fasttrack.repo  CentOS-Sources.repo  lan-yum.repo
#查看當前服務器上此刻啓用的yum源
#可以看到,僅有剛配置的repo id爲``lanrepo``的yum源是開啓的
[root@Riped-MicroService-01 yum.repos.d]# yum repolist all
......
lanrepo                     LAN YUM Repository                                enabled: 66
......

通過yum repolist all命令可以看到,僅有剛配置的repo id爲lanrepo的yum源是開啓的。

查看軟件列表

[root@Riped-MicroService-01 yum.repos.d]# yum list
Installed Packages
......
Available Packages
docker-engine.x86_64             17.05.0.ce-1.el7.centos                   lanrepo  
docker-engine-debuginfo.x86_64   17.05.0.ce-1.el7.centos                   lanrepo  
docker-engine-selinux.noarch     17.05.0.ce-1.el7.centos                   lanrepo 

上述列出的結果Available Packages就是我所需要的,如果沒有列出期望的軟件,可以先執行yum clean all,然後再執行yum list
接下來就可以進行內網服務器的軟件安裝了。

4.更新yum倉庫

  • yum倉庫更新(開發機)
    通過yum下載(不安裝)一個或多個rpm軟件包,用於更新yum倉庫用。
    比如下載一個vsftpd rpm軟件包,可以通過以下兩種方式:
    1. yumdownloader --destdir=/var/www/html/dockerrepo/ vsftpd (推薦)
    2. yum -y install --downloadonly --downloaddir=/var/www/html/dockerrepo/ vsftpd (未成功下載)

由於我需要的是GitLab的rpm包,所以之下用的是我直接從官網下載的gitlab-cerpm包。

#在之前生成的yum倉庫文件夾下添加rpm包。在這裏添加的是gitlab的rmp包,從官網下載的。
#無論是放到``Packages``中,還是新建目錄都可以
[root@hanzo dockerrepo]# ls
gitlab-ce-9.5.3-ce.0.el7.x86_64.rpm  Packages  repodata
#更新yum倉庫
[root@hanzo dockerrepo]# createrepo --update .
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
  • 使用端更新(本文所指內網服務器)
#第一次列出結果沒有變化,沒看見新添加的rpm包
[root@Riped-MicroService-01 yum.repos.d]# yum list
Installed Packages
......
Available Packages
docker-engine.x86_64             17.05.0.ce-1.el7.centos                   lanrepo  
docker-engine-debuginfo.x86_64   17.05.0.ce-1.el7.centos                   lanrepo  
docker-engine-selinux.noarch     17.05.0.ce-1.el7.centos                   lanrepo 
#清除舊數據(/var/cache/yum)
#yum clean [packages | headers | all]
#packages: 將已下載的軟件文件刪除
#header  : 將下載的軟件文件頭刪除
#all     : 刪除所有相關數據 
[root@Riped-MicroService-01 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: lanrepo
Cleaning up everything
Cleaning up list of fastest mirrors
#再次列出會顯示新添加的rpm包
[root@Riped-MicroService-01 yum.repos.d]# yum list
......
gitlab-ce.x86_64                 9.5.3-ce.0.el7                             lanrepo

刪除rpm包與添加rpm包過程相似,都需要執行相應的createrepo --update .yum clean all命令。

本機使用本機的yum倉庫,僅需要在相應的*.repo文件中把baseurl修改爲file://path/repo。比如,在我這,我直接進行以下修改:

[root@hanzo yum.repos.d]# cat docker.repo 
[dockerrepo]
name=Docker Repository
#baseurl=https://yum.dockerproject.org/repo/main/centos/7/
baseurl=file:///var/www/html/dockerrepo
enabled=1
#gpgcheck=1
#gpgkey=https://yum.dockerproject.org/gpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容