Linux與網路服務(一)網路服務相關概念通俗解釋(科普向)
- 前言
- 專業名詞及概念的通俗解釋
- 云服務器
- 云/云服務
- 云計算
- 彈性伸縮
- 負載均衡
- 公網IP
- 域名/域名備案
- 埠
- SSH(安全外殼協議)/遠程連接
- CPU架構
- HTTP/HTTPS/WWW服務/Web服務
- LNMP/LAMP環境
- 靜態網頁/動態網頁
- Q&A部分
- 為什么要使用Linux系統做服務器?
- 搭建自己的網站,完整的流程是什么?
- 上述流程全部進行完后,我就可以設計自己的網站了嗎?
前言
??由于Linux系統的自由、安全可靠和強大性能,無論是需要長時間在線的網路服務器,還是本地連接的科學計算用服務器,Linux系統在服務器領域作業系統是絕對的霸主,服務器除了我們最常見的建設網站功能外,還能發揮很多作用,對于剛接觸的朋友,在Linux與網路服務中新概念眾多,一個概念的解釋往往又牽扯到了好幾個概念,晦澀的專業詞匯眾多很容易打擊人進一步了解的欲望,在這篇文章,作者想用自己的理解把這些概念通俗地解釋一下,希望能夠讓初學者初步認識一些Linux與網路服務的相關概念,水平有限,如果有表達不妥之處請大家指出,我會認真糾正,
專業名詞及概念的通俗解釋
云服務器
??云服務器是一個“虛擬”的服務器,和它相對的就是物體服務器,物體服務器例如華為云提供的“裸金屬服務器”,如果購買的話會給你一個真正的服務器主機,而云服務器在云服務提供商(如華為云,騰訊云,阿里云等)購買后,不會給你一個物體的主機,在提供商的控制臺里能看到自己有了一個云服務器資源,可以查看云服務器資訊或者遠程登錄它,綜上所述,什么是云服務器?它是一個服務器,但是是摸不著的,你可以遠程登錄來控制它,對于提供商來說,你的云服務器可能就對應他們的一臺物體主機,或者他們通過軟體在一臺物體主機上分割出多個系統跑著你和別人的云服務器,對于用戶來說這是不可見的,當然它怎么實作對我們使用來說就無所謂了,我們就把購買的云服務器當作真正服務器使用就好,
云/云服務
??最近幾年,“云”這個概念越來越多地被提到,到底什么是云?如果翻閱各種專業文獻,在對“云”有一個大概印象之前,一個接一個的新名詞絕對會看的人眼暈,其實對于應用來說,“云”的概念沒有那么高深莫測,你使用百度網盤存取檔案就是使用了百度云,使用WPS存盤個人檔案就是使用了WPS云,其實你的資料早早就已經“上云”了(個人的資料存在云服務器上就可以稱得上是“上云”了,當然這里是狹義的說法),我的理解是,從實際組成來說,“云”是一群服務器構成的網路,你把一堆服務器連到一起,然后統一提供一個對外面的連接,這就是“云”(一般來說,“云”默認指的是公網上的,可以在整個互聯網上訪問到,自己搭建的自己用叫“私有云”,這個比較模糊,也有不少地方公有私有都稱作“云”的),它是幾臺服務器主機?每臺是什么系統?硬碟多大?對于普通使用者,“云”是怎么實作的你不必知道,百度、網易這些公司已經把“云”——服務器網路搭建好了,你只需要使用“云”的介面就可以(介面上有你的用戶名和密碼,讓每個人使用不同的硬碟空間),你可以給“云”上面放檔案,或者下載檔案,能夠滿足你這么使用就足夠了,
??當然,上面只是“云”的一個應用例子——作為“云盤”,云可以提供不同的網路服務,這些就叫做“云服務”,有的云服務供應商提供的是云服務軟體,比如前面的云盤,有的云服務供應商提供的是虛擬的服務器,比如前面的云服務器,經過這么通俗解釋你應該明白了,只要你搭幾個服務器給別人一個連接的介面,你就把一個“云”搭建好了,你就能自稱云服務供應商,
??從“云”上面衍生出很多概念,說白了并不是新發明——把“云”應用在游戲里就叫“游戲云”(有一堆遠程電腦專門讓用戶連接來玩游戲),應用到工業就叫“工業云”(把一堆連接網路的電腦存盤工業生產的資料,你可以在集控室遠程連接來查看資料),應用到醫療上就叫“醫療云”(一堆連接網路的電腦存盤了患者資料,或者可以遠程傳遞影像和聲音,從而讓醫生可以遠程診療),相信經過這些舉例,你也可以在各行各業用“云”創造新名詞了哈哈,這些新概念乍一看是不是很唬人呢,
云計算
??這個其實也可以算一個引申概念,用“云”來執行計算任務就是云計算,比如人臉識別,本地拍攝的人臉上傳到云服務器上,通過強大的云服務器計算能力非常快速地得到神經網路的計算結果,這樣的引申概念還有很多,其實看名字就知道是干什么的,用“云”提供存盤服務——云硬碟,用“云”提供域名決議——云決議等等,
彈性伸縮
??這個概念其實很好理解,就是說某些資源是動態的/可調整的,云服務器能夠根據設定的策略自動調整云服務器資源,比如彈性帶寬,這個指的是你的帶寬是可以動態調整的,傳統的方式你買了1M的帶寬那固定就是1M,就算你一段時間沒怎么使用帶寬還是按1M計費,彈性帶寬可以實作用多少帶寬計多少使用費,或者你在云服務器隔一段時間跑一個程式,通過彈性伸縮需要大量CPU資源的時候申請,不需要就不申請那么多,你只需要購買這種服務就可以,云服務器提供商自己就實作了彈性伸縮,不需要你動手,
負載均衡
??如果你購買了多個云服務器,通過配置將它們組成了一個服務器群給用戶提供網路服務,如何把服務器要完成的任務(負載)分攤到各個服務器上,大家都干一樣多的活,不會出現一個服務器累死累活的作業其他服務器在看戲的情況,這就是服務器集群需要考慮的負載均衡問題,假如你用多個服務器搭建了一個網站,用戶通過瀏覽器訪問,他肯定是直接輸入域名訪問,不會考慮到你哪一臺服務器處理的訪問任務少點用那臺訪問,所以負載均衡只能也是必須由服務器管理者解決的問題,要實作負載均衡,有硬體和軟體的方式,一些網路服務的軟體自帶了負載均衡的功能,但是當然比不上硬體實作,硬體需要專門配置或者購買執行負載均衡作業的服務器或硬體,
公網IP
??提供網路服務的服務器如果想在整個互聯網上都可以被訪問到,那么就需要一個公網IP,之所以帶了“公網”,就是說在整個互聯網,也就是整個地球上這個IP地址都是唯一的,如何擁有自己的公網IP?最好的辦法還是購買一個云服務器,一般云服務器供應商都會在購買云服務器后給你提供一個固定的公網IP,如果你僅僅想要一個公網IP,這些供應商以及專門的代理商都可以提供,
域名/域名備案
??如果你想用服務器做一個網站,在安裝完必要的服務軟體后,就可以通過輸入你服務器配置好的IP地址來訪問了,但是一串IP地址沒有任何規律,一個網站一個IP地址誰也不想一個一個記住,于是就有了域名,例如www.baidu.com 這樣的名字顯然比一個IP地址好記,很遺憾,對于網路訪問來說,域名并不能夠被直接識別,網路訪問直接識別的只能是IP地址,為此就有一種DNS服務器來專門負責把域名轉換成IP地址,DNS服務器就是專門做決議/映射作業的,它具體是怎么作業的得花大量筆墨深入解釋,這里就不深究了,知道它的作用就可以,總而言之,域名是為了我們人記憶方便誕生的,它對于網路本身沒有益處,需要專門的DNS服務器負責轉換,甚至對于網路安全帶來額外問題,如黑客針對域名進行劫持,導致域名指向別的IP的情況,
??還有一件事,在國內進行域名決議想讓別人通過域名訪問網站,還需要在工信部進行備案,如果僅在云服務器提供商網站上設定了域名決議,你直接點開會提示你這個網站沒有在工信部備案不能訪問,個人網站備案只需要在申請時明確說明這個網站不用來盈利過審還是比較容易的,商業網站就需要額外的不少材料了,當然你可以讓用戶用IP訪問,這個工信部不管,但是誰也懶得記那么一串無意義的數字串不是么,而且通過IP訪問說明你直接暴露了IP,相當于你告訴了陌生人你家的詳細住址,就算你天天鎖門防止一般人偷偷溜進你家,惦記著你的小偷肯定會想辦法撬鎖進去(類比黑客通過各種方式對你的IP發起攻擊),而且雖然域名有額外問題,但也有一些域名才能做到的安全性設定,這個稍后再說,
埠
??提到IP地址,往往還要提到埠,埠可以理解為服務器提供網路服務的介面,用一個不實際的例子解釋,飯店每道菜都有一個不同編號的視窗(不同編號的埠),店家(服務器)給每個食客(網路服務用戶)做好的飯菜通過不同視窗送給食客,有個人到22號視窗點餐(請求服務器的相應服務),店家一看是22號視窗有人點餐,根據國際標準,就知道他要的菜是SSH,把做好的SSH放到22號埠(提供服務)等食客來拿,雖然這個只是個規定,你可以修改這個規定,但這就會帶來很多麻煩,陌生人來到這個餐館,根據國際慣例他在22號視窗點餐了,他想要吃的是SSH這道菜,結果從視窗拿出來的菜是HTTP,錢都付了(花費了流量),給人家送錯了菜(獲取到錯誤的網路服務),誰還想來你這個飯店(網站)?一定要記住,互聯網是給全世界服務的,面向的都是按照國際慣例(常用的網路服務都有對應的埠號)交流的陌生人,你不遵守國際慣例,別人按照慣例設計的軟體都沒辦法在你的網站上使用,
SSH(安全外殼協議)/遠程連接
??遠程協助大家應該都使用過吧,可以遠程操控別的電腦,在Linux系統中,標準的遠程連接方式是通過SSH協議實作的,用到的埠號是22,在windows系統中,遠程桌面協議(RDP)通過3389號埠實作標準的遠程連接,遠程登錄自己的服務器,或者購買云服務器后遠程連接,都是使用這兩個協議和埠進行連接來管理的,
CPU架構
??Linux系統之所以受歡迎,有一方面是因為它比windows支持的CPU架構要豐富,CPU架構詳細講的話又是一大塊內容,作者水平也沒有那么深,某某架構咱就姑且記住它的名字吧,目前常見的CPU架構有32位的x84及64位的x64,還有ARM及64位的ARM64,我們常聽說的Intel和AMD目前在家用電腦上都是x架構的,windows絕大部分也是運行于這個架構,所以你想在ARM架構的芯片上裝個win10應該是不可能的(從最底層的原理上就不支持),ARM架構一般就是純計算使用的,linux可以在該架構上運行(據說windows有服務器版的系統可以運行在ARM架構上,不過對于我們普通用戶來說,windows10比windows server系統要好用得多),
HTTP/HTTPS/WWW服務/Web服務
??HTTP(超文本傳輸協議)是互聯網普遍使用的一種協議,它其實有很多應用,但其中最重要的應用之一就是WWW服務,HTTP設計最初的目的就是用一種約定好的語言撰寫網頁和決議語言生成網頁,在服務器上用遵循HTTP協議的這種語言寫一堆代碼,遵循協議的客戶端瀏覽器從服務器上獲取到代碼后,就自動決議出來在瀏覽器的多少到多少像素內生成一個什么圖片,也就是說,服務器告訴客戶端瀏覽器網頁上每一個圖片每一段文字在什么位置放著,瀏覽器從服務器下載到這些文字圖片后在指定位置生成,就形成了我們看到的網頁,
??HTTP最流行的就是用于Web瀏覽器(我們用的Edge、谷歌、火狐等)與Web服務器(運行著網站服務程式的服務器)的通信,這個應用方式就叫WWW應用或者Web應用(我們瀏覽網頁,輸入網站名時候輸入的www就是WWW服務),
??WWW也被叫做Web,就是我們常說的萬維網,HTTP協議的WWW服務默認使用80埠,加密的WWW服務使用的是更安全的HTTPS(S代表Safe)默認使用443埠,
是不是覺得上面幾個概念互相關聯很繞呢?其實大可不必較真,這幾個概念早就已經混淆了,HTTP服務、WWW服務、Web服務可以都視為一個東西,就是我們用瀏覽器訪問服務器的時候進行網頁瀏覽需要的服務,
LNMP/LAMP環境
??如果想用linux系統提供Web服務,做一個網站,LNMP或者LAMP環境是一個避不開的話題,這個縮寫其實指的是四個東西,L是Linux,就是說你的服務器使用的作業系統是Linux,第二個字母是N指的是Nginx,是A指的是Apache,這兩個都是提供Web服務的軟體,其實還有一些軟體也可以提供Web服務,但是市場份額比這兩個小太多,一般都是用這兩個,M一般指的是MySQL,也有的指的是MariaDB,默認大家都認為是MySQL,這兩個都是資料庫軟體,你的網站要存盤一些文章、圖片、用戶資訊或圖片等一定會用到的軟體,P一般指PHP,也可以指Perl或Python,默認大家都指的是PHP,這個是一種開發語言,也是一個語言環境(安裝了python,你就可以寫python代碼,運行代碼會呼叫python環境,PHP也一樣,你安裝了PHP,就可以寫完PHP代碼后運行,運行代碼會呼叫PHP環境),C語言寫出的程式可能彈出一個視窗或控制臺,用PHP寫的程式可以顯示一個網頁,可以用它來寫動態網頁,后面會詳細說明什么是“動態網頁”,LNMP配置好,系統有了,提供web服務的軟體有了,資料庫有了,網頁語言的運行環境有了,你的網站就可以正式進行設計了,
??LNMP是怎么作業的?請看下圖:

