記得最早接觸linux是在2000年,那個時候,還在上大學,一個同學從荷蘭回來,帶回來了一個Linux的複製版,記得版本還是Redhat6.2。曾經為安裝一個系統讓我們忘記疲勞,挑燈夜戰,不亦樂乎。那時Linux的學習資料還很少,能夠學習的書籍也不多,網上Linux技術社群也很少,就憑著Redhat6.2自帶的幾頁使用說明開始了學習linux的生涯。
轉眼間,10幾年過去了,我也與Linux相伴了10多年,10年間,隨著虛擬化、雲端計算時代的來臨,Linux迅猛發展,在伺服器領域已經佔據半壁江山,而基於Linux的運維也面臨新的挑戰:面對越來越複雜的業務,面對越來越多樣化的使用者需求,不斷擴充套件的應用需要越來越合理的模式來保障Linux靈活便捷、安全穩定地持續提供服務,這種模式中的保障因素就是Linux運維。從初期的幾臺伺服器發展到龐大的雲端計算資料中心,單靠人工已經無法滿足在技術、業務、管理等方面的要求,那麼標準化、自動化、穩定性、可靠性等業務需求越來越被人們所重視。因此,對Linux的高效能、可靠性提出了更高的要求。
今天不講深入的東西,只想將自己多年來學習Linux的心得與感受與大家一起分享下,希望能給愛好Linux的朋友們或者Linux的同行們一點意見和建議,一點經驗心得與大家共勉!
一、Linux在各領域發展的現狀與趨勢
很多新手都有一個很疑惑的問題:“Linux我聽過,但是學習linux系統,能在上面幹什麼呢,或者說linux系統具體能做什麼”,帶著這個疑問,在本書的開篇,我們先來了解下Linux與開源軟體的關係以及Linux的應用領域和未來的發展趨勢。
1.1 Linux與開源軟體
Linux是一種自由和開放原始碼的類UNIX作業系統,該作業系統的核心由林納斯托瓦茲在1991年首次釋出,之後,在加上使用者空間的應用程式之後,就成為了Linux作業系統。嚴格來講,Linux只是作業系統核心本身,但通常採用“Linux核心”來表達該意思。而Linux則常用來指基於Linux核心的完整作業系統,它包括GUI元件和許多其他實用工具。
GNU通用公共許可協議(GNU General Public License,簡稱GNU GPL或GPL),是一個廣泛被使用的自由軟體許可協議條款,最初由理查德斯托曼為GNU計劃而撰寫,GPL給予了計算機程式自由軟體的定義, 任何基於GPL軟體開發衍生的產品在釋出時必須採用GPL許可證方式,且必須公開原始碼,
Linux是自由軟體和開放原始碼軟體發展中最著名的例子。只要遵循GNU通用公共許可證,任何個人和機構都可以自由地使用Linux的所有底層原始碼,也可以自由地修改和再發布。隨著Linux作業系統飛速發展,各種整合在Linux上的開源軟體和實用工具也得到了應用和普及,因此,Linux也成為了開源軟體的代名詞。
1.2 Linux在伺服器領域的發展
隨著開源軟體在世界範圍內影響力日益增強,Linux伺服器作業系統在整個伺服器作業系統市場格局中佔據了越來越多的市場份額,已經形成了大規模市場應用的局面。並且保持著快速的增長率。尤其在政府、金融、農業、交通、電信等國家關鍵領域。此外,考慮到Linux的快速成長性以及國家相關政策的扶持力度,Linux伺服器產品一定能夠衝擊更大的伺服器市場。
據權威部門統計,目前Linux在伺服器領域已經佔據75%的市場份額,同時,Linux在伺服器市場的迅速崛起,已經引起全球IT產業的高度關注,並以強勁的勢頭成為伺服器作業系統領域中的中堅力量。
1.3 Linux在桌面領域的發展
近年來,特別在國內市場,Linux桌面作業系統的發展趨勢非常迅猛。國內如中標麒麟Linux、紅旗Linux、深度Linux等系統軟體廠商都推出的Linux桌面作業系統,目前已經在政府、企業、OEM等領域得到了廣泛應用。另外SUSE、Ubuntu也相繼推出了基於Linux的桌面系統,特別是Ubuntu Linux,已經積累了大量社群使用者。但是,從系統的整體功能、效能來看,Linux桌面系統與Windows系列相比還有一定的差距,主要表現在系統易用性、系統管理、軟硬體相容性、軟體的豐富程度等方面。
1.4 Linux在移動嵌入式領域的發展
Linux的低成本、強大的定製功能以及良好的移植效能,使得Linux在嵌入式系統方面也得到廣泛應用,目前Linux以廣泛應用於手機、平板電腦、路由器、電視和電子遊戲機等領域。在移動裝置上廣泛使用的Android作業系統就是建立在Linux核心之上的。目前,Android已經成為全球最流行的智慧手機作業系統,據2015年權威部門最新統計,Android作業系統的全球市場份額已達84.6%。
此外,思科在網路防火牆和路由器也使用了定製的Linux,阿里雲也開發了一套基於Linux的作業系統“YunOS”,可用於智慧手機、平板電腦和網路電視;常見的數字影片錄影機、舞臺燈光控制系統等都在逐漸採用定製版本的Linux來實現,而這一切均歸功與Linux與開源的力量。
1.5 Linux在雲端計算/大資料領域的發展
網際網路產業的迅猛發展,促使雲端計算、大資料產業的形成並快速發展,雲端計算、大資料作為一個基於開源軟體的平臺,Linux佔據了核心優勢;據Linux基金會的研究,86%的企業已經使用Linux作業系統進行雲端計算、大資料平臺的構建,目前,Linux已開始取代Unix成為最受青睞的雲端計算、大資料平臺作業系統。
二、選擇適合自己的Linux發行版
談到Linux的發行版本,太多了,可能誰也不能給出一個準確的數字,但是有一點是可以肯定的,Linux正在變得越來越流行。面對這麼多的Linux發行版,打算從其他系統轉到Linux系統來的初學者可能會感到困惑,即便是忠實的Linux使用者也沒有時間和精力去挨個嘗試,因此初學者在學習Linux之前,需要有一個明確的方向,選擇一個適合自己的Linux系統至關重要。下面我們就分類介紹。
2.1 常見的Linux發行版
1. Red Hat Linux
Red Hat Linux是Red Hat最早發行的個人版本的Linux,其1.0版本於1994年11月3日發行。雖然其歷史不及其他Linux發行版本悠久,但比起很多的Linux發行套件,Red Hat的歷史要悠久得多。自從Red Hat 9.0版本釋出後,Red Hat公司就不再開發桌面版的Linux發行套件,Red Hat Linux停止了開發,而將全部力量集中在伺服器版的開發上,也就是Red Hat Enterprise Linux版。2004年4月30日,Red Hat公司正式停止對Red Hat 9.0版本的支援,標誌著Red Hat Linux的正式完結。原本的桌面版Red Hat Linux發行套件則與來自開源社群的Fedora進行合併,成為Fedora Core發行版本。
目前Red Hat分為兩個系列:由Red Hat公司提供收費技術支援和更新的Red Hat Enterprise Linux,以及由社群開發的免費的Fedora Core。
2. Fedora Core
Fedora Core(縮寫為FC)被Red Hat公司定位為新技術的測試平臺,許多新的技術都會在FC中檢驗。如果穩定的話Red Hat公司則會考慮加入到Red Hat Enterprise Linux中。
Fedora Core 1釋出於2003年年末,而FC的定位便是桌面使用者。FC提供了最新的軟體包,同時它的版本更新週期也非常短,僅有6個月。由於版本更新頻繁,效能和穩定性得不到保證,因此一般在伺服器上不推薦採用Fedora Core。
Fedora對於使用者而言,是一套功能完備、更新迅速的免費作業系統,因此,個人領域的應用,例如開發、體驗新功能等可選擇此發行版本。
3.Red Hat Enterprise Linux
Red Hat Enterprise Linux(縮寫為RHEL,Red Hat的企業版Linux)。Red Hat現在主要做伺服器版的Linux開發,在版本上注重了效能和穩定性,以及對硬體的支援。由於企業版作業系統的開發週期較長,注重效能、穩定性和服務端軟體支援,因此版本更新相對較緩慢。
RHEL的版本都是基於Fedora。大約每六個版本的Fedora會有一個新版本的RHEL釋出,因此,RHEL大約3年釋出一個新版本。其最新版本是2015年3月6日釋出的RHEL 7.1。本書就是以此版本展開講述的。
4.Centos
CentOS全名為“社群企業作業系統”(Community Enterprise Operating System)。它是來自於RHEL依照開放原始碼規定釋出的原始碼所編譯而成,由於RHEL是商業產品,因此必須將所有Red Hat的Logo標識改成自己的CentOS標識,這就產生了CentOS作業系統,兩者的不同在於,CentOS並不包含封閉原始碼軟體。因此,CentOS不但可以自由使用,而且還能享受CentOS提供的免費長期升級和更新服務。這是CentOS的一個很大優勢。
CentOS採取從RHEL的原始碼包來構建,它的版本號有兩個部分:一個主要版本和一個次要版本,主要和次要版本號分別對應於RHEL的主要版本與更新包,例如CentOS6.5構建在RHEL6.0更新的第5版。但是從RHEL7.0版本以後,CentOS版本命名格式又稍有變化:主要版本仍然對應於RHEL的主要版本,次要版本以RHEL更新包釋出日期為準,例如RHEL7.1對應的CentOS版本為CentOS 7.1.1503,這表示RHEL7.1版本是2015年3月份釋出的。
在2014年CentOS宣佈與Red Hat合作,但CentOS將會在新的委員會下繼續運作,並不受RHEL的影響。這個策略表明CentOS後續發展將有Red Hat作為強有力的支援。
目前網際網路企業有一大部分linux伺服器選擇的是CentOS作業系統。
5. SuSE Linux
SUSE是德國最著名的Linux發行版,也享有很高的聲譽,不過命運相當坎坷;2003年11月4日,Novell公司對外宣佈將收購SUSE。2004年1月該收購順利完成,Novell同時將SUSE正式命名為SUSE Linux。Novell公司收購SUSE,加速了SUSE Linux的發展,將免費SUSE Linux改為openSUSE社群專案,但在2010年,Attachmate公司收購了Novell,在被收購後,SUSE Linux發展受阻,而就在3年後,SUSE再次易主,2014年9月Attachmate公司被上市公司Micro Focus收購,但幸運的是:SUSE官方宣佈開源作為SUSE的發展之本,仍將持續貢獻開源,SUSE仍將全力投入對openSUSE的支援。
雖然SUSE多次易主,但並不影響它的專業性,據不完全統計,SUSE Linux現在歐洲Linux市場佔有將近80%的份額,大部分關鍵性應用都是建立在SUSE Linux下的。而由於SUSE多次易主,再加上SUSE在中國的營銷模式問題,現在SUSE在中國的Linux市場份額並不大,但是這些並不影響SUSE Linux高可靠性與穩定性的事實。隨著SUSE的發展,相信SUSE Linux在中國的應用會越來越多。
6. Ubuntu Linux
Ubuntu(中文諧音為友幫拓、優般圖、烏班圖)是一個以桌面應用為主的Linux作業系統,基於Debian GNU/Linux,Ubuntu的目標在於為一般使用者提供一個最新的、同時又相當穩定的主要由自由軟體構建而成的作業系統。Ubuntu具有龐大的社群力量,使用者可以方便地從社群獲得幫助。
7. 發行版總結
上面主要介紹了幾種最常見的Linux發行版本,其實Linux的發行版本還有很多,比較常見的還有Debian GNU/Linux、Mandriva、Gentoo、Slackware、Knoppix、MEPIS和Xandros,以及國產的紅旗Redflag、深度deepin Linux和中標麒麟Linux等,這裡不再一一介紹。其實縱觀Linux的各個發行版,Linux發行版本無非是朝著這兩個方面而來,一是伺服器市場,二是桌面市場。
以Ubuntu Linux為代表的Linux發行版走的是桌面市場路線,雖然它們給使用者帶來很多驚喜,更新也很快,但是由於桌面市場有著Windows這樣強勁的對手,因此Linux桌面發展不容樂觀,目前Ubuntu Linux也開始向企業級伺服器市場發力。
以Red Hat系列版本為代表的Linux發行版現在主要面向企業級Linux的伺服器市場,重點開發Linux的企業版本,其他的(例如國產Redflag、中標麒麟Linux等)都重點投入在了Linux伺服器市場。Linux兩大發布廠商現在都走了Linux伺服器市場的路線,可見Linux作為企業級伺服器有著巨大的發展前途。據權威部門統計,Linux在伺服器市場的佔有率每年都在持續上升。
其實很多Linux的應用都是針對Linux伺服器的,本書的講述也是主要針對Linux在伺服器下的各種應用展開的。
2.2 初學者入門首選——Centos系列
在瞭解了Linux幾個主要發行版本後,我們就找到了為何選擇CentOS作為初學者入門學習的理由了。
CentOS現在擁有龐大的網路使用者群體,網路Linux資源基本80%都是基於CentOS發行版的,如果在學習過程中遇到任何問題,在網路中可以較容易地搜尋到解決方案。
CentOS系列版本可以輕鬆獲得。可以從CentOS官網或者163開源、sohu開源、阿里雲開源站下載CentOS各個版本的安裝介質,如果是第一次接觸Linux,那麼建議先安裝Fedora Core。Fedora Core的安裝簡單,對硬體支援很好,介面也很華麗,同時也可以體驗Linux的最新功能。如果對Linux有一定的瞭解,需要深入學習,建議使用CentOS發行版系統。
CentOS應用範圍廣,具有典型性和代表性,現在基本所有的網際網路公司後臺伺服器都採用CentOS作為作業系統,可以說學會了CentOS,不但能迅速融入企業的工作環境,還能觸類旁通,其它類似的Linux發行版也能很快掌握。同時,現在周圍學習Linux的使用者一般也都是以CentOS為主的,這樣交流方便,學習中出現問題,更容易得到解決。最主要的是CentOS的安裝和使用上也是最簡單的,因此基本上不會在“裝系統”上浪費過多時間。
2.3 桌面平臺首選——Ubuntu Linux
說到Linux桌面市場,Ubuntu Linux幾乎佔據了桌面Linux的半壁江山,Ubuntu Linux主打Linux桌面之最,介面美觀,簡潔而不失華麗,如果想在Linux下進行娛樂休閒,Ubuntu Linux絕對是首選。
Ubuntu的安裝非常人性化,只需按照提示一步一步進行。Ubuntu被譽為對硬體支援最好最全面的Linux發行版之一,許多在其他發行版上無法使用的,或者在預設配置時無法使用的硬體,在Ubuntu上都能輕鬆安裝使用。因此使用者可以像安裝Windows一樣輕鬆地安裝Ubuntu,盡情體驗Ubuntu Linux帶來的樂趣。
2.4 企業級應用首選——RHEL/Centos系列
企業級的應用追求的是可靠性和穩定性,這就要求構建企業級應用的系統平臺具有高可靠性和高穩定性。企業級Linux的發行版本就是解決的這個問題。
RHEL與Centos兩個Linux發現版本,並沒有太大差別,所不同的是RHEL屬於商業Linux發行版本,如果要使用RHEL版本,則需要購買商業授權和諮詢服務,Red Hat提供系統的技術支援並提供系統的免費升級。目前Red Hat官網已經不再提供可免費下載的光碟介質,如果需要試用,可透過官網下載有試用時間的評估版Linux。而CentOS屬於非商業發行版,可以從網上免費下載CentOS各個版本的安裝介質,但CentOS並不提供商業支援,當然使用者也不用負上任何商業責任。
那麼,到底是選擇CentOS還是RHEL呢,這取決於你所在公司是否擁有相應的技術力量,如果是單純的業務型企業,那麼建議選購RHEL發行版併購買相應服務,這樣可以節省企業的IT管理費用,並可得到專業的技術支援服務。相反,如果企業技術力量比較強大,並且有多年Linux使用經驗的話,那麼CentOS發行版將是最好的選擇。
三、養成良好的Linux操作習慣
開始Linux的學習之後,請不要用Windows的工作方式來思考問題,因為它們之間確實有很大的不同,比如它們之間的記憶體管理機制、程式執行機制等都有很大不同,因此拋開Windows的那種思維,用全新的理念嘗試去挖掘Linux身上特有的潛質,對初學者是至關重要的。
3.1 一定要習慣命令列方式
Linux是由命令列組成的作業系統,精髓在命令列,無論圖形介面發展到什麼水平,命令列方式的操作永遠是不會變的。Linux命令有許多強大的功能:從簡單的磁碟操作、檔案存取,到進行復雜的多媒體影像和流媒體檔案的製作,都離不開命令列。雖然Linux也有桌面系統,但是X-window也只是執行在命令列模式下的一個應用程式。
因此,可以說命令是學習Linux系統的基礎,在很大程度上學習Linux就是學習命令,很多Linux高手其實都是玩兒命令很熟練的人。
也許對於剛剛從Windows系統進入Linux學習的初學者來說,立刻進入枯燥的命令學習實在太難,但是一旦學會就愛不釋手。因為它的功能實在太強大了。
3.2 理論結合實踐
有很多初學者都會遇到這麼一個問題,自己對系統的每個命令都很熟悉,但是在系統出現故障的時候,就無從下手了,甚至不知道在什麼時候用什麼命令去檢查系統,這是很多Linux新手最無奈的事情了。說到底,就是學習的理論知識沒有很好地與系統實際操作相結合。
很多Linux知識,例如每個命令的引數含義,在書本上說得很清楚,看起來也很容易理解,但是一旦組合起來使用,卻並不那麼容易,沒有多次的動手練習,其中的技巧是無法完全掌握的。
人類大腦不像計算機的硬碟,除非硬碟壞掉或者硬碟被格式化,否則儲存的資料將永遠記憶在硬碟中,而且時刻可以呼叫。而在人類記憶的曲線中,必須要不斷地重複練習才會將一件事情記得比較牢。學習Linux也一樣,如果無法堅持學習的話,就會學了後面的,忘記了前面的。還有些Linux初學者也學了很多Linux知識,但是由於長期不用,導致學過的東西在很短的時間內又忘記了,久而久之,失去了學習的信心。
可見,要培養自己的實戰技能,只有勤於動手,肯於實踐,這也是學好Linux的根本。
3.3 學會使用Linux聯機幫助
各個Linux的發行版本的技術支援時間都較短,這對於Linux初學者來說往往是不夠的,其實當安裝了完整的Linux系統後其中已經包含了一個強大的幫助,只是可能你還沒有發現它,或者還沒有掌握使用它的技巧。例如,對於tar命令的使用不是很熟悉,那麼只要在命令列輸入“man tar”,就會得到tar的詳細說明和用法。
主流的Linux發行版都自帶了非常詳細的幫助文件,包括使用說明和FAQ,從系統的安裝到系統的維護,再到系統安全,針對不同層次使用者的詳盡文件。仔細閱讀文件後,60%的問題都可在這裡得到解決。
3.4 學會獨立思考問題,獨立解決問題
遇到問題,首先想到的應該是如何自己去解決這個問題,解決方式有很多,比如看書查資料、網路搜尋引擎搜尋和瀏覽技術論壇等,透過這幾種方式,90%的問題都能得到解決
獨立思考並解決問題,不但鍛鍊了自己獨立解決問題的能力,在技術上也能得到快速提高。如果透過以上方式實在解決不了的話,可以向人詢問,得到答案後要思考為何這麼做,然後做筆記記錄解決過程。最忌諱的方式是隻要遇到問題,就去問人,雖然這樣可能會很快解決問題,但是長久下去遇到問題就會依賴別人,技術上也不會進步。
3.5 學習專業英語
如果想深入學習Linux,一定要嘗試去看英文文件。因為,技術性的東西寫的最好的,最全面的文件都是英語寫的,最先發布的高新技術也都是用英語寫的。即便是非英語國家的人釋出技術文件,也都首先翻譯成英語在國際學術雜誌和網路上發表。安裝一個新的軟體時先看Readme文件,再看Install文件,然後看FAQ文件,最後才動手安裝,這樣遇到問題就知道原因了。因此,學習一點專業的英語是很有必要的。
四、Linux學習路線圖
Linux運維或管理人才是企業目前急需的技術人才之一,筆者根據10多年Linux相關工作經驗,總結出了一套學習Linux的線路圖,大家可以此線路圖為依據,抓住重點,分清主次,相信一定能達到事半功倍的效果。如果讀者能認真學習完並掌握本線路圖所涉及的技術要點,那麼也就基本掌握了企業對Linux運維或管理人才的基本應用需求。
Linux學習線路圖如下圖所示,本線路圖分為初級、中級和高階三個階段:初級階段主要是對Linux基礎知識以及系統基本應用的介紹,要掌握的內容較多,如果初次接觸Linux,那麼入門還是有一定難度的,Linux注重的是命令操作,因此初級階段以學習基礎命令為主,多看書、多實踐是學好命令的根本;中級階段以伺服器常見配置為主,涉及各種應用伺服器的配置、網路配置、系統安全配置等幾個方面。此階段的難點在於各種伺服器的搭建,對綜合知識要求較高;高階階段的重點是程式語言、叢集架構兩個方面,此階段的發展方向是高階運維工程師或系統架構師,要成為系統架構師,熟練掌握一門程式語言是必須的,而Linux下常見的各種叢集架構、分散式架構也是高階運維工程師必須要掌握的。