1. 背景描述
a. 現在大多數企業爲安全起見,提供服務的機器一般都不直接接入公網,這樣的話,安裝軟件及依賴包的時候,就很不方便,一般會在本地掛載iso鏡像文件,從本地安裝RPM軟件包,如果幾臺服務器還好,服務器數量在幾十臺往上的時候,就比較浪費磁盤空間和時間了;
b. 本文就以ftp的方式,配置一個離線yum源,供局域網內服務器使用,提升運維工作效率;
2. 環境準備
a. 準備兩臺CentOS 7.6 x64的服務器,一臺是FTP服務器,用來配置yum源;另一臺是yum client,用來測試本地yum源是否正常可用;
b. 準備包含完整RPM安裝包的鏡像文件,本文以CentOS-7-x86_64-Everything-1810.iso鏡像爲例,且集成所有軟件包;
c. 準備FTP服務的RPM安裝包,vsftpd-3.0.2-25.el7.x86_64.rpm
3. 操作方法
3.1 關閉防火牆和selinux
3.1.1 查看系統版本信息
[root@192168088102-FTP-YUM-Source ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
3.1.2 檢查並關閉防火牆
[root@192168088102-FTP-YUM-Source ~]# firewall-cmd --state
running
[root@192168088102-FTP-YUM-Source ~]# systemctl stop firewalld.service
#禁止開機自動啓動防火牆
[root@192168088102-FTP-YUM-Source ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@192168088102-FTP-YUM-Source ~]# firewall-cmd --state
not running
3.1.3 檢查並關閉selinux
[root@192168088102-FTP-YUM-Source ~]# cat /etc/sysconfig/selinux
#selinux開啓狀態
SELINUX=enforcing
[root@192168088102-FTP-YUM-Source ~]# vi /etc/sysconfig/selinux
#將enforcing改爲disabled
SELINUX=disabled
[root@192168088102-FTP-YUM-Source ~]# cat /etc/sysconfig/selinux
#selinux關閉狀態
SELINUX=disabled
#修改文件並不能當前生效,如果想生效的話,要麼重啓服務器要麼使用如下命令臨時關閉selinux
#查看當前的selinux運行狀態
[root@192168088102-FTP-YUM-Source ~]# getenforce
Enforcing
#0臨時關閉,1爲臨時開啓
[root@192168088102-FTP-YUM-Source ~]# setenforce 0
[root@192168088102-FTP-YUM-Source ~]# getenforce
Permissive
#重啓系統後,查看selinux和firewall狀態
[root@192168088102-FTP-YUM-Source ~]# sestatus
SELinux status: disabled
[root@192168088102-FTP-YUM-Source ~]# firewall-cmd --state
not running
3.2 上傳相關文件,並安裝啓動vsftp服務
#檢查上傳的FTP安裝包和iso鏡像文件
[root@192168088102-FTP-YUM-Source data]# ls -lh
total 11G
-rw-r--r--. 1 root root 11G Jul 29 00:57 CentOS-7-x86_64-Everything-1810.iso
-rw-r--r--. 1 root root 172K Jul 29 00:53 vsftpd-3.0.2-25.el7.x86_64.rpm
#檢查是否安裝yum服務
[root@192168088102-FTP-YUM-Source data]# rpm -qa|grep yum
yum-metadata-parser-1.1.4-10.el7.x86_64
yum-3.4.3-161.el7.centos.noarch
yum-plugin-fastestmirror-1.1.31-50.el7.noarch
#檢查並安裝vsftp服務
[root@192168088102-FTP-YUM-Source data]# rpm -qa|grep ftp
[root@192168088102-FTP-YUM-Source data]# rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm
warning: vsftpd-3.0.2-25.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
[root@192168088102-FTP-YUM-Source data]# rpm -qa|grep ftp
vsftpd-3.0.2-25.el7.x86_64
#rpm -qi vsftpd查看已安裝軟件的詳細信息
#啓動並檢查vsftp服務,不用配置vsftp文件,默認匿名訪問就行
[root@192168088102-FTP-YUM-Source data]# /bin/systemctl start vsftpd.service
[root@192168088102-FTP-YUM-Source data]# /bin/systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2019-07-29 01:27:34 EDT; 13s ago
Process: 21058 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 21059 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─21059 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Jul 29 01:27:34 192168088102-FTP-YUM-Source systemd[1]: Starting Vsftpd ftp daemon...
Jul 29 01:27:34 192168088102-FTP-YUM-Source systemd[1]: Started Vsftpd ftp daemon.
#測試FTP服務是否能正常訪問
3.3 掛載鏡像文件,並將文件拷貝到pub目錄下
#掛載鏡像文件
[root@192168088102-FTP-YUM-Source data]# mount -o loop CentOS-7-x86_64-Everything-1810.iso /mnt/
mount: /dev/loop0 is write-protected, mounting read-only
#將/mnt目錄下的文件拷貝到/var/ftp/pub/目錄下
[root@192168088102-FTP-YUM-Source mnt]# cp -ar /mnt/* /var/ftp/pub/
#檢查ftp是否正常可以訪問,出現以下界面,說明ftp正常
提醒:
如果你掛載的數據盤分區格式類型ext4,你的根分區格式類型爲xfs,且/var/ftp/pub/目錄掛在根下面,那麼會出現你從ext4所在的分區cp文件到/var/ftp/pub/目錄下後,ls -al發現文件拷貝成功,但在瀏覽器中輸入ftp://192.168.88.102/pub/ 發現沒有任何文件,經過排查測試,發現是系統分區格式類型不一致導致此問題,因此,建議小夥伴們在同一操作系統內,磁盤分區類型保持一致;
3.4 YUM客戶端配置
3.4.1 查看系統版本,備份yum.repos.d目錄下的文件
[root@192168088100-YUM-Client ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@192168088100-YUM-Client ~]# cd /etc/yum.repos.d/
[root@192168088100-YUM-Client yum.repos.d]# ll
total 32
-rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo
[root@192168088100-YUM-Client yum.repos.d]# mkdir bak
[root@192168088100-YUM-Client yum.repos.d]# cd bak/
[root@192168088100-YUM-Client bak]# mv ../CentOS-* ./
[root@192168088100-YUM-Client yum.repos.d]# ll
total 0
drwxr-xr-x. 2 root root 187 Jul 29 17:09 bak
3.4.2 在/etc/yum.repos.d目錄下創建並配置ftp.repo文件
[root@192168088100-YUM-Client yum.repos.d]# cat ftp.repo
[yum]
#自定義名稱
name=yumftp
#yum訪問路徑
baseurl=ftp://192.168.88.102/pub
#啓用yum源,0爲不啓用,1爲啓用
enabled=1
#檢查GPG-KEY,0爲不檢查,1爲檢查
gpgcheck=0
3.4.3 Client測試使用yum命令自動安裝軟件
#yum clean all 清除yum緩存
[root@192168088100-YUM-Client yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: yum
Cleaning up list of fastest mirrors
Other repos take up 215 M of disk space (use --verbose for details)
#yum makecache 緩存本地yum源中的軟件包信息
#測試使用yum安裝lrzsz軟件