??可以看到,這一套軟體緊密配合,最終呈現出了我們訪問網站時看到的網頁!
靜態網頁/動態網頁
??使用純粹HTML格式的網頁通常稱作靜態網頁,什么是HTML格式?當你用瀏覽器打開任何一個網頁后,右鍵有一個選項“查看網頁源代碼”,這里你看到的源代碼就是HTML格式的,你可以看到其中就規定了多少到多少像素放什么東西,瀏覽器會按照這種格式安排好每一塊網頁內容放置的位置,
??最早期的網站開發就是用靜態網頁方式的,每一個網頁服務器里都真正存放著對應HTML格式的檔案,瀏覽器要讀取baidu這個網頁,那么服務器就把baidu.html這個檔案和相關的圖片視頻提供給它,瀏覽器再進行前面提到的決議,HTML檔案里寫了什么,瀏覽器就顯示什么,所以網頁每一次修改,都需要服務器管理員實實在在地把任何修改的內容寫入HTML檔案,所以靜態網頁要做一個論壇簡直是個災難,每個人都需要有修改HTML的權限不說,發一篇帖子你就要更改源代碼一次,,,靜態網頁就是適合那種界面固定長期不變的網頁,
??動態網頁顧名思義,它是服務器使用相關軟體動態生成的,瀏覽器訪問的每一個網頁,服務器上沒有對應的html檔案,而是使用動態服務的軟體用動態服務軟體使用的編程語言生成網頁,如果涉及到用戶注冊等資料庫操作,動態服務軟體還會呼叫資料庫,
??靜態頁面雖然修改起來麻煩,但在效率上兩者相差巨大,想象一下,靜態頁面的訪問就相當于你來到了一個火鍋店,服務員給你端菜就可以,你自己來涮(服務器只提供資源,客戶端瀏覽器自己決議),而動態頁面相當于你去了一個炒菜館,你點菜以后,服務員要叫后臺廚師花幾分鐘把菜做出來端給你(服務器承擔了一定決議作業),動態頁面額外使用了服務器的計算資源,服務效率會低不少,
Q&A部分
為什么要使用Linux系統做服務器?
??文章的開頭也大概提到了,首先是可靠性,Linux是仿照UNIX系統來設計的,后者據說只要硬體不壞系統就能夠穩定運行,Linux也是有著類似的性能,受到了各大公司的青睞,還有就是成本低,Linux系統是自由軟體(并不等同于免費,但是對于我們的使用來說和免費的沒區別),不用像windows系統那樣買一份正版花一份錢,在安全性上,Linux的用戶管理機制比Windows要復雜得多,可以防止普通用戶對服務器核心內容動手動腳,而且Windows是閉源的,你想下載一個服務器優化插件,一旦它包含病毒你的服務器就完蛋了,而你又看不到插件有沒有病毒,Linux這邊,一般的軟體源代碼都是公開的,只要你懂代碼,它不可能在代碼上做手腳,
搭建自己的網站,完整的流程是什么?
??如果你真正想做一個任何人都能訪問,而不是在某一內網訪問的網站,建議你選擇購買云服務器提供商的云服務器,在購買時都會給你分配一個公網IP,輸入公網IP就可以訪問了,具體環節上,購買云服務器后,遠程登錄它,安裝前面提到的Nginx,PHP和MySQL,到此就可以訪問服務器了,
??但是做網站有一個響當當的域名很重要,這一步流程挺多,你需要購買域名并添加與服務器IP對應的決議,這還不夠,無論你購買的域名有沒有真正決議,就算是一個空域名,按照國家規定也需要實名認證,認證完畢后,想要添加決議進行國內訪問,還需要準備材料報備工信部進行網站備案,備案完成,你就可以用http://你的域名進行網站訪問啦!
??這時你會注意到,瀏覽器地址欄左側會提醒你連接不安全,因為HTTP協議的訪問是不加密的,使用更安全的HTTPS加密訪問的網頁瀏覽器地址欄左側會有一個加鎖的圖示,如何讓自己網站的訪問更安全?在自己服務器上配置HTTPS服務后你會發現訪問網頁仍然提示不安全,因為HTTPS協議需要配合SSL證書,你需要通過云服務器提供商或者其他代理申請SSL證書安裝到服務器上,然后就可以用HTTPS://你的域名來訪問,這里說的就是前面提到的域名才能進行的安全設定之一,申請SSL證書只能針對一個域名進行申請,而無法針對一個IP進行申請使用HTTPS協議!
上述流程全部進行完后,我就可以設計自己的網站了嗎?
??當然,前提是你需要懂PHP編程語言來進行網頁撰寫,哈哈,是不是被驚到了?其實對于普通人來說這也完全不需要,推薦一款軟體Wordpress,安裝它后你可以訪問網頁后臺,然后進行傻瓜式的網站設計!就像你使用Word一樣簡單,不必再花時間學一種編程語言!
??這篇文章和大家一起了解了linux與網路服務相關的一些知識,為以后的搭建網站教程做鋪墊,敬請期待!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243963.html
標籤:其他
上一篇:NAT--網路地址轉換--理論與基礎命令--華為實驗
下一篇:JWT token 實踐問題解決
