1. 程式人生 > >你所不瞭解的Linux(文末有福利)

你所不瞭解的Linux(文末有福利)

稻盛和夫先生在《活法》中有段一直激勵著我的話,現在轉送給正在閱讀本文的你:

“工作馬馬虎虎,只想在興趣和遊戲中尋覓快活,充其量只能獲得一時的快感,絕不能嚐到從心底湧出的驚喜和快樂,但來自工作的喜悅並不像糖果那樣——放進嘴裡就甜味十足,而是需要從苦勞與艱辛中滲出,因此當我們聚精會神,孜孜不倦,克服艱辛後的成就感,世上沒有哪種喜悅可以類比”。

“更何況人類生活中工作佔據了較大的比重,如果不能從勞動中、工作中獲得充實感,那麼即使從別的地方找到快樂,最終我們仍然會感到空虛和缺憾”。

學習是件苦差事

我不想回避這個問題——學習是件痛苦的事情。如果說學習Linux真的很簡單,那必是騙子的謊言,起碼這不能給您帶來高薪。在每次起床後的幾分鐘時間裡,大腦都會陷入鬥爭狀態——是該聊會天呢,還是要追個美劇呢,還是打一局英雄聯盟呢,還是看一下那該死的劉遄寫的那本可怕的Linux教材呢?這個時候,請不要忘記自己最初的夢想。十年後的你,一定會感激現在拼命努力學習的自己。身為作者,我的使命就是讓本書對得起你為此花費的時間、精力和金錢,讓你每學完一個章節都是一次進步。

備註:本文摘自《Linux就該這麼學》 文中出現的我為本書作者劉遄

開源共享精神

簡單來說,開源軟體的特點就是把軟體程式與原始碼檔案一起打包提供給使用者,讓使用者在不受限制地使用某個軟體功能的基礎上還可以按需進行修改,或編製成衍生產品再發布出去。使用者具有使用自由、修改自由、重新發布自由以及建立衍生品的自由。這也正好符合了黑客和極客對自由的追求,因此國內外開源社群的根基都很龐大,人氣也相當高。

坦白來講,每位投身於Linux行業的技術人或者程式設計師只要聽到開源專案就會由衷地感到自豪,這是一種從骨子裡帶有的獨特情懷。開源的企業不單純是為了利益,而是互相扶持,努力服務好更多的使用者。開源軟體最重要的特性有下面這些。

  • 低風險:使用閉源軟體無疑把命運交付給他人,一旦封閉的原始碼沒有人來維護,你將進退維谷;而且相較於商業軟體公司,開源社群很少存在倒閉的問題。

  • 高品質:相較於閉源軟體產品,開源專案通常是由開源社群來研發及維護的,參與編寫、維護、測試的使用者量眾多,一般的bug還沒有等爆發就已經被修補。

  • 低成本:開源工作者都是在幕後默默且無償地付出勞動成果,為美好的世界貢獻一份力量,因此使用開源社群推動的軟體專案可以節省大量的人力、物力和財力。

  • 更透明:沒有哪個笨蛋會把木馬、後門等放到開放的原始碼中,這樣無疑是把自己的罪行暴露在陽光之下。

但是,如果開源軟體為了單純追求“自由”而犧牲程式設計師的利益,這將會影響程式設計師的創造激情,因此世界上現在有60多種被開源促進組織(Open Source Initiative)認可的開源許可協議來保證開源工作者的權益。對於那些只知道一味抄襲、篡改、破解或者盜版他人作品的不法之徒,終歸會在某一天收到法院的傳票。對於準備編寫一款開源軟體的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟體權益。

  • GNU GPL(GNU General Public License,GNU通用公共許可證):只要軟體中包含了遵循GPL協議的產品或程式碼,該軟體就必須也遵循GPL許可協議且開源、免費,因此這個協議並不適合商用軟體。遵循該協議的開源軟體數量極其龐大,包括Linux系統在內的大多數的開源軟體都是基於這個協議的。GPL開源許可協議最大的4個特點如下所示。

