防僞碼:日月星辰重置換,天高雲淡我爲峯!html
一、Centos8新特性介紹及安裝node
1.一、Centos8新特性python
本節主要講解CentOS8新特性。CentOS8與前版本比較,究竟有更新哪些新特性?mysql
CentOS8最終於2019年9月24日發佈。因爲這是一個源自Red Hat Enterprise Linux (RHEL)的Linux發行版,CentOS 徹底遵照 Red Hat 的再發行政策,而且致力與上游產品在功能上徹底兼容。CentOS 8 主要改動和 RedHat Enterprise Linux 8 (簡稱RHEL 8,中文名紅帽企業Linux 8)是一致的,基於 Fedora 28 和內核版本 4.18,CentOS 對組件的修改主要是去除 Red Hat 的商標及美工圖。linux
CentOS系統在開發人員和系統管理員中普遍使用,由於它提供了對其高度可定製的開源軟件包的徹底控制。它是穩定的,背後有一個龐大而活躍的支持社區。因爲其可靠性,它已經成爲服務器操做系統的主流選擇。nginx
讓咱們來看看CentOS8提供的全部新特性和更新。web
一、使用Linux內核4.18版本,CentOS8和RedHat8新特性一致,基於4.18的內核版本,提供AMD和Intel 64位架構,以及64位的arm、IBM Power Systems、Little Endian、IBM Z。sql
二、軟件倉庫更新,內容分佈在兩個主要的軟件倉庫:BaseOS repository和AppStream Repository。mongodb
BaseOS軟件倉庫:對於軟件倉庫來講,以前的系統中咱們默認就有一個Base的源,在CentOS8中,BaseOS軟件倉庫中的內容主要是提供底層操做系統功能的RPM包,提供一個最基礎的安裝包,它是以RPM格式提供的。shell
AppStream軟件倉庫:而AppStream是一種新的特性,也是新版本的一個亮點,它主要是包括其餘用戶空間應用程序、運行時語言和數據庫,簡單理解就是諸多第三方的應用,由於用戶空間的組件,一般比操做系統軟件包更新的要頻繁,因此它就將這兩部分分開,引入AppStream這麼一個概念,主要就是爲了提供更加的靈活性和系統底層的一個穩定性。
附:AppStream解釋
AppStream 是對傳統 rpm 格式的全新擴展,爲一個組件同時提供多個主要版本,應用程序流一般根據其分發的軟件版本命名,例如mongodb:3.4或mongodb:3.6,但也可使用「stable」和「latest」等名稱。
參考資料:
https://wiki.centos.org/zh/FAQ/CentOS8
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/distribution-of-content-in-rhel-8#application_streams
三、新版本centos8中提供最新的版本控制系統,包括:
Git 2.18,具備分散架構的分佈式版本控制系統。
Mercurial 4.8,輕量級分佈式版本控制系統,專爲高效處理大型項目而設計。
Subversion 1.10,集中版本控制系統
四、Web服務器、Web工具、開發語言和數據庫
Centos 8包括多個版本的數據庫、開發語言和其餘可供您使用的工具的應用程序,如下是centos 8上可用的組件列表:
python:centos 8中的默認Python是Python 3.6版本。默認狀況下可能未安裝該軟件包。要安裝Python 3.6,使用yum install python3命令,一樣仍是繼續支持python2.7,但只是有限支持 Python 2.7,生命週期較短,其目的是促進使用者向Python3的平穩過渡。
Nodejs:提供node.js 10,其餘動態語言更新包括: PHP 7.2, Ruby 2.5, Perl 5.26, SWIG 3.0。
centos 8 提供Apache 2.4.3七、Nginx 1.14(首次引入)
centos 8 提供的數據庫服務包括:MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, 和 Redis 5。
Squid 版本升級到 4.4,同時也首次提供Varnish Cache 6.0。
GCC編譯器8.1
glibc庫基於2.28版
五、編譯器和開發工具
Gcc 編譯器更新到8.2版本,支持更多C++標準,更好的優化以及代碼加強技術、提高警告和硬件特性支持。
glibc 庫升級到2.28
提供OpenJDK 11, OpenJDK 8, IcedTea-Web,以及不一樣 Java 工具,如 Ant, Maven,或 Scala。
六、軟件管理
CentOS 8附帶yum包管理器v4.0.9版本,該版本如今使用DNF (Dandified YUM)技術做爲後端。DNF是新一代的YUM,新的操做系統版本容許您同時使用這兩種工具來管理包。
Centos 8中默認使用的軟件管理工具由原版本的yum換成了速度更快的dnf,原有的yum命令僅爲dnf的軟連接。
對於熟悉的yum軟件包管理也作了新的升級,新版本中YUM包管理器基於 DNF 技術,與DNF技術集成,最新版本有一個大大改進的軟件管理系統。並支持模塊化內容、加強了性能、而且提供了設計良好的API用於與其餘工具集成。雲應用程序流、容器工做負載和CI/CD。
RPM的版本是4.14.2,它在開始安裝以前驗證整個包的內容。
centos 8中提供的YUM版本是v4.0.9,基於DNF的YUM與centos 7上使用的先前YUM v3相比具備如下優點:
1)、提升性能
2)、支持模塊化內容
3)、精心設計的穩定API,可與工具集成
詳情參考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/RHEL-8_0_0_release#software-management
七、桌面環境
GNOME Shell 升級到 3.28。
GNOME 會話和顯示管理使用 Wayland 做爲默認的顯示服務器,而 RHEL 7 默認的 X.Org server 依然提供。
八、網絡方面
使用網絡管理器(nmcli 和 nmtui)進行網絡配置,移除了網絡腳本
nftables 框架替代 iptables 做爲默認的網絡包過濾工具
firewalld 守護進程使用 nftables 做爲默認後端
支持 IPVLAN 虛擬網絡驅動程序,能夠爲多個容器提供網絡鏈接
九、文件系統和存儲
XFS文件系統最大大小已從500 TiB增長爲1024 TiB。
LUKS版本2(LUKS2)格式替代了舊版LUKS(LUKS1)格式;使用LUKS2做爲加密卷的默認格式。LUKS2在部分元數據損壞事件的狀況下爲加密卷提供元數據冗餘和自動恢復。
詳情參考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/RHEL-8_0_0_release#filesystems-storage
十、Cockpit WEB控制檯
開放的基於web的控制檯界面,Cockpit,如今做爲新的CentOS發佈的一部分。使用此平臺能夠經過web控制檯界面輕鬆地管理服務器。經過web瀏覽器執行系統任務、建立和管理虛擬機、配置網絡、啓動容器和檢查日誌。
Cockpit高度集成。它不只有一個嵌入式終端,可讓你隨時從終端切換到瀏覽器,並且還能夠在移動設備上工做。
所以,當你安裝CentOS 8時,它會自動設置Cockpit web控制檯,並打開所需的防火牆端口。可是,沒必要擔憂它會加劇系統的負擔。該軟件很是有效,由於它只在活動時使用內存和CPU。
CentOS8我就很少介紹了,詳情能夠參考下面的鏈接:
https://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS8.1905
CentOS 8官方發行說明
https://lists.centos.org/pipermail/centos-announce/2019-September/023449.html
完整的RedHat 8發行說明請看
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/overview
1.二、Centos8安裝
CentOS 8 下載:
國內阿里雲鏡像下載:
http://mirrors.aliyun.com/centos/8.0.1905/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso
CentOS 8 官方下載:https://centos.org/download/
CentOS Linux DVD ISO:CentOS 8 的穩定操做系統,系統管理員能夠用其部署或配置服務和應用。
CentOS stream DVD ISO:滾動發佈的 Linux 發行版,適用於須要頻繁更新的開發者。
附:CentOS Streams
CentOS 8版本還包含全新的 CentOS Streams,Centos Stream 是一個滾動發佈的 Linux 發行版,你能夠把 CentOS Streams 當成是用來體驗最新紅帽系 Linux 特性的一個版本,而無需等過久。
CentOS 8 所需的最低硬件配置:
◈ 至少2 GB 內存,官方推薦是最少2G內存,推薦4G內存或以上
◈ 64 位 x86 架構、2 GHz 或以上的 CPU
◈ 20 GB 硬盤空間
CentOS8安裝也不算複雜,和以前的版本安裝沒啥差異,建議以最小化安裝。具體安裝過程略。
二、Centos8網絡配置
在rhel8或CentOS8上,沒有傳統的network.service,在/etc/sysconfig/network-scripts/裏也看不到任何腳本文件,那麼該如何進行網絡配置呢?
Centos7上,/etc/sysconfig/network-scripts/路徑的內容:
Centos8上,/etc/sysconfig/network-scripts/路徑的內容:
能夠看到,在/etc/sysconfig/network-scripts目錄下只存放着網卡的配置文件,文件名稱是ifcfg-網卡名稱。
本文詳細闡述基於centos8的網絡配置,包含多種配置方法。
2.二、centos8與centos7的區別
在centos7上,同時支持network.service和NetworkManager.service(簡稱NM)。默認狀況下,這2個服務都有開啓,但許多人都會將NM禁用掉。
在centos8上,已廢棄network.service,所以只能經過NM進行網絡配置,包括動態ip和靜態ip。換言之,在centos8上,必須開啓NM,不然沒法使用網絡。
注:centos8依然支持network.service,只是默認沒安裝,詳見本文最後的提示。
2.三、NetworkManager介紹
NetworkManager是2004年Red Hat啓動的項目,旨在可以讓Linux用戶更輕鬆地處理現代網絡需求,尤爲是無線網絡,能自動發現網卡並配置ip地址。
相似在手機上同時開啓wifi和蜂窩網絡,自動探測可用網絡並鏈接,無需手動切換。
雖然初衷是針對無線網絡,但在服務器領域,NM已大獲成功。
2.3.二、NM能管理各類網絡
有線網卡、無線網卡
動態ip、靜態ip
以太網、非以太網
物理網卡、虛擬網卡
2.3.三、使用方法
nmcli:命令行。這是最經常使用的工具,本文將詳細講解該工具使用。
nmtui:在shell終端開啓文本圖形界面。示意圖見本文最後的提示
Freedesktop applet:如GNOME上自帶的網絡管理工具
cockpit:RedHat自帶的基於web圖形界面的"駕駛艙"工具,具備dashborad和基礎管理功能。示意圖見本文最後的提示
2.3.四、爲何要用NM
工具齊全:命令行、文本界面、圖形界面、web
廣納天地:納管各類網絡,有線、無線、物理、虛擬
參數豐富:多達200多項配置參數(包括ethtool參數)
一統江湖:RedHat系、SUSE系、Debian/Ubuntu系,均支持
大勢所趨:下一個大版本的rhel只能經過NM管理網絡
2.四、nmcli使用方法
nmcli使用方法很是相似linux ip命令、cisco交換機命令,而且支持tab補全(詳見本文最後的示例),也可在命令最後經過-h、--help、help查看幫助。在nmcli中有2個命令最爲經常使用:
一、nmcli connection
譯做鏈接,可理解爲配置文件,至關於ifcfg-ensXX。能夠簡寫爲nmcli c
二、nmcli device
譯做設備,可理解爲實際存在的網卡(包括物理網卡和虛擬網卡)。能夠簡寫爲nmcli d
在NM裏,有2個維度:鏈接(connection)和設備(device),這是多對一的關係。想給某個網卡配ip,首先NM要能納管這個網卡。設備裏存在的網卡(即nmcli d能夠看到的),就是NM納管的。接着,能夠爲一個設備配置多個鏈接(即nmcli c能夠看到的),每一個鏈接能夠理解爲一個ifcfg配置文件。同一時刻,一個設備只能有一個鏈接活躍。能夠經過nmcli c up切換鏈接。
connection有2種狀態:
活躍(帶顏色字體):表示當前該connection生效
非活躍(正常字體):表示當前該connection不生效
device有4種常見狀態:
connected:已被NM納管,而且當前有活躍的connection
disconnected:已被NM納管,可是當前沒有活躍的connection
unmanaged:未被NM納管
unavailable:不可用,NM沒法納管,一般出現於網卡link爲down的時候(好比ip link set ensXX down)
2.五、nmcli經常使用命令一覽
2.5.五、查看ip
查看ip(相似於ifconfig、ip addr)
# nmcli
2.5.六、建立connection,配置靜態ip
建立connection,配置靜態ip(等同於配置ifcfg,其中BOOTPROTO=none,並ifup啓動)
例如:虛擬機關機,添加一塊網卡,網卡設備名ens38
系統啓動後執行nmcli d和nmcli c查看
建立connection
# nmcli c add type ethernet con-name ens38 ifname ens38 ipv4.addr 192.168.1.200/24 ipv4.gateway 192.168.1.254 ipv4.method manual
Connection 'ens38' (2b3170a0-576d-4c98-94ea-0146a39173dd) successfully added.
查看建立的conntection
發現該connection是非活躍的
執行ifup啓用
查看網卡ens38的配置文件及配置文件內容
# ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifcfg-ens38
# cat /etc/sysconfig/network-scripts/ifcfg-ens38
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.1.200
PREFIX=24
GATEWAY=192.168.1.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens38
UUID=2b3170a0-576d-4c98-94ea-0146a39173dd
DEVICE=ens38
ONBOOT=yes
2.5.七、修改connection的ip地址
一、修改ip(非交互式)
# nmcli c modify ens38 ipv4.addr 192.168.1.201/24 ipv4.dns 114.114.114.114
# nmcli c up ens38
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
查看ip
# ifconfig ens38
二、修改ip(交互式)
# nmcli c edit ens38
nmcli> goto ipv4.addresses
nmcli ipv4.addresses> change
edit 'addresses' value: 192.168.1.202/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli ipv4.addresses> back
nmcli ipv4> save
nmcli ipv4> activate
nmcli ipv4> quit
2.5.八、建立connection,配置動態ip
建立connection,配置動態ip(等同於配置ifcfg,其中BOOTPROTO=dhcp,並ifup啓動)
例如:把前面建立的ens38鏈接刪除
# nmcli c delete cefb5b3b-210e-45d6-b62d-c75501c68bb7
注:nmcli c delete cefb5b3b-210e-45d6-b62d-c75501c68bb7是鏈接ens38的uuid
執行nmcli c和nmcli d
給網卡配置動態地址
# nmcli c add type ethernet con-name ens38 ifname ens38 ipv4.method auto
Connection 'ens38' (fa46f0ae-d4cd-442c-b630-82918323827f) successfully added.
# ifup ens38
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
執行nmcli或ifconfig或ip a查看ip地址(略)
執行nmcli c和nmcli d
# cat /etc/sysconfig/network-scripts/ifcfg-ens38
2.5.九、中止connection
中止connection(至關於ifdown)
# nmcli c down ens38
Connection 'ens38' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
執行nmcli c和nmcli d
2.5.十、啓用connection
啓用connection(至關於ifup)
# nmcli c up ens38
執行nmcli c和nmcli d
2.5.十一、刪除connection
刪除connection(相似於ifdown並刪除ifcfg)
# nmcli c delete ens38
Connection 'ens38' (fa46f0ae-d4cd-442c-b630-82918323827f) successfully deleted.
2.5.十二、查看connection
查看connection列表
# nmcli c show
2.5.1三、查看connection詳細信息
# nmcli c show ens33
2.5.1四、重載全部ifcfg或route到connection
重載全部ifcfg或route到connection(不會當即生效)
# nmcli c reload
2.5.1五、重載指定ifcfg或route到connection
重載指定ifcfg或route到connection(不會當即生效)
#nmcli c load /etc/sysconfig/network-scripts/ifcfg-ensXX
2.5.1六、當即生效connection
當即生效connection,有4種方法
# nmcli c up ensXX
# nmcli d reapply ensXX
# nmcli d connect ensXX
# systemctl restart NetworkManager
2.5.1七、查看device
查看device列表
# nmcli d
2.5.1八、查看全部device詳細信息
# nmcli d show
2.5.1九、查看指定device的詳細信息
# nmcli d show ensXX
2.5.20、激活網卡
# nmcli d connect ensXX
2.5.2一、關閉無線網絡
關閉無線網絡(NM默認啓用無線網絡)
# nmcli r all off
2.5.2二、查看NM納管狀態
# nmcli n
enabled
2.5.2三、開啓NM納管
# nmcli n on
2.5.2四、關閉NM納管
關閉NM納管(謹慎執行)
# nmcli n off
2.5.25監聽事件
# nmcli m
2.5.2六、檢測NM是否在線可用
# nm-online
注:本文說起的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ensXX及/etc/sysconfig/network-scripts/route-ensXX
2.六、nmcli connection重點
2.6.2七、nmcli c show
▪ 第一列是connection名字,簡稱con-name(注意con-name不是網卡名)
▪ 第二列是connection的UUID
▪ 第三列是connection的類型
▪ 最後一列纔是網卡名(標準說法叫device名),可經過nmcil d查看device
對connection作操做時須要指定標識,標識能夠是con-name、UUID、若是存在ifcfg文件則也能夠用ifcfg的完整路徑,即/etc/sysconfig/network-scripts/ifcfg-ensXX
例如:
# nmcli c show ens33
# nmcli c show dabe8052-ae4f-41f0-b1d4-370a76e87202
# nmcli c show /etc/sysconfig/network-scripts/ifcfg-ens33
2.6.2八、nmcli c的con-name
con-name同時對應ifcfg的文件名以及文件內容中的NAME=,該參數表示鏈接(connection)的名字,無需和網卡名相同,能夠爲一個設備(device)建立多個鏈接,但同一時刻只能有一個鏈接生效。當有多個鏈接時候,nmcli c delete刪除當前鏈接,就會自動選擇同一個設備的其餘鏈接來頂替生效。能夠經過nmcli c up來將指定鏈接切換生效。
注意:經過nmcli c modify修改con-name,只會對應修改ifcfg文件中的NAME,而不會更改ifcfg文件名。
2.6.2九、nmcli c的ipv4.method
對應ifcfg文件內容的BOOTPROTO,ipv4.method默認爲auto,對應爲BOOTPROTO=dhcp,這種時候若是指定ip,就可能致使網卡同時有dhcp分配的ip和靜態ip。設置爲manual表示BOOTPROTO=none,即只有靜態ip。
例如:建立一個鏈接(connection)
# nmcli c add type ethernet con-name ens38-test ifname ens38 ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual
註解:
▪ type ethernet:建立鏈接時候必須指定類型,類型有不少,能夠經過nmcli c add type -h看到,這裏指定爲ethernet。
▪ con-name ensXX ifname ensXX:第一個ensXX表示鏈接(connection)的名字,這個名字能夠任意定義,無需和網卡名相同;第二個ensXX表示網卡名,這個ethX必須是在nmcli d裏能看到的。
▪ ipv4.addresses '192.168.1.100/24,192.168.1.101/32':配置2個ip地址,分別爲192.168.1.100/24和192.168.1.101/32
▪ ipv4.gateway 192.168.1.254:網關爲192.168.1.254
▪ ipv4.dns '8.8.8.8,4.4.4.4':dns爲8.8.8.8和4.4.4.4
▪ ipv4.method manual:配置靜態IP
對應的ifcfg和dns就是
# cat /etc/sysconfig/network-scripts/ifcfg-ens38-test
# /etc/resolv.conf
此時,經過nmcli c應該能夠看到增長了一條鏈接
注意:若是這是爲ensXX建立的第一個鏈接,則自動生效;若是此時已有鏈接存在,則該鏈接不會自動生效,能夠執行nmcli c up ensXX-test來切換生效
2.七、nmcli device重點
2.7.30、nmcli d connect ensXX
由NM對指定網卡進行管理,同時刷新該網卡對應的活躍connection(若是以前有修改過connection配置);若是有connection可是都處於非活躍狀態,則自動選擇一個connection並將其活躍;若是沒有connection,則自動生成一個並將其活躍。
例如:執行nmcli c delete 鏈接名,將ens38網卡的全部connection刪除,而後執行nmcli d查看網卡設備
執行nmcli d connect ens38
2.7.31nmcli d disconnect ethX
讓NM暫時無論理指定網卡,此操做不會變動實際網卡的link狀態,只會使對應的connection變成非活躍。若重啓系統則又會自動connect。另外,若是手工將該網卡的connection所有刪掉,該網卡狀態也會自動變爲disconnected。
2.7.3二、nmcli d reapply ensXX
專門用於刷新connection,前提是網卡的device處於connected狀態,不然會報錯。
例如:經過配置文件(ifcfg)修改網卡ens38的ip地址,能夠經過執行nmcli d reapply ens38刷新該connection,使修改生效。
2.7.3三、nmcli d set ensXX autoconnect yes|no managed yes|no
能夠設置是否自動鏈接和是否自動管理,但經測試只能用於當前開機狀態, 若是這2個參數都設置爲no,而後重啓系統,又會自動恢復成connected和managed yes的狀態。因此該命令用途不大。
注意事項:若是managed設置爲no,那麼nmcli c reload會讀取配置文件,可是不會當即生效,接着若是執行nmcli c up ens38X,就會當即生效,同時managed自動變爲yes。
重啓系統自動恢復成connected和managed yes的狀態,這種邏輯並不實用也不夠合理,據redhat的回覆,這麼設計是由於目前沒有一個有效的手段來證實「我是我」,好比當網卡從新拔插到其餘插槽時候,網卡名有很大可能性會發生變化,所以沒法肯定關機前設置的是對應開機後的哪一個網卡,目前暫無辦法解決。
2.八、 3種網絡配置方法
在講3種配置方法前,須要先明白ifcfg和NM connection的關聯:雖然network.service被廢棄了,可是redhat爲了兼容傳統的ifcfg,經過NM進行網絡配置時候,會自動將connection同步到ifcfg配置文件中。也能夠經過nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ensXX的方式來讓NM讀取ifcfg配置文件到connection中。所以ifcfg和connection是一對一的關係,另外上面有提到,connection和device是多對一的關係。
在rhel8上,有3種方法進行網絡配置
1. 手工配置ifcfg,經過NM來生效
2. 經過NM自帶工具配ip,好比nmcli
3. 手工配置ifcfg,經過傳統network.service來生效
2.8.3四、方法一:手工配置ifcfg,使用nmcli來生效新的網絡配置
建議:推薦使用上述第1種網絡配置方法(手工配置ifcfg,經過NM生效),由於這樣既兼容了傳統的ifcfg配置,又能熟悉nmcli。
例如:假設網卡標識爲ens38
cat > /etc/sysconfig/network-scripts/ifcfg-ens38 << EOF
NAME=ens38
DEVICE=ens38
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.150
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=114.114.114.114
EOF
使用nmcli從新加載網絡配置
# nmcli c reload
# nmcli c up ens38 # 若是以前沒有ens38的connection,則上一步reload後就已經自動生效了
這麼作有2個好處:
按官方建議使用NM而不是network.service
當還不太熟悉nmcli命令時候,這樣最穩妥
2.8.3五、方法二:RHEL8和CentOS8徹底使用nmcli來管理網絡
參考前面講解的2.5節nmcli經常使用命令一覽
2.8.3六、方法三:安裝network.service服務
能夠經過yum install network-scripts來安裝傳統的network.service,不過redhat說了,在下一個RHEL的大版本里將完全廢除,所以不建議使用network.service。
CentOS8和RHEL8上必定要習慣使用nmcli來管理網絡,network.service在將來會被正式廢除,沒有學習的必要了。
2.九、提示
1. nmcli命令支持tab補全,可是須要yum install bash-completion
2. 若是但願NM不要納管網卡,只有一個辦法最完全最靠譜,就是本身寫ifcfg,內容加上NM_CONTROLLED=no,這樣該device的狀態就會始終保持unmanaged。nmcli c up、nmcli c reload、nmcil c load都不會對其起任何做用。
3. NM只能對link狀態爲up的網卡進行操做,若是手動ip link set ethX down,那麼NM就沒法對該網卡作任何操做(即便nmcli d connect也沒有用)。
4. 能夠經過yum install network-scripts來安裝傳統的network.service,不過redhat說了,在下一個rhel的大版本里將完全廢除,所以不建議使用network.service。
5. 手工建立新的ifcfg或者在ifcfg裏修改ip等配置,NM不會自動讀取,須要手工執行nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX也能夠重啓NetworkManager服務。這一點可能和其餘系統的NM行爲不太同樣,但這種作法實則更適合服務器。
6. 不手工配置ifcfg,使用默認的dhcp狀況下,網卡的增減是不會自動生成ifcfg,此時nmcli c看到的con-name將相似'System ethX'或者'Wired connection 1'。
7. NetworkManager支持3種獲取dhcp的方式:dhclient、dhcpcd、internal,當/etc/NetworkManager/NetworkManager.conf配置文件中的[main]部分沒配置dhcp=時候,默認使用internal(rhel7/centos7默認是dhclient)。internal是NM內部實現的dhcp客戶端。
8. NM默認會從dhcp裏獲取dns信息,並修改/etc/resolv.conf,若是不想讓NM管理/etc/resolv.conf,則只需在/etc/NetworkManager/NetworkManager.conf裏的[main]裏增長dns=none便可。
9. 更多NetworkManager參數詳見man NetworkManager.conf
10. nmtui示意圖:
11. cockpit示意圖:
2.十、如何在 CentOS 8 中安裝 Cockpit Web 控制檯
Linux Cockpit 是一個基於 Web 界面的應用,它提供了對系統的圖形化管理。
Cockpit Web控制檯使您能夠執行多種管理任務,包括:
管理服務
管理用戶賬號
管理和監視系統服務
配置網絡接口和防火牆
查看系統日誌
管理虛擬機
建立診斷報告
設置內核轉儲配置
配置SELinux
更新軟件
管理系統訂閱
Cockpit Web控制檯使用與終端相同的系統API,而且在終端中執行的任務會迅速反映在Web控制檯中。此外,您能夠直接在Web控制檯中或經過終端配置設置。
在CentOS 8中安裝Cockpit Web Console
1.使用CentOS 8最小安裝時,默認狀況下不會安裝Cockpit,您可使用如下命令將其安裝在系統上,該命令將以所需的依賴項安裝Cockpit。
# yum install -y cockpit
2.接下來,啓用並啓動cockpit.socket服務,以經過Web控制檯鏈接到系統,並使用如下命令驗證該服務並運行cockpit進程。
# systemctl start cockpit.socket
# systemctl enable cockpit.socket
# systemctl status cockpit.socket
注:設置開機自啓動同時開啓服務一條命令就能夠搞定
# systemctl enable --now cockpit.socket
3.若是您正在系統上運行firewalld,則須要打開防火牆中的Cockpit端口9090或關閉防火牆。
# firewall-cmd --add-service=cockpit --permanent
# firewall-cmd --reload
4.在網絡瀏覽器中,經過如下URL打開Cockpit網絡控制檯:
在瀏覽器中輸入IP地址+端口號(127.0.0.1:9090)
注:若是您使用的是自簽名證書,則會在瀏覽器上收到警告,只需驗證證書並接受安全例外,便可繼續進行登陸。
5.在Web控制檯登陸屏幕中,輸入系統用戶名和密碼。
若是用戶賬戶具備sudo特權,則能夠執行管理任務,例如在Web控制檯中安裝軟件,配置系統或配置SELinux。
6.成功進行身份驗證後(例如使用root帳號和密碼認證),將打開Cockpit Web控制檯界面。
就這樣。 Cockpit是一個易於使用的Web控制檯,可以讓您在CentOS 8服務器上執行管理任務。
三、Centos 8 軟件管理
3.一、Centos 8軟件倉庫
在Centos 8中把軟件源分紅了兩部分:一個是BaseOS,一個是AppStream
在Centos 8中,統一的ISO自動加載BaseOS和AppStream安裝源存儲庫。已經存在於光盤連接中,只不過要分別去配置.repo文件
BaseOS 存儲庫 - BaseOS 存儲庫以傳統RPM包的形式提供底層核心OS內容
AppStream 存儲庫 - Application Stream 存儲庫提供您可能但願在給定用戶空間中運行的全部應用程序,簡單理解就是諸多第三方的應用。
3.二、DNF包管理工具介紹
Centos 8中默認使用的軟件管理工具由原版本的yum換成了dnf,而centos 8默認提供的yum命令僅爲dnf的軟連接。
注:CentOS 8附帶的yum包管理器版本是v4.0.9,該版本如今使用DNF (Dandified YUM)技術做爲後端。
DNF表明Dandified YUM,是基於RPM的Linux發行版的軟件包管理器。它用於在Fedora / RHEL / CentOS操做系統中安裝,更新和刪除軟件包。 它是Fedora 22,CentOS8和RHEL8的默認軟件包管理器。 DNF是YUM的下一代版本,並打算在基於RPM的系統中替代YUM。 DNF功能強大且具備健壯的特徵。DNF使維護軟件包組變得容易,而且可以自動解決依賴性問題。
DNF的出現,是爲了解決Yum系統的性能瓶頸,優化內存使用,依賴關係解析,執行速度等,yum已被DNF取代。這不只僅是解決yum中待解決的問題。 此外,DNF添加了許多功能,以實現基於RPM的系統中軟件包的無縫管理。DNF是用Python3寫的。
CentOS 8使用了dnf 做爲安裝程序。雖然改變了軟件包的安裝方式,可是 dnf 仍是能兼容使用 yum 的配置文件的和命令的使用方法的。估計在下一個版本中yum就會被取消了。
用dnf --help,查看你可以使用的命令參數,跟yum差很少。
3.三、DNF的優點
DNF 和 YUM 均是 rpm 軟件包管理工具,可是 DFN 替代 YUM 的說法由來已久,由於 YUM 包管理工具備一些問題長期得不到解決。這些問題包括性能低下、內存佔用高以及依賴包解決方案不佳等。而 DNF 在依賴包解決方案中採用了由 SUSE 開發的」libsolv」庫,用以提高依賴包解析性能。
1) DNF代碼比Yum要簡單,大約有29000行代碼,而Yum代碼有59000多行。
2) 執行速度更快,比Yum消耗更少內存。
3) 依賴包解析速度比yum更快。
3.四、DNF配置文件的位置
主配置文件: /etc/dnf/dnf.conf
倉庫文件: /etc/yum.repos.d/
日誌:/var/log/dnf.rpm.log,/var/log/dnf.log
Cache Files: /var/cache/dnf
例如:在dnf.conf文件中加入keepcache=true參數,就能夠將從遠程倉庫安裝的包文件緩存到本地的/var/cache/dnf目錄下。
3.五、centos8 dnf源
dnf倉庫文件所在目錄依舊爲/etc/yum.repos.d/下,在yum.repos.d目錄下添加 .repo 文件。在本來的yum.repos.d目錄下默認有cetnos官方源。
因爲CentOS 8主要使用AppStream, BaseOS, Extras三個倉庫,這三個倉庫能夠理解爲同一個軟件源中保存了不一樣種類軟件的不一樣部分。
3.5.二、配置centos 8本地倉庫源
CentOS 8更改了軟件包的安裝程序,取消了 yum 的配置方法,改而使用了dnf 做爲安裝程序。雖然改變了軟件包的安裝方式,可是 dnf 仍是能兼容使用 yum 的配置文件的和命令的使用方法的。
Centos 8本地倉庫源存在於光盤連接中,只不過要分別去配置.repo文件,dnf源配置方法和yum源同樣。
先備份centos8提供的官方源
掛載centos8的光盤到/mnt目錄下
在yum.repos.d目錄下建立.repo爲結尾的倉庫文件,內容以下:
使用dnf列出系統中的倉庫,該命令列出了默認狀況下啓用的全部倉庫
測試
# dnf -y install wget //安裝wget軟件包
本地dnf源配置完畢。
3.5.三、配置internet源(如阿里源、epel源)
首先將上面配置的本地源禁用
# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/centos8.repo
訪問https://mirrors.aliyun.com/或https://developer.aliyun.com/mirror/地址
點擊上圖用紅線框起來的連接,如centos
按照上圖給出的方法下載倉庫文件便可
阿里源配置完成。
3.六、如何使用DNF
DNF命令的語法相似於YUM,你會發現它們之間有不少類似之處。
# man dnf
dnf [options] <command> [<args>...]
遇到不懂的地方運行 man dnf 查看dnf的man幫助就能夠了。
3.6.四、DNF經常使用命令
檢查並升級可用軟件包:dnf update
刪除緩存:dnf clean all
列出可用的軟件源:dnf repolist
搜索軟件:dnf search $package
安裝軟件:dnf install $package
升級軟件包:dnf update $package
刪除軟件包:dnf remove $package
查看更多命令:dnf help
接下來,咱們將學習DNF 包管理器的操做命令,使用這些命令,你能夠方便有效的管理您系統中的 RPM 軟件包。
3.6.五、查看 DNF 包管理器版本
該命令用於查看安裝在您系統中的 DNF 包管理器的版本
3.6.六、使用dnf列出系統中的倉庫
該命令列出了默認狀況下啓用的全部倉庫,並提供了列出其餘信息的選項。 在經過dnf命令添加-v選項時,可提供了更詳細的信息。
此外,它不會強制同步過時的元數據,而且你能夠強制同步使用--refresh開關啓用的全部存儲庫。
3.6.6.二、列出系統上啓用的軟件庫
運行如下命令列出系統上啓用的倉庫
[root@localhost ~]# dnf repolist
或者,你能夠運行如下命令以列出系統上已啓用的倉庫
# dnf repolist enabled或# dnf repolist --enabled
3.6.6.三、列出系統上禁用的倉庫
運行如下命令以列出系統上禁用的倉庫
# dnf repolist disabled或# dnf repolist --disabled
3.6.6.四、列出系統上的全部倉庫(已啓用和已禁用)
運行如下命令以列出系統上的全部倉庫(已啓用和已禁用)
# dnf repolist all或# dnf repolist --all
3.6.6.五、列出每一個倉庫的詳細信息
要查看有關每一個存儲庫的詳細信息,使用dnf命令添加-v開關。 它顯示repo-id,repo-name等。
# dnf repolist -v
3.6.七、列出RPM包
3.6.7.六、列出全部 RPM 包
# dnf list
dnf list命令用於列出系統上的全部來自軟件庫的可用軟件包和全部已經安裝在系統上的軟件包。
# dnf list或# dnf list all
3.6.7.七、出全部安裝了的 RPM 包
dnf list installed該命令用於列出全部安裝了的 RPM 包
3.6.7.八、列出全部可供安裝的 RPM 包
該命令用於列出來自全部可用軟件庫的可供安裝的軟件包(不包括已安裝的軟件包)
# dnf list available
3.6.7.九、查看是否安裝了給定的軟件包
如下命令查看是否安裝了給定的軟件包。若是是,它將顯示相似下面的輸出。不然,它將顯示如下錯誤消息「Error: No matching packages to list」
3.6.7.十、列出可用於已安裝軟件包的升級包
# dnf list upgrades
3.6.八、搜索軟件庫中的 RPM 包
dnf search命令使你能夠根據給定的字符串(關鍵字)查找可用軟件包的列表。當你不知道要安裝的確切軟件包名稱時,你能夠用該命令來搜索軟件包。你須要在」search」參數後面鍵入軟件的部分名稱來搜索,關鍵字做爲不區分大小寫的子字符串進行匹配。默認狀況下,列出與全部請求的關鍵字匹配的軟件包。在軟件包名稱和摘要中搜索關鍵字。
3.6.九、查找某一文件的提供者
dnf provides命令將查找提供給定文件的軟件包。若是您想找出哪一個軟件包(已安裝或未安裝)提供了此文件,這將頗有用。
例如,咱們將查找」/bin/bash」這個文件的提供者
例如,咱們都知道sar的使用,而咱們大多數人都不知道哪一個軟件包提供了此文件。使用如下命令找到它。
3.6.十、查看軟件包詳情
當你想在安裝某一個軟件包以前查看它的詳細信息時,這條命令能夠幫到你
如下命令用於列出有關已安裝和可用軟件包的描述和摘要信息。它顯示了有關軟件包的各類信息,例如名稱,Arch,版本,發行版,大小,存儲庫名稱等。
# dnf info httpd
3.6.十一、安裝軟件包
使用該命令,系統將會自動安裝對應的軟件及其所需的全部依賴,默認狀況下,每次DNF要求您確認安裝軟件包時,都添加-y選項以免確認。
3.6.11.十一、安裝單個軟件包:
# dnf install gcc
3.6.11.十二、安裝多個軟件包:
# dnf install vsftpd ftp
3.6.11.1三、在dnf中添加-y選項以安裝軟件包,無需確認直接安裝:
# dnf -y install nginx
3.6.11.1四、安裝rpm包文件:
# dnf install /path/to/file.rpm
3.6.11.1五、從url安裝rpm包:
# dnf install https://xyz.com/file.rpm
3.6.11.1六、要安裝提供/usr/bin/[xxx]文件的軟件包,請運行如下命令。
例如,sar應用程序是「 sysstat」軟件包的一部分,但咱們大多數人都不知道其父軟件包的名稱。 可是,很難找到其父程序包名稱,可是此命令容許您在不知道父程序包名稱的狀況下進行安裝。
# dnf install /usr/bin/sar
3.6.十二、刪除軟件包
3.6.12.1七、刪除系統中指定的軟件包
例如刪除一個名爲nginx的軟件包
# dnf remove nginx -y
3.6.12.1八、刪除無用孤立的軟件包
當沒有軟件再依賴它們時,某一些用於解決特定軟件依賴的軟件包將會變得沒有存在的意義,該命令就是用來自動移除這些沒用的孤立軟件包。
# dnf autoremove
3.6.1三、升級軟件包
將全部已安裝的軟件包更新爲最新的可用版本
# dnf upgrade或# dnf update
3.6.13.20、將給定的一個或多個軟件包更新爲最新的可用版本
# dnf upgrade [Package_Name]
例如,咱們將用命令升級」systemd」這一軟件包
# dnf upgrade system或# dnf update system
3.6.13.2一、檢查系統軟件包的更新
該命令用於檢查系統中全部軟件包的更新
# dnf check-update
或者,使用下面的命令檢查可用更新。
# dnf list updates
如下命令檢查對指定軟件包的更新
# dnf check-update [Package_Name]
# dnf check-update sudo
3.6.1四、清除系統上的緩存數據
默認狀況下,當你執行各類dnf操做時,dnf會將包和存儲庫元數據之類的數據緩存到「/var/cache/dnf」目錄中。該緩存在一段時間內會佔用大量空間。這將容許您刪除全部緩存的數據。
# dnf clean all
3.6.1五、獲取有關某條命令的使用幫助
該命令用於獲取有關某條命令的使用幫助(包括可用於該命令的參數和該命令的用途說明)(本例中咱們將使用命令獲取有關命令」clean」的使用幫助)
# dnf help clean
3.6.1六、查看全部的 DNF 命令及其用途
命令用於列出全部的 DNF 命令及其用途
# dnf help
3.6.1七、查看 DNF 命令的執行歷史
你可使用該命令來查看你係統上 DNF 命令的執行歷史。經過這個手段你能夠知道在自你使用 DNF 開始有什麼軟件被安裝和卸載。
3.6.17.2二、顯示dnf歷史記錄
dnf history命令容許用戶查看在過去的事務中發生了什麼操做
# dnf history
注:此報錯不影響使用,只須要yum module enable perl:5.26便可
或者,你可使用如下命令得到相同的結果。
# dnf history list
3.6.17.2三、顯示有關歷史的詳細信息
顯示有關歷史的詳細信息。若是未指定,則顯示最近一次歷史信息
# dnf history info
運行如下命令以查看有關給定ID的歷史詳細信息。
# dnf history info 3
3.6.1八、查看全部的軟件包組
該命令用於列出全部的軟件包組
# dnf grouplist
3.6.1九、安裝一個軟件包組
該命令用於安裝一個軟件包組
# dnf groupinstall 'Development Tools'
3.6.20、升級一個軟件包組中的軟件包
該命令用於升級一個軟件包組中的軟件包
# dnf groupupdate 'Development Tools'
3.6.2一、刪除一個軟件包組
該命令用於刪除一個軟件包組
# dnf groupremove 'Development Tools'
3.七、模塊化管理功能
3.7.2二、利用AppStream管理軟件
隨着linux系統愈來愈龐大,軟件包也愈來愈多,愈來愈複雜。CentOS 8 跟隨上游RHEL8中引入了一種新的結構來管理軟件內容,全部的軟件內容被劃分紅了兩個repository:BaseOS 和AppStream
BaseOS:相似於原來的軟件倉庫,主要提供了OS系統的基礎組件,提供的是RPM形式的包,由於都是RPM包形式因此它支持與以前版本兼容。
AppStream:這是一個特殊類型的倉庫,它提供的是用戶空間的應用,運行時語言等,它提供了兩種形式的內容:第一種是RPM形式的獨立的軟件包,第二種是Module形式的包集合,Module是表明着一組一般一塊兒安裝的RPM包,一個典型的module包含應用,依賴庫,文檔庫,幫助組件等,即將相關的包組合在一塊兒。
爲何要引入AppStream?
CentOS 8引入了新的倉庫 AppStream,這個倉庫經過流式更新能夠爲 CentOS 帶來新的版本,不會像之前那樣,軟件包過於陳舊。可是這樣帶來一個問題,如何保證用戶的遷移成本,好比一些程序運行時,主版本對於大部分人來講不能輕易更新。解決問題的方法是引入模塊化。模塊化讓軟件包倉庫能夠同時分發相同軟件的不一樣版本,一個模塊表明一個版本,須要指定版本安裝或啓用對應模塊便可,一個模塊能夠包含多個軟件包以解決依賴性問題。
當你在 CentOS 8 添加新的沒有模塊的軟件倉庫,好比 NodeJS 的官方倉庫,而後準備運行dnf install nodejs安裝的時候,卻發現軟件版本沒有變,並無使用第三方軟件倉庫的包,這是由於模塊擁有更高的優先級,而第三方軟件倉庫沒有引入模塊化或者是模塊沒有被啓用,解決方法是禁用掉當前啓用的模塊或者啓用新的模塊。
請注意,並不是AppStream軟件倉庫中的全部包都分佈在一個模塊中。
3.7.2三、模塊化基礎知識
AppStream這個軟件倉庫有一個不一樣的管理軟件的方法,將它分爲幾個子類:
Packages:做爲常規包處理(即RPM形式的獨立的軟件包)。
Module:是表明着一組一般一塊兒安裝的RPM包,一個典型的module包含應用,依賴庫,文檔庫,幫助組件等。
Module stream:表明一組組件的不一樣版本,模塊一般有多個流,這一般表明軟件的主要版本。它能夠並行使用,但在給定系統上只能安裝每一個模塊的一個流。
Module profiles:表明爲了某個功能須要一塊兒安裝的包列表,module stream中能夠包含多個profiles,能夠根據profiles 選擇性地安裝模塊。例如,數據庫模塊能夠做爲客戶端,服務端或同時安裝。
3.7.2四、dnf module命令來管理模塊
你能夠經過dnf module命令來管理模塊,經常使用的用法:
注:可經過man dnf查看dnf的幫助手冊中關於module的的命令用法
3.7.24.2四、模塊列表:dnf module list
輸出模塊列表,顯示每一個模塊關聯的流、版本和可用安裝配置文件。模塊流旁邊的 [d] 表示安裝命名模塊時使用的默認流。
# dnf module list
執行該命令後會有以下的輸出信息
要顯示有關特定模塊的信息,請提供名稱做爲上一個命令的參數:
# dnf module list nginx //列出模塊名爲nginx的列表
# dnf module list mysql //列出模塊名爲mysql的列表
能夠看到四列輸出,分別是:Name、Stream、Profiles、Summary
Name表明模塊(module)名,stream表明模塊流即軟件版本,模塊流旁邊的 [d] 表示安裝命名模塊時使用的默認流。Profile表明爲了某個功能須要一塊兒安裝的包列表。好比mysql模塊,包含了一個8.0版本的流,其下有client、server兩種安裝組合,其中,server組合後,有一個「[d]」,那是缺省的安裝組合。若是你安裝的時候沒有指定組合,則會安裝這個server組合。下面兩條命令的最終效果是同樣的:
# dnf module install mysql:8.0/server
# dnf module install mysql:8.0
module stream中能夠包含多個profiles,能夠根據profiles 選擇性地安裝模塊。例如,mysql模塊能夠做爲客戶端,服務端或同時安裝。
3.7.24.2五、查看模塊:dnf module info <module_spec>…
要獲取有關該模塊的一些詳細信息,請運行如下命令:
# dnf module info mysql //獲取mysql模塊的詳細信息
關於 module_spec 取值,不一樣的命令有些許不一樣,先列出模塊列表,能夠看到四列輸出,分別是:Name、Stream、Profiles、Summary,除了 Summary 以外其餘三列都有用。
例如:顯示nginx模塊流1.14的詳細信息
# dnf module info nginx:1.14
如要顯示更加詳細的信息能夠視同-v選項
3.7.24.2六、安裝模塊:dnf module install <module_spec>…
安裝模塊配置文件命令用法是:
# dnf [options] module install <module_spec>...
安裝模塊配置文件,包括其軟件包。若是沒有提供配置文件,則安裝全部默認配置文件。相應地啓用模塊流。
首先獲取模塊stream,例如:
# dnf module list mariadb
你能夠看到模塊mariadb有一個stream,要安裝MongoDB的server,請運行:
# dnf -y module install mariadb:10.3/server
由於mariadb模塊的stream 10.3和profiles server是默認的,因此也能夠執行下面的命令
# dnf module install mariadb
安裝後,你可使用rpm命令確認包版本:
# rpm -qa | grep mariadb
若是要安裝的是mariadb模塊的配置文件client,就須要指定profiles
# dnf module install mariadb:10.3/client
3.7.24.2七、卸載模塊:dnf module remove <module_spec>…
刪除已安裝的模塊配置文件,包括其軟件包。若是沒有提供配置文件,則會刪除全部已安裝的配置文件。
# dnf module remove mariadb
3.7.24.2八、啓用模塊:dnf module enable <module_spec>…
這將啓用module stream並使包RPM中的流RPM可用。
# dnf module enable <module_spec>
注:模塊不須要啓用也能夠直接安裝
3.7.24.2九、禁用模塊:dnf module disable <module-name>…
要禁用模塊並使全部相關module streams不可用,請使用:
$ dnf module disable <module-name>
3.7.24.30、重置模塊狀態
你還能夠重置模塊狀態,以便再也不啓用或禁用它:
# dnf module reset <module_spec>