別意外,Linux運維我真的不建議你從命令行學起!

語言: CN / TW / HK

最近,由於公司業務擴展,需要招聘很多運維人員,我面試了很多人,幾天面試下來,也沒招到幾個人,但通過這幾天的面試,我發現了一些共同點。

一部分面試者,雖然都有3-5年工作經驗,但技術水平跟剛畢業的學生差不多,基礎的技術問題基本都答不上來;而另一部分面試者,剛好相反,剛畢業沒多久,但理論能力、實踐能力很強,綜合技術能力很高,技術已經能獨當一面。為什麼會產生這兩種截然不同的現象呢?大家看看我跟他們的一些對話實錄,應該能悟出一點緣由。

1、為什麼他可以通過我的面試?

有個面試者,已經工作5年了,我問他:你們的服務器都部署在什麼系統上呢?他回答:部署在windows系統上,我又問他:我們招聘的是Linux方面的運維人員,他回答説:Linux我學過,還報過班,但因為工作中用的不多,所以呢,學了不少,基本也忘差不多了。

為了驗證他的Linux掌握度,我讓他在一個虛擬機上源碼編譯一個nginx,然後再通過rpm包安裝一個mysql庫,這位面試者説,以前都做過,但是時間很長沒做了,都忘記了,我説沒關係,可以開卷考試,可以網上查資料操作。

我給了他半個小時,兩個最簡單的安裝操作,都沒有搞定。

另一個面試者是個剛畢業的小夥子,一開始呢,我不知道他剛畢業,就問他:用Linux多久了,都做過什麼項目?小夥子回答説:用Linux 2年多了,使用Linux做過NAS存儲項目,做過堡壘機、路由器、防火牆;一看這位面試者做過這麼多項目,我當時感覺有點吹牛了,於是,也讓他上機做了一個實戰操作,問題還是上面那個面試者的題目,沒想到不到5分鐘的時間,nginx和mysql的安裝配置都搞定了。

我很好奇,就問這個小夥子,你剛畢業,沒有工作經驗,怎麼動手操作這麼熟練,這個小夥子説了兩個字:興趣。

他説自己對Linux比較感興趣,大二就開始學習了,最初呢,就是從做網站、博客開始學linux的,剛學Linux的時候,沒有Linux環境,自己就去買了幾台雲服務器,然後學着在服務器上安裝部署各種軟件,例如nginx、php、mysql、redis、zabbix等,然後做好了網站,再去申請個域名,弄個證書,這樣一個網站就做起來了。

這個小夥子滔滔不絕的説了自己做網站的樂趣,我當時在想,很多學Linux的人都覺得學習的時候沒有練手機會、沒有項目可做,那這個同學説的做網站,做博客,不就是一個練手的項目嗎?

做博客是為了記錄、彙總自己學習的知識,可沒想到,做博客的過程就是一個學Linux的過程。

説到學習,相信每個人都努力過,但大多數人因為一些客觀原因(沒項目環境,沒時間),不但浪費了錢財,也浪費了不少時間。

我在運維這行已經有10多年了,今天呢,我將自己多年來學習Linux的心得與感受與大家一起分享下,希望能給愛好Linux的朋友們或者Linux的同行們一點意見和建議,一點經驗心得與大家共勉!

2、動起來!興趣是最好的老師

首先,學習一種技術最好的方法就是練習,練習,練習。這句話説起來容易,但做起來,確實難,那麼堅持下來的祕訣只有兩個字:興趣。

興趣是一件讓我們幹起來由衷的高興的事情。學Linux並不需要你具有超人的能力,更不需要你具備高學歷,你只需要按照自己的意願動手去做,做出點什麼東西。

做什麼東西並不重要,重要的是你找到東西動手去做。我所認識的那些優秀的運維同行,他們都有各自不同的學習"動機"。有些人喜歡網絡,所以,他們將Linux做成一個路由器或者防火牆;有些人喜歡做網站,他們就將自己的Linux服務器變成了一個web服務器;有些人喜歡看美劇,他們就將自己的Linux服務器做成了一個視頻點播系統。

看到了吧,Linux能幹的事情很多,只要你有興趣,任何興趣點都可以作為一個獨立的項目,讓你練手。讓所有這些“優秀運維人”統一起來的唯一因素就是:他們全因為生活中的某些興趣而為Linux着迷,繼而花大量的時間學Linux,做大量的、大量的用於練習的項目。

3、Linux化境,從博客開始練手

很多學Linux的新手,不知道從哪裏入手,學了很多乏味、無聊的知識,不知道用在什麼地方,那麼現在,我給你一個誰都可以練手的項目,就是從做自己的第一個博客開始。