640?wx_fmt=png

  • 複製自由:允許把軟體複製到任何人的電腦中,並且不限制複製的數量。

  • 傳播自由:允許軟體以各種形式進行傳播。

  • 收費傳播:允許在各種媒介上出售該軟體,但必須提前讓買家知道這個軟體是可以免費獲得的;因此,一般來講,開源軟體都是通過為使用者提供有償服務的形式來盈利的。

  • 修改自由:允許開發人員增加或刪除軟體的功能,但軟體修改後必須依然基於GPL許可協議授權。

  • BSD(Berkeley Software Distribution,伯克利軟體釋出版)許可協議:使用者可以使用、修改和重新發布遵循該許可的軟體,並且可以將軟體作為商業軟體釋出和銷售,前提是需要滿足下面3個條件。

640?wx_fmt=png

  • 如果再發布的軟體中包含原始碼,則原始碼必須繼續遵循BSD許可協議。

  • 如果再發布的軟體中只有二進位制程式,則需要在相關文件或版權檔案中宣告原始程式碼遵循了BSD協議。

  • 不允許用原始軟體的名字、作者名字或機構名稱進行市場推廣。

  • Apache許可證版本(Apache License Version)許可協議:在為開發人員提供版權及專利許可的同時,允許使用者擁有修改程式碼及再發布的自由。該許可協議適用於商業軟體,現在熱門的Hadoop、Apache HTTP Server、MongoDB等專案都是基於該許可協議研發的,程式開發人員在開發遵循該協議的軟體時,要嚴格遵守下面的4個條件。

0?wx_fmt=png

  • 該軟體及其衍生品必須繼續使用Apache許可協議。

  • 如果修改了程式原始碼,需要在文件中進行宣告。

  • 若軟體是基於他人的原始碼編寫而成的,則需要保留原始程式碼的協議、商標、專利宣告及其他原作者宣告的內容資訊。

  • 如果再發布的軟體中有宣告檔案,則需在此檔案中標註Apache許可協議及其他許可協議。

  • MPL(Mozilla Public License,Mozilla公共許可)許可協議:相較於GPL許可協議,MPL更加註重對開發者的原始碼需求和收益之間的平衡。

  • MIT(Massachusetts Institute of Technology)許可協議:目前限制最少的開源許可協議之一,只要程式的開發者在修改後的原始碼中保留原作者的許可資訊即可,因此普遍被商業軟體所使用。

為什麼學習Linux系統

早在20世紀70年代,UNIX系統是開源而且免費的。但是在1979年時,AT&T公司宣佈了對UNIX系統的商業化計劃,隨之開源軟體業轉變成了版權式軟體產業,原始碼被當作商業機密,成為專利產品,人們再也不能自由地享受科技成果。

於是在1984年,Richard Stallman面對於如此封閉的軟體創作環境,發起了GNU原始碼開放計劃並制定了著名的GPL許可協議。1987年時,GNU計劃獲得了一項重大突破——gcc編譯器釋出,這使得程式設計師可以基於該編譯器編寫出屬於自己的開源軟體。隨之,在1991年10月,芬蘭赫爾辛基大學的在校生Linus Torvalds編寫了一款名為Linux的作業系統。該系統因其較高的程式碼質量且基於GNU GPL許可協議的開放原始碼特性,迅速得到了GNU計劃和一大批黑客程式設計師的支援。隨後Linux系統便進入瞭如火如荼的發展階段。

1994年1月,Bob Young在Linux系統核心的基礎之上,集成了眾多的原始碼和程式軟體,釋出了紅帽系統並開始出售技術服務,這進一步推動了Linux系統的普及。1998年以後,隨著GNU原始碼開放計劃和Linux系統的繼續火熱,以IBM和Intel為首的多家IT企業巨頭開始大力推動開放原始碼軟體的發展。到了2017年年底,Linux核心已經發展到了4.13版本,並且Linux系統版本也有數百個之多,但它們依然都使用Linus Torvalds開發、維護的Linux系統核心。RedHat公司也成為了開源行業及Linux系統的帶頭公司。

