本地yum源搭建——ftp源
- 前言
- 一、介紹
- 二、環境部署
-
-
- 2.1、本地yum源
- 2.2、添加硬碟
- 2.3、安裝vsftpd、wget、createrepo
- 2.4、将ISO鏡像軟體加入到FTP源中
- 2.5、編寫ftp源檔案
-
- 三、添加網絡源
-
-
- 3.1、下載下傳網絡源軟體包
-
- yum源方式:
- 網絡ftp源:
-
- 四、添加的網絡源
-
-
- 4.1、epel
- 4.2、zabbix
- 4.3、mysql
-
-
- mysql5.6
- mysql5.7
- mysql8.0
- mysql-connectors
- mysql-tools
-
- 4.4、Q版OpenStack
- 整體ftp源檔案:
-
前言
工作中安裝作業系統隻是開始,後面安裝軟體才是大頭,從基礎的ssh服務的安裝啟動,再到java,Python等語言的安裝,然後ansible自動化管理軟體、zabbix監控軟體、mysql資料庫軟體,這些都是安裝過的。
為了友善安裝所需的軟體那麼就自建一個本地yum源吧!
一、介紹
為什麼要建構本地源?
- 安裝友善快捷,不用一個個去下載下傳依賴包
因為公司内部環境是沒法聯網的,如果安裝的軟體在ISO鏡像中有那就舒服了,如果沒有就尴尬了,有的時候你甚至需要根據安裝提示一個一個的去下載下傳軟體的依賴包,有的軟體看着就一個但是依賴包一串接着一串。安裝軟體重要的就是将他的依賴包下載下傳完全。
- 靈活選擇軟體版本
因為工作會直接和開發的同志進行對接,他們對于java或者是Python的版本是有些獨特要求的,但是自己又不熟悉安裝過程,自己到網上直接下載下傳一個java包到本地安裝各種依賴過不去,接着就自己手動把需求的依賴給解除安裝了,然後整個環境都蹦了!
為了避免這種情況,可以在本地搭建的軟體源中準備好所需版本的軟體,依賴包等都準備好,以供開發人員使用,避免搞崩環境,畢竟還是要自己修的。
- 高速的傳輸速率
之前安裝軟體的時候,因為網速的原因,下載下傳一個mysql-server軟體包,幾十K、幾十K的蹦,也不知道是網絡慢還是自己臉黑,下載下傳了有半個小時,非常考驗心态,為了避免這種情況還是搭建本地源吧,畢竟内網傳輸在怎麼慢也是能接受的。
- 配置簡單
當我們搭建好ftp源之後,隻要是内網的機器都是可以使用的,隻需要在yum檔案中增加作為倉庫這台機器的IP位址就可以了。
二、環境部署
描述:
我這裡的ftp源是為centos類型的系統使用的yum源,因為大部分安裝作業系統都是centos7.4,常用的安裝軟體操作也是在centos系統上面,是以就以centos7作業系統舉例。
環境:
作業系統 | 軟體版本 |
---|---|
CentOS Linux release 7.4.1708 (Core) | version 3.0.2 |
2.1、本地yum源
首先因為使用的是centos7.4版本ISO鏡像,有8G多,這裡面是包含一部分基礎軟體的,是以就可以以他為基礎來安裝一些基礎軟體vsftpd服務、wget軟體,
将ISO鏡像通過虛機的光驅加載進來,我們挂載到mnt目錄下面,
mount /dev/sr0 /mnt/iso/
(因為現在ftp源已經搭建完成了,ISO鏡像挂載到ftp源中的,主要是看目錄内容)
編輯yum檔案,
cat /etc/yum.repos.d/yum.repo #配置檔案路徑
[rhel] #倉庫名
name=rhle
baseurl=file:///mnt/iso #軟體路徑
gpgcheck=0 #是否安全檢查,0不檢查|1檢查
enabled=1 #是否自動啟動,0不啟動|1啟動
注意,yum源的配置檔案結尾必須是repo,其他的不識别,我圖檔中是我做ftp之前的備份檔案是以多了bak,如果你是做自己本地的yum源檔案,結尾必須是repo!!!
執行指令是配置生效(你也可以不執行這兩條指令,直接安裝軟體的時候檢查到有變化的yum源檔案會自動執行,效果一樣)
yum makecache #重新生成yum源檔案
yum repolist #檢視可用的yum源
PS:制作本地的yum的時候最好将自帶的網絡源檔案都放到另外一個地方或者是建立一個目錄放進去避免影響,像我就是建立一個test目錄将自帶的網絡源檔案放進去。
如果你隻是想使用本地源的話那麼就需要設定一個開機啟動了,否者每次重新開機之後都要手動将鏡像挂載到mnt下,
開機啟動就是在fstab檔案中寫入一條
vim /etc/fstab
UUID="2017-09-06-10-53-42-00" /var/ftp/centos7 iso9660 defaults 0 0
這裡開頭的UUID是一個硬體在系統中的唯一辨別符
配置檔案中你寫這個UUID可以,寫/dev/sr0也是可以的,都行。
blkid /dev/sr0
/dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
2.2、添加硬碟
接着我們添加一塊大容量硬碟進行軟體包存放,
PS:如果是工作環境直接找一台實體服務上面的硬碟資源是足夠的,但是我這裡示範是通過自己的虛機,是以就需要新加一塊盤來存放之後下載下傳的軟體了。
20G的硬碟是安裝的時候使用的系統盤,100G的盤是後加的用于存放軟體的盤,
啟動虛機進去檢視,sda使我們那塊20G硬碟,sdb就是我們新添加的那塊盤了,
現在我們有兩種辦法來使用這塊盤:
- 正常進行分區——格式化——挂載使用
- 這種方式好處就是操作簡單,如果是做成gpt分區三條指令就搞定可以使用了;
- 缺點是沒有擴充性,現在100G夠用了,當你使用的時間長了之後,下載下傳到本地的軟體會越來越多的,這100G就未必夠用了,
- LVM方式,pv——vg——lv——格式化——挂載使用
- 好處,可擴充性,使用LVM方式操作硬碟是将資料放到lv建立出來的卷裡面的,當我們軟體變多硬碟空間不夠的時候,我們可以再加一塊硬碟加入到卷裡面,動态的擴容卷空間,
- 壞處,操作指令是比較多的,而且LVM軟體也是有一定的風險的,他有自己的極限如果是容量太大也是容易出事,但是我就是做一個本地源,量級還是達不到的。
我選擇LVM的方式——》友善後期擴容
檢視硬碟識别出來的盤符是sdb
ls /dev/sd*
先将硬碟加入pv
pvcreate /dev/sdb
接着建立vg指定一個塊大小是16M
vgcreate -s 16M vg001 /dev/sdb
接着将vg中所有空間分給lv
lvcreate -l 100%FREE -n lv001 vg001
最後将lv進行格式化使用xfs
mkfs.xfs /dev/mapper/vg001-lv001
建立一個測試目錄,測試挂載下,隻要能挂載上去能看到容量是100G就可以了,
mkdir /mnt/test
mount /dev/mapper/vg001-lv001 /mnt/test
2.3、安裝vsftpd、wget、createrepo
現在我們本地yum源已經準備好了用來安裝軟體,然後單獨存放下載下傳的網絡源軟體的空間已經準備好了們可以挂載使用,那麼我們就先将軟體安裝好。
直接安裝ftp軟體
yum install vsftpd
ftp軟體設定為開機自啟并且啟動了就可以,之後ftp源内容我們會進行配置,
systemctl enable --now vsftpd
systemctl status vsftpd
接着安裝下wget,我們将網絡源上面的包下載下傳到本地都是通過這個軟體,
接着安裝下createpo軟體,他是用來生成倉庫檔案的,
yum install createrepo
我們使用yum之是以不用一個個安裝依賴包就是因為這個倉庫檔案,有了他我們安裝一個軟體的時候就不需要考慮依賴問題。我們下載下傳的軟體包不一定都帶有倉庫檔案,如果需要手動生成那麼就需要createrepo軟體了。
2.4、将ISO鏡像軟體加入到FTP源中
現在我們的ftp源環境就已經安裝好了,安裝過程很簡單就是兩個軟體但是準備環境操作還是很多的步驟的,但是我們ftp源還是沒有配置,我們先将本地的ISO鏡像提供的軟體包放進去,
注意,ISO鏡像是比較特殊的
如果按照正常的流程:下載下傳軟體——》createrepo生成倉庫檔案——》放入/var/ftp目錄下,
但是我們的ISO鏡像中的軟體是有倉庫檔案的就是repodata目錄下面的内容,是以我們隻需要直接使用就可以了,他是一個完整的本地yum源倉庫,有軟體有倉庫檔案,可以直接使用的,是以我們這裡隻需要将ISO鏡像挂載過來就可以使用了,看着操作是簡單但是中間還是經過很多東西的,這個要知道。
建立挂載目錄——》這裡我們沒有修改ftp的配置是以隻能是在/var/ftp/下面進行建立
mkdir -p /var/ftp/centos7
因為做過自動啟動是以直接修改fstab檔案就好了,将挂載目錄指向我們建立的這個目錄就好,
vim /etc/fstab
UUID="2017-09-06-10-53-42-00" /var/ftp/centos7 iso9660 defaults 0 0
然後手動解除安裝之前mnt目錄下的挂載,然後讓fstab檔案配置生效,接着檢視就發現ISO鏡像已經挂載過來了,
umount /mnt/iso/
mount -a
df -h
pub目錄是ftp安裝好之後自己建立的家目錄或者說是共享目錄,其他目錄都是我下載下傳的網絡源的軟體
2.5、編寫ftp源檔案
上面ftp源已經做好了并且已經将本地的ISO源已經加入進去了,現在我們需要準備yum檔案來進行使用,
因為我們上面已經做了本地的yum源配置,現在我們要将本地的ISO鏡像源軟體加入到FTP中,是以先将之前的檔案進行備份,
mv /etc/yum.repos.d/yum.repo /etc/yum.repos.d/yum.repo.bak
接着在編寫ftp源的檔案
vim /etc/yum.repos.d/ftp.repo
[local-ftp-centos7]
name=local-ftp-centos7
baseurl=ftp://192.168.144.10/centos7
gpgcheck=0
enabled=1
gpgkey=ftp://192.168.144.10/centos7/RPM-GPG-KEY-CentOS-7
接着就是老樣子,重新生成源檔案,檢視可用倉庫
yum makecache
yum repolist
接着我們可以安裝下apache軟體,驗證下yum能夠正常使用,
yum install httpd
不加y或者不輸入y就不會安裝,我們可以驗證新添加的ftp源是好使的,
總結:
ftp環境搭建很簡單就是安裝一個vsftp軟體就可以了,然後設定為開機啟動就好,然後我們隻需要将下載下傳好的軟體生成yum倉庫檔案然後放到/var/ftp/目錄下就可以了,為了區分不同的源還是要建立個目錄的,到這裡為止,我們的ftp源就搭建好了,還是非常簡單的。
接下來就是client端使用了,編寫ftp的yum檔案,就可以用來安裝軟體了。
三、添加網絡源
上面的操作我們已經将ISO鏡像的本地源發到了ftp源中,而且我們編寫ftp源檔案之後也是可以正常使用的,但是隻有本地源是不夠的,我們搭建ftp源的初衷也不是一個本地源就可以搞定的。
我們的本意就是将網絡上的軟體包下載下傳下來然後放到本地ftp源中,安裝軟體的時候就不用聯網也可以安裝了。
3.1、下載下傳網絡源軟體包
下載下傳網絡源的軟體包有兩種方式:
- 加載網絡源——》下載下傳軟體包
這種方式我們需要将網絡源先加入到本地的yum源倉庫,然後将網絡源的包同步到本地的一個目錄中,這種方式同步下來的隻是軟體包沒有依賴關系,就是沒有倉庫檔案,需要我們自己重新生成的,但是軟體包量級比較大的話畫的時間比較長,
舉個例子:我将epel源的軟體包拉下來也就一萬三千多個包,重新生成倉庫檔案花了一個小時,花的時間也是非常長的。
- 直接找到網上的ftp源下載下傳軟體包
這種方式我們可以将軟體和倉庫檔案都是拉下來,這就非常爽了,下載下傳到本地之後直接使用就好了,我就是使用這種方式來下包的。
yum源方式:
首先,将網路源檔案下載下傳到本地,我這裡使用的是阿裡雲的鏡像站,
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
接着清空yum源緩存、然後重新生成中繼資料、檢視可用倉庫
yum clean all
yum makecache
yum repolist
最後指定倉庫源将軟體包下載下傳下來,
reposync -r epel -p /var/ftp/epel/
這種情況下最後還需要重新生成倉庫檔案,這個根據軟體包的數量增加生成時間會變長,
createrepo /var/ftp/epel/
網絡ftp源:
網絡ftp源我這裡使用的清華大學鏡像源,現在國内的公共源有很多,其他的也是可以的,
https://mirror.tuna.tsinghua.edu.cn/
以centos7的zabbix源為例,
先确定zabbix源的具體目錄
https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/
接着在ftp中建立對應的目錄,
mkdir -p /var/ftp/zabbix
然後将軟體包和倉庫檔案下載下傳
wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/ -P /var/ftp/zabbix
注意:–cut-dirs=1 ,wget中這個參數指定的是目錄的層級,按需來指定,我想要的軟體包和倉庫檔案都在一層,是以參數1就夠了。
四、添加的網絡源
4.1、epel
epel源是centos作業系統的軟體補全倉庫,一般在ISO鏡像中沒有的的軟體都是可以在epel源中找到的,是以我們的ftp源中他是必須要有的。
首先确定ftp源網絡上的位置
https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/
接着建立對應的目錄
mkdir /var/ftp/epel
下載下傳網絡ftp的軟體包
wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/ -P /var/ftp/epel
epel對應的yum檔案
[local-ftp-epel]
name=local-ftp-epel
baseurl=ftp://192.168.144.10/epel
gpgcheck=0
enabled=1
4.2、zabbix
zabbix監控,這是我們平常部署監控軟體的時候需要用到的軟體,
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/
接着建立對應的目錄
mkdir /var/ftp/zabbix
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/ -P /var/ftp/zabbix
zabbix對應的yum檔案:
[local-ftp-zabbix]
name=local-ftp-zabbix
baseurl=ftp://192.168.144.10/zabbix
gpgcheck=0
enabled=0
4.3、mysql
mysql資料庫他的版本是很多的,根據需求我下載下傳了三種5.6、5.7、8.0,
這是ftp網絡源上總的位址
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/
因為mysql版本很多是以不同版本又是一個不同的目錄,是以需要分别下載下傳,
mysql5.6
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/
接着建立對應的目錄
mkdir -p /var/ftp/mysql/mysql-5.6-community-el7-x86_64
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=3 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/ -P /var/ftp/mysql/mysql-5.6-community-el7-x86_64
mysql5.6對應的yum檔案:
[local-ftp-mysql56]
name=local-ftp-mysql56
baseurl=ftp://192.168.144.10/mysql/mysql-5.6-community-el7-x86_64
gpgcheck=0
enabled=0
mysql5.7
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
接着建立對應的目錄
mkdir -p /var/ftp/mysql/mysql-5.7-community-el7-x86_64/
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/ -P /var/ftp/mysql/mysql-5.7-community-el7-x86_64/
mysql5.7對應的yum檔案:
[local-ftp-mysql57]
name=local-ftp-mysql57
baseurl=ftp://192.168.144.10/mysql/mysql-5.7-community-el7-x86_64
gpgcheck=0
enabled=1
mysql8.0
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/
接着建立對應的目錄
mkdir -p /var/ftp/mysql/mysql-8.0-community-el7-x86_64
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/ -P /var/ftp/mysql/mysql-8.0-community-el7-x86_64
mysql8.0對應的yum檔案:
[local-ftp-mysql80]
name=local-ftp-mysql80
baseurl=ftp://192.168.144.10/mysql/mysql-8.0-community-el7-x86_64
gpgcheck=0
enabled=0
mysql-connectors
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-x86_64/
接着建立對應的目錄
mkdir -p /var/ftp/mysql/mysql-connectors-community-el7-x86_64
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-x86_64/ -P /var/ftp/mysql/mysql-connectors-community-el7-x86_64
mysql-connectors對應的yum檔案:
[local-ftp-mysql-connect]
name=local-ftp-mysql-connect
baseurl=ftp://192.168.144.10/mysql/mysql-connectors-community-el7-x86_64
gpgcheck=0
enabled=1
mysql-tools
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-x86_64/
接着建立對應的目錄
mkdir -p /var/ftp/mysql/mysql-tools-community-el7-x86_64
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-x86_64/ -P /var/ftp/mysql/mysql-tools-community-el7-x86_64
mysql-tools對應的yum檔案:
[local-ftp-mysql-tools]
name=local-ftp-mysql-tools
baseurl=ftp://192.168.144.10/mysql/mysql-tools-community-el7-x86_64
gpgcheck=0
enabled=1
4.4、Q版OpenStack
首先确定ftp上網絡源的位置
https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/cloud/x86_64/openstack-queens/
接着建立對應的目錄
mkdir -p /var/ftp/cloud/openstack-queens/
下載下傳網絡ftp源的軟體包
wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/cloud/x86_64/openstack-queens/ -P /var/ftp/cloud/openstack-queens/
OpenStack對應的yum檔案:
[local-ftp-cloud-queens]
name=local-ftp-cloud-queens
baseurl=ftp://192.168.144.10/cloud/openstack-queens
gpgcheck=0
enabled=1
整體ftp源檔案:
這裡面包含了上面所列舉的所有源,epel、zabbix、mysql、OpenStack,其中mysql因為有三個版本5.6 5.7 8.0是以我預設隻是開啟了5.7版本的,其他都是關閉的,
cat /etc/yum.repos.d/ftp.repo
[local-ftp-centos7]
name=local-ftp-centos7
baseurl=ftp://192.168.144.10/centos7
gpgcheck=0
enabled=1
gpgkey=ftp://192.168.144.10/centos7/RPM-GPG-KEY-CentOS-7
[local-ftp-epel]
name=local-ftp-epel
baseurl=ftp://192.168.144.10/epel
gpgcheck=0
enabled=1
[local-ftp-zabbix]
name=local-ftp-zabbix
baseurl=ftp://192.168.144.10/zabbix
gpgcheck=0
enabled=1
[local-ftp-mysql56]
name=local-ftp-mysql56
baseurl=ftp://192.168.144.10/mysql/mysql-5.6-community-el7-x86_64
gpgcheck=0
enabled=0
[local-ftp-mysql57]
name=local-ftp-mysql57
baseurl=ftp://192.168.144.10/mysql/mysql-5.7-community-el7-x86_64
gpgcheck=0
enabled=1
[local-ftp-mysql80]
name=local-ftp-mysql80
baseurl=ftp://192.168.144.10/mysql/mysql-8.0-community-el7-x86_64
gpgcheck=0
enabled=0
[local-ftp-mysql-connect]
name=local-ftp-mysql-connect
baseurl=ftp://192.168.144.10/mysql/mysql-connectors-community-el7-x86_64
gpgcheck=0
enabled=1
[local-ftp-mysql-tools]
name=local-ftp-mysql-tools
baseurl=ftp://192.168.144.10/mysql/mysql-tools-community-el7-x86_64
gpgcheck=0
enabled=1
[local-ftp-cloud-queens]
name=local-ftp-cloud-queens
baseurl=ftp://192.168.144.10/cloud/openstack-queens
gpgcheck=0
enabled=1
檢視可用yum源:
[[email protected] ~]# yum makecache
Loaded plugins: fastestmirror
local-ftp-centos7 | 3.6 kB 00:00:00
local-ftp-cloud-queens | 3.0 kB 00:00:00
local-ftp-epel | 2.9 kB 00:00:00
local-ftp-mysql-connect | 2.9 kB 00:00:00
local-ftp-mysql-tools | 2.9 kB 00:00:00
local-ftp-mysql57 | 2.9 kB 00:00:00
local-ftp-zabbix | 2.9 kB 00:00:00
Loading mirror speeds from cached hostfile
Metadata Cache Created
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
local-ftp-centos7 local-ftp-centos7 9,591
local-ftp-cloud-queens local-ftp-cloud-queens 3,109
local-ftp-epel local-ftp-epel 13,494
local-ftp-mysql-connect local-ftp-mysql-connect 175
local-ftp-mysql-tools local-ftp-mysql-tools 119
local-ftp-mysql57 local-ftp-mysql57 464
local-ftp-zabbix local-ftp-zabbix 31
repolist: 26,983
下載下傳的軟體目錄結果