一.搭建原因
由於開(kāi)發(fā)工作都是在單位局域網(wǎng)內(nèi),平時(shí)開(kāi)發(fā)機(jī)可以通過(guò)代理服務(wù)器連外網(wǎng)絡(luò),但是服務(wù)器是不允許連接到外網(wǎng)的。在部署一臺(tái)新的服務(wù)器恋捆,安裝服務(wù)軟件只能通內(nèi)網(wǎng)環(huán)境的其它機(jī)器傳輸或拷貝,所以需要部署局域網(wǎng)內(nèi)的yum源重绷。
Linux版本:
[root@hanzo ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
二.安裝
1.啓動(dòng)httpd
如果沒(méi)有安裝httpd沸停,請(qǐng)執(zhí)行以下命令:
yum -y install httpd
- 若對(duì)httpd配置不是很熟悉的話,不要修改其配置文件(/etc/httpd/conf/httpd.conf)昭卓。httpd默認(rèn)目錄爲(wèi)/var/www/html愤钾;
- 若需要修改httpd端口瘟滨,可以先查看http的開(kāi)放端口,防止訪問(wèn)http服務(wù)失斈馨洹杂瘸;
[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服務(wù)可用端口
- 儘量使用80端口,不然很有可能訪問(wèn)失敗伙菊。在這裏就使用默認(rèn)的80端口了
查看httpd是否已經(jīng)啓動(dòng):
systemctl status httpd.service
如果沒(méi)有啓動(dòng)败玉,使用以下命令啓動(dòng):
systemctl start httpd.service
查看httpd服務(wù)是否開(kāi)機(jī)啓動(dòng):
[root@hanzo ~]# systemctl list-unit-files httpd.service
UNIT FILE STATE
httpd.service disabled #enabled爲(wèi)開(kāi)機(jī)啓動(dòng)。這裏顯示開(kāi)機(jī)不啓動(dòng)
1 unit files listed.
若需要開(kāi)機(jī)啓動(dòng)镜硕,執(zhí)行以下命令:
systemctl enable httpd.service
2.準(zhǔn)備rpm
本地yum源中的rpm軟件包可以通過(guò)以下方式獲仍艘怼:
- 從CentOS-xxxx.iso或其他iso鏡像中獲取兴枯;
- 通過(guò)網(wǎng)絡(luò)下載自己所需要的rpm軟件包血淌;
- 通過(guò)reposync(由yum-utils提供的一個(gè)服務(wù))工具從遠(yuǎn)程鏡像站點(diǎn)(yum服務(wù)器)同步到本地。
當(dāng)然還有很多別的方式獲取念恍,但是不管用什麼方式六剥,總之晚顷,在你的本地會(huì)得到一些rpm軟件包文件峰伙。
在本例中,我需要在內(nèi)網(wǎng)的服務(wù)器上和自己的開(kāi)發(fā)機(jī)上安裝docker该默。所以瞳氓,我使用配置docker的yum源來(lái)獲取rpm軟件包以進(jìn)行安裝。
添加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
#添加以下內(nèi)容至docker.repo文件中
[dockerrepo] #[name]repo id栓袖,隨意但必須存在
name=Docker Repository #repo name匣摘,描述性內(nèi)容
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
完成上述步驟之後,就可以在本機(jī)上安裝docker了裹刮。如果你不需要就略過(guò)音榜。
yum update
yum install docker-engine
同步docker yum軟件源至本地
#進(jìn)入httpd默認(rèn)目錄。將rpm包同步到此目錄捧弃,以供創(chuàng)建倉(cāng)庫(kù)使用
[root@hanzo html]# pwd
/var/www/html
#列出目前本機(jī)上所使用的倉(cāng)庫(kù)赠叼,找到之上添加的dockerrepo倉(cāng)庫(kù)標(biāo)識(shí)
[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 指定倉(cāng)庫(kù)標(biāo)識(shí)。我的是dockerrepo违霞,如果你和我的不一樣嘴办,注意換成自己的
#-p 指定目標(biāo)目錄,默認(rèn)爲(wèi)當(dāng)前工作目錄
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/
執(zhí)行完後买鸽,會(huì)將docker yum軟件源同步到本地的/var/www/html/
目錄中涧郊,在此目錄中會(huì)生成dockerrepo
目錄用於存放rpm包。第一次同時(shí)時(shí)間比較長(zhǎng)眼五,大概66個(gè)rpm包妆艘。
3.創(chuàng)建本地yum倉(cāng)庫(kù)
[root@hanzo dockerrepo]# pwd
/var/www/html/dockerrepo #當(dāng)前工作目錄
[root@hanzo dockerrepo]# ls
Packages
[root@hanzo dockerrepo]# createrepo . #創(chuàng)建當(dāng)前目錄爲(wèi)yum倉(cāng)庫(kù)
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軟件後所產(chǎn)生的軟件屬性相依數(shù)據(jù)存放處。
4.使用yum倉(cāng)庫(kù)
使用ssh登陸內(nèi)網(wǎng)中其他的服務(wù)器
[root@Riped-MicroService-01 yum.repos.d]# pwd
/etc/yum.repos.d
#當(dāng)前服務(wù)器不能連接外網(wǎng)批旺,所以默認(rèn)使用的倉(cāng)庫(kù)不能使用枢希。
#重命名或者修改enable=0使CentOS-Base.repo中配置的源失效。
#若你的服務(wù)器上的其它*.repo文件中有啓用的最好也修改一下朱沃,以防影響測(cè)試苞轿。
[root@Riped-MicroService-01 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
#創(chuàng)建lan-yum.repo文件,並添加以下內(nèi)容
[root@Riped-MicroService-01 yum.repos.d]# cat lan-yum.repo
[lanrepo]
name=LAN YUM Repository
baseurl=http://yum倉(cāng)庫(kù)IP/dockerrepo
enable=1
gpgcheck=0
#查看當(dāng)前目錄的變化
[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
#查看當(dāng)前服務(wù)器上此刻啓用的yum源
#可以看到逗物,僅有剛配置的repo id爲(wèi)``lanrepo``的yum源是開(kāi)啓的
[root@Riped-MicroService-01 yum.repos.d]# yum repolist all
......
lanrepo LAN YUM Repository enabled: 66
......
通過(guò)yum repolist all
命令可以看到搬卒,僅有剛配置的repo id爲(wèi)lanrepo
的yum源是開(kāi)啓的。
查看軟件列表
[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
上述列出的結(jié)果Available Packages
就是我所需要的翎卓,如果沒(méi)有列出期望的軟件契邀,可以先執(zhí)行yum clean all
,然後再執(zhí)行yum list
失暴。
接下來(lái)就可以進(jìn)行內(nèi)網(wǎng)服務(wù)器的軟件安裝了坯门。
4.更新yum倉(cāng)庫(kù)
- yum倉(cāng)庫(kù)更新(開(kāi)發(fā)機(jī))
通過(guò)yum下載(不安裝)一個(gè)或多個(gè)rpm軟件包,用於更新yum倉(cāng)庫(kù)用逗扒。
比如下載一個(gè)vsftpd rpm軟件包古戴,可以通過(guò)以下兩種方式:-
yumdownloader --destdir=/var/www/html/dockerrepo/ vsftpd
(推薦) -
yum -y install --downloadonly --downloaddir=/var/www/html/dockerrepo/ vsftpd
(未成功下載)
-
由於我需要的是GitLab的rpm包,所以之下用的是我直接從官網(wǎng)下載的gitlab-ce
rpm包矩肩。
#在之前生成的yum倉(cāng)庫(kù)文件夾下添加rpm包现恼。在這裏添加的是gitlab的rmp包,從官網(wǎng)下載的黍檩。
#無(wú)論是放到``Packages``中叉袍,還是新建目錄都可以
[root@hanzo dockerrepo]# ls
gitlab-ce-9.5.3-ce.0.el7.x86_64.rpm Packages repodata
#更新yum倉(cāng)庫(kù)
[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
- 使用端更新(本文所指內(nèi)網(wǎng)服務(wù)器)
#第一次列出結(jié)果沒(méi)有變化,沒(méi)看見(jiàn)新添加的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
#清除舊數(shù)據(jù)(/var/cache/yum)
#yum clean [packages | headers | all]
#packages: 將已下載的軟件文件刪除
#header : 將下載的軟件文件頭刪除
#all : 刪除所有相關(guān)數(shù)據(jù)
[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
#再次列出會(huì)顯示新添加的rpm包
[root@Riped-MicroService-01 yum.repos.d]# yum list
......
gitlab-ce.x86_64 9.5.3-ce.0.el7 lanrepo
刪除rpm包與添加rpm包過(guò)程相似刽酱,都需要執(zhí)行相應(yīng)的createrepo --update .
和yum clean all
命令喳逛。
本機(jī)使用本機(jī)的yum倉(cāng)庫(kù),僅需要在相應(yīng)的*.repo文件中把baseurl
修改爲(wèi)file://path/repo
棵里。比如润文,在我這,我直接進(jìn)行以下修改:
[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