在講課時,我經常會問同學們一個問題:“為什麼學習Linux系統?”很多學生為了讓我高興,直接就說“因為Linux系統是開源的,所以要去學習”。其實這個想法是完全錯誤的!開源的作業系統少說有100個,開源的軟體至少也有十萬個,為什麼不去逐個學習?所以上面談到的開源特性只是一部分優勢,並不足以成為您付出精力去努力學習的理由。

對於使用者來講,開源精神僅具備錦上添花的效果,因此正確的學習動力應該源自於:Linux系統是一款優秀的軟體產品,具有類似UNIX的程式介面,而且繼承了UNIX的穩定性,能夠較好地滿足工作需求。

大多數讀者應該都是從微軟的Windows系統開始瞭解計算機和網路的,因此肯定會有這樣的想法“Windows系統很好用啊,而且也可足以滿足日常工作需求呀”。客觀來講,Windows系統確實很優秀,但是在安全性、高可用性與高效能方面卻難以讓人滿意。您應該見過下面這張圖片。

640?wx_fmt=png

想必讀者現在已經能猜到,為什麼要在需要長期穩定執行的網站伺服器上、在處理大資料的集群系統中以及需要協同工作的環境中採用Linux系統了。通過下圖也可以看出Linux系統相較於Windows系統的具體優勢。

640?wx_fmt=png

常見的Linux系統版本

在介紹常見的Linux系統版本之前,首先需要區分Linux系統核心與Linux發行套件系統的不同。

  • Linux系統核心指的是一個由Linus Torvalds負責維護,提供硬體抽象層、硬碟及檔案系統控制及多工功能的系統核心程式。

  • Linux發行套件系統是我們常說的Linux作業系統,也即是由Linux核心與各種常用軟體的集合產品。

全球大約有數百款的Linux系統版本,每個系統版本都有自己的特性和目標人群,下面將可以從使用者的角度選出最熱門的幾款進行介紹。

注:

本文全篇將以“Linux系統”來替代“Linux發行套件系統”這個詞。

640?wx_fmt=png

  • 紅帽企業版Linux(RedHat Enterprise Linux,RHEL):紅帽公司是全球最大的開源技術廠商,RHEL是全世界內使用最廣泛的Linux系統。RHEL系統具有極強的效能與穩定性,並且在全球範圍內擁有完善的技術支援。RHEL系統也是本文、紅帽認證以及眾多生產環境中使用的系統。

640?wx_fmt=jpeg

  • 社群企業作業系統(Community Enterprise Operating System,CentOS):通過把RHEL系統重新編譯併發布給使用者免費使用的Linux系統,具有廣泛的使用人群。CentOS當前已被紅帽公司“收編”。

640?wx_fmt=png

  • Fedora:由紅帽公司釋出的桌面版系統套件(目前已經不限於桌面版)。使用者可免費體驗到最新的技術或工具,這些技術或工具在成熟後會被加入到RHEL系統中,因此Fedora也稱為RHEL系統的“試驗田”。運維人員如果想時刻保持自己的技術領先,就應該多關注此類Linux系統的發展變化及新特性,不斷改變自己的學習方向。

640?wx_fmt=png

  • openSUSE:源自德國的一款著名的Linux系統,在全球範圍內有著不錯的聲譽及市場佔有率。

640?wx_fmt=png

  • Gentoo:具有極高的自定製性,操作複雜,因此適合有經驗的人員使用。讀者可以在學習完本書後嘗試一下該系統。

640?wx_fmt=png

  • Debian:穩定性、安全性強,提供了免費的基礎支援,可以良好地支援各種硬體架構,以及提供近十萬種不同的開源軟體,在國外擁有很高的認可度和使用率。

640?wx_fmt=png

  • Ubuntu:是一款派生自Debian的作業系統,對新款硬體具有極強的相容能力。Ubuntu與Fedora都是極其出色的Linux桌面系統,而且Ubuntu也可用於伺服器領域。