做一個博客,首先,需要你有一台Linux服務器,如果你沒有服務器,掏個幾十塊錢在阿里雲或者華為雲等,購買一台學習機,要學習,這點投入還是必要的。然後就是在服務器上部署nginx、mysql、php、jdk等基礎軟件,這是運行一個網站的基礎環境。最後是博客程序,這個最簡單,網上免費到到處都是,不需要自己去開發,例如,你喜歡php的話,可以選用wordpress,這是最流行的博客系統,如果你對java語言感興趣,那麼可以選擇halo,這是java語言最流行的博客系統。

有了博客程序,有了網站運行環境,博客基本就搭建起來了,但是要讓自己的博客能夠放到互聯網上讓每個人看到,還需要有個公網的IP地址、一個博客域名,如果要保證博客安全,還需要申請一個ssl證書。

這裏需要的公網IP、域名、證書,都可以在公有云平台獲取,例如阿里雲、騰訊雲、華為雲等。

現在博客已經可以通過域名訪問了,但是,你可能還需要了解自己的博客有多少人看了,自己的服務器運行是否正常,所以,你還需要部署一個監控系統,來時刻了解你的服務器、你的網站的運行狀態,要部署監控系統,推薦zabbix,部署簡單,功能強大。

如果你的博客分享的文章很好,那麼可能變得非常流行,訪問的人也會越來越多,此時,單台服務器可能沒法滿足用户的訪問請求,那麼還需要給你的網站部署負載均衡,將訪問流量分擔到多台服務器上去。這個時候,你需要用到負載均衡集羣技術,例如LVS、haproxy、keepalived等。

看似一個簡單的網站,要真正的穩定、高效運行起來,一點都不簡單,那麼,做一個博客都涉及到運維中的哪些技術呢,我把上面做網站過程應用到的技術做成了一個技術圖譜,如下圖所示:

看完這個技術圖譜,你已經不知不覺中,學到了Linux運維將近80%的知識點。也就是説,如果你能搭建並維護好自己的一個博客系統,那麼你已經掌握了運維80%的知識了,而在實際的企業運維環境中,所做的工作,也基本就是上面這張圖中的內容。

學習是枯燥的,一味的看書、看視頻效果並不好,在學習過程中,通過一些有趣、好玩的項目進行練手,學習可以達到事半功倍的效果。

4、最強Linux學習修煉圖譜

最後呢,再給新手同學們分享下學習Linux的知識圖譜,很多小白其實對Linux並不瞭解,只知道它是個開源操作系統,有一個內核,僅此而已,那麼,要學linux,是不是隻學Linux這個系統本身就行了呢?當然不是!

我們説,Linux只是一個底層系統而已,在這個系統之上運行的各種應用程序,組成了Linux的生態鏈,這些都是需要我們學習的。從整體是來説,學習Linux有兩個方向,分別是運維和開發,方向不同,學習的內容也不同。下圖是Linux的兩個學習方向:

從上圖中可以看出,運維方向又分為6個方向:系統運維,自動化運維、數據庫運維,大數據運維,網絡運維,雲計算運維等,但學習的知識點基本相同,只是偏向性不同而已。

那麼,Linux運維方向,都要學習哪些知識點?請看下圖:

最後,再説下開發方向,開發主要有兩個方向:應用開發和底層開發,這個方向只需要懂幾門語言,根據開發需求文檔,基本就可以工作了,他不需要有太多工作經驗,雖然入門簡單,但是,開發方向屬於吃青春飯崗位,主要拼的就是體力,大家可能聽説,國內大廠公司都勸退35歲以上的員工,這裏勸退的其實就是幹開發的。

所以,大家要從事Linux相關的工作,我的建議是,從事Linux運維行業,運維行業拼的是經驗,年紀越大,你的經驗會越多,根本不存在35歲淘汰的説法,我在這行也從來沒有感受到35歲的危機。但,這句話是有前提的,就是你要在運維這個行業有持續學習的能力,如果你35歲了,還是25歲的技術能力,那當然也會被淘汰。

説了這麼多,其實我的目的是想告訴大家,如果你想學習Linux,你需要動手去做東西!現在就去。不要找任何藉口。

做東西是最好的學習方法。

從頭到尾讀一遍技術書籍是一件很無聊的事,讀到一半你可能就讀不下去了。但是,如果你要做一個項目的話,你在做項目的過程中就會知道你該學習哪些知識,這是認識和掌握知識更有效的途徑。

對於渴望提升技術水平的運維人和想進入運維行業的技術愛好者,51CTO官方攜手16年一線Linux運維大牛高俊峯(南非螞蟻),深度結合國內一線互聯網公司的“高級運維工程師”用人需求推出這套課程:《Linux運維8天實戰營》。

本課程側重實戰+實用,力在讓學員通過學習高頻熱門的Linux運維工具技術,在實操演練和技術乾貨中瞭解運維技術圖譜和職業發展路徑,獲得一份清晰的運維職業生涯規劃。