現在國內大多數Linux相關的圖書都是圍繞CentOS系統編寫的,作者大多也會給出圍繞CentOS進行寫作的一系列理由,但是很多理由都站不住腳,根本沒有剖析到CentOS系統與RHEL系統的本質關係。CentOS系統是通過把RHEL系統釋放出的程式原始碼經過二次編譯之後生成的一種Linux系統,其命令操作和服務配置方法與RHEL完全相同,但是去掉了很多收費的服務套件功能,而且還不提供任何形式的技術支援,出現問題後只能由運維人員自己解決。經過這般分析基本上可以判斷出,選擇CentOS的理由只剩下——免費!當人們大舉免費、開源、正義的旗幟來宣揚CentOS系統的時候,殊不知CentOS系統其實早在2014年年初就已經被紅帽公司“收編”,當前只是戰略性的免費而已。再者說,根據GNU GPL許可協議,我們同樣也可以免費使用RHEL系統,甚至是修改其程式碼建立衍生產品。開源系統在自由程度上沒有任何差異,更無關道德問題。

本書是基於最新的RHEL 7系統編寫的,書中內容及實驗完全通用於CentOS、Fedora等系統。也就是說,當您學完本書後,即便公司內的生產環境部署的是CentOS系統,也照樣可以搞得定。更重要的是,本書配套資料中的ISO映象與紅帽RHCSA及RHCE考試基本保持一致,因此更適合備考紅帽認證的考生使用。

  • 隨書配備的ISO映象檔案下載地址:http://www.linuxprobe.com/tools

  • 深度評解紅帽RHCSA、RHCE、RHCA認證:http://www.linuxprobe.com/redhat-certificate

優秀的RHEL 7系統

注:

本小節的內容是我在2015年寫給學員的一篇文章,現在RHEL 7系統已經經過近三年的迭代更新,此時再回看這篇文章,發現我的預測還是很準確吧。當前,國內大多數機房都已經部署了RHEL 7系統,國內外多家銀行機構、保險公司系統也紛紛上線CentOS 7或RHEL 7系統,但我依然想引用這篇文章來幫助讀者瞭解RHEL 7系統,而且我也深信這篇文章同樣也會適用於未來的RHEL 8系統。

2014年年末,RedHat公司推出了當前最新的企業版Linux系統——RHEL 7,彼時國內外各大媒體都給了不少特寫鏡頭,行業也給予了碩大的期待。但是,時至今日RHEL 7系統的市場佔有率卻一直不溫不火,於是有人開始對RHEL 7系統的未來表示擔心,甚至有人還拿出各種論調來唱衰Linux系統,覺得開源廠商已經過了事業最高點,要在伺服器領域讓步於Windows系統了。這些話其實並沒必要去反駁,任何一個產品都會有其擁躉和黑粉,時間會向所有人證明一切。我們現在只是來單純地聊一聊這個RHEL 7系統。

在正式開聊之前,希望讀者對Linux系統特性和運維領域有基本的瞭解,知道Linux系統在伺服器領域中佔據著不可小覷的市場份額,認識到RedHat廠商對Linux系統及整個開源行業的重要影響,更知道CentOS系統其實是RHEL系統的衍生品。如果以前使用過一段時間的RHEL 7系統,我們就更能順暢地討論“紅帽Linux系統是否是一個失敗的產品”這個問題。

我們先來看一個燙手的熱議問題:“為什麼半年過去了,RHEL 7系統的市場份額依然不溫不火?要不要返回去學習老版本的Linux系統?”甚至有陰謀論說美國在使用新版本的Linux系統來蒐集全球資訊,告誡我們千萬不要去碰。這個問題必須要回應,否則更多的陰謀論會層出不窮,甚至會讓國內某些認知能力欠缺的媒體對開源行業產生誤解甚至曲解。

基於前面提到的與讀者共有的經驗共識和篇幅限制,下面的論證速度會比較快,也會很有意思。首先,RHEL是企業版的伺服器系統而不是用來玩耍折騰的桌面機系統,更何況作為桌面作業系統的Windows 7在2009年7月14日釋出之後,整整用了3年才開始真正普及,難道在2009年到2013年間,Windows 7就是失敗的產品嗎?再者,RHEL 7系統創新式地集成了Docker虛擬化技術,支援XFS檔案系統,相容微軟的身份管理,並採用systemd作為系統初始化程序,其效能和相容性相較於之前版本都有了很大的改善,很明顯是一款非常優秀的作業系統。最後,其實單從納入OpenStack和Docker的決策上來講,就應該相信紅帽的開發團隊不是在閉門造車。因此應該重新考慮到底是哪裡出了問題。

運維人員在心裡經常會想:“現在的環境跑得好好的,為什麼要換呢?”重新部署生產環境不是說裝上作業系統萬事大吉,也不是把軟體隨便安裝上就能拍屁股走人的,還要考慮升級帶來的風險。

  • 日後的生產環境出了問題,誰來負責?

  • 舊的軟體依然能否與新系統相容?

  • 新的系統或軟體是否有bug?

  • 安全性如何,審計怎麼做?

  • 之前購買的第三方技術支援是否可以具備相應的能力?

  • 升級後是否會影響到某些軟體的版權,是否需要重新付費?

  • 不習慣新系統帶來的變化怎麼辦?

  • 費力升級後對自己有什麼好處?

……

客觀來講,這次RHEL 7系統的改變實在太大,最重要的是它採用了systemd作為初始化程序。這樣一來,幾乎之前所有的運維自動化指令碼都需要修改。那麼,到底還要不要升級到RHEL 7?當然,也不是說伺服器機房中的生產環境從不更新換代,當工作需求超過了當前版本的能力範圍時,就必須要進行升級。比如,rsyslogd日誌記錄服務在RHEL 6系統中的版本是5.8,而現在最新的版本已經是8.1。這兩個版本之間差了3個大的主版本號,其功能就有了很大的差距,您覺得會一直用舊的版本嗎?

早在2014年年初,Fedora系統首次採用了systemd系統初始化程序,當時我就斷言RHEL 7系統也會使用systemd,所以當即更新了自己的培訓課程。這也讓身在其他培訓機構還在學習init引數的使用者新生豔羨。所以,不論是學習Linux還是程式語言,都應該選擇當前穩定且最新的版本作為學習環境。

  • 穩定:無論是進行開發還是運維,穩定壓到一切。

  • 最新:老版本可能會有更大的概率存在安全漏洞或者功能缺陷,而新版本不僅出現漏洞的概率小,而且即便出現漏洞,也會快速得到眾多開源社群和企業的響應並更快地修復。

我每次在公開場合講座時都會表達這樣一個觀點:“我們並不是因為開源而喜歡Linux,而是因為Linux系統真的非常優秀,開源精神僅僅是錦上添花而已。”我們在前文中已經狠狠地肯定了Linux系統對運維行業甚至是對世界的影響。大家要做的就是去相信我對運維行業未來發展的判斷,然後放手來學習吧。

瞭解紅帽認證

紅帽公司成立於1993年,是全球首家收入超10億美元的開源公司,總部位於美國,分支機構遍佈全球。紅帽公司作為全球領先的開源和Linux系統提供商,其產品已被業界廣泛認可並使用,尤其是RHEL系統在業內擁有超高的Linux系統市場佔有率。紅帽公司除了提供作業系統之外,還提供了虛擬化、中介軟體、應用程式、管理和麵向服務架構的解決方案。

紅帽認證是由紅帽公司推出的Linux認證,該認證被認為是Linux行業乃至整個IT領域價值最高的認證之一。紅帽認證考試全部採用上機形式,在考察學生基礎理論能力的同時還考察了實踐動手操作以及排錯能力。紅帽公司針對紅帽認證制定了完善的專業評估與認證標準,其認證主要包括紅帽認證系統管理員(RHCSA)、紅帽認證工程師(RHCE)與紅帽認證架構師(RHCA)。

2014年6月10日,紅帽公司在釋出新版紅帽企業版系統(RHEL 7)的當天即在紅帽英文官網更新了其對RHCSA與RHCE培訓政策的調整,考生只有先通過紅帽RHCSA認證後才能考取紅帽RHCE認證。

640?wx_fmt=png

紅帽認證進階等級圖

紅帽認證系統管理員(Red Hat Certified System Administrator,RHCSA)屬於Linux系統的初級認證,比較適合Linux愛好者。該認證要求考生對Linux系統有一定的瞭解,並且能夠熟練使用Linux命令來完成以下任務:

  • 管理檔案、目錄、文件以及命令列環境;

  • 使用分割槽、LVM邏輯卷管理本地儲存;

  • 安裝、更新、維護、配置系統與核心服務;

  • 熟練建立、修改、刪除使用者與使用者組,並使用LDAP進行集中目錄身份認證;

  • 熟練配置防火牆以及SELinux來保障系統安全。

640?wx_fmt=png

紅帽認證管理員(RHCSA)證書示例

紅帽認證工程師(Red Hat Certified Engineer,RHCE)屬於Linux系統的中級水平認證,難度相對RHCSA認證來講更大,而且要求考生必須已獲得RHCSA認證。該認證適合有基礎的Linux運維管理員,主要考察對下列服務的管理與配置能力:

  • 熟練配置防火牆規則鏈與SElinux安全上下文;

  • 配置iSCSI(網際網路小型計算機系統介面)服務;

  • 編寫Shell指令碼來批量建立使用者、自動完成系統的維護任務;

  • 配置HTTP/HTTPS網路服務;

  • 配置FTP服務;

  • 配置NFS服務;

  • 配置SMB服務;

  • 配置SMTP服務;

  • 配置SSH服務;

  • 配置NTP服務。

640?wx_fmt=png

紅帽認證工程師(RHCE)證書示例

紅帽認證架構師(Red Hat Certified Architect,RHCA)屬於Linux系統的最高級別認證,是公認的Linux作業系統頂級認證,目前中國僅有不到1000人(2017年更新資料)持有該認證。考生需要在獲得RHCSA與RHCE認證後再完成5門課程的考試才能獲得RHCA認證,因此難度最大,備考時間最長,費用也最高(考試費約在1.8萬元~2.1萬元人民幣)。該認證考察的是考生對紅帽衛星服務、紅帽系統叢集、紅帽虛擬化、系統性能調優以及紅帽雲系統的安裝搭建與維護能力。

640?wx_fmt=png

紅帽認證架構師(RHCA)證書示例

RHCA高分技巧

紅帽RHEL 7版本的RHCA認證需要完成至少5門考試。這5門考試的時間不同,但均為210分合格(70%)。而且紅帽公司非常注重RHCA架構師認證的實用性,所以課程總是在隨行業趨勢而不斷調整。

下表為2017年最新版的考試課程。欲取得紅帽RHCA認證,您必須通過以下任意5門認證考試。

考試程式碼

認證名稱

EX210

紅帽 OpenStack 認證系統管理員考試

EX220

紅帽混合雲管理專業技能證書考試

EX236

紅帽混合雲端儲存專業技能證書考試

EX248

紅帽認證 JBoss 管理員考試

EX280

紅帽平臺即服務專業技能證書考試

EX318

紅帽認證虛擬化管理員考試

EX401

紅帽部署和系統管理專業技能證書考試

EX413

紅帽伺服器固化專業技能證書考試

EX436

紅帽叢集和儲存管理專業技能證書考試

EX442

紅帽效能調優專業技能證書考試

本書摘自《Linux就該這麼學

評論有獎規則

  • 如果你對本書感興趣,可在本文下方留言,說出自己的申請理由,小編會放出有價值的評論,且根據使用者評論點贊數+申請理由綜合評定挑選3 名參與評論的小夥伴送出該書的兌換碼。

  • 福利獲獎名單會在次日的留言中直接回復中獎使用者。

點選閱讀原文,購買《Linux就該這麼學》

點選圖片get更多精彩

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=gif

640?wx_fmt=png