當前位置: 妍妍網 > 碼農

伺服器為什麽大多用 Linux 而不是 Windows ?

2024-05-22碼農

戳下方名片 ,關註並 星標

回復「 1024 」獲取 2TB 學習資源!

👉 體系化學習:

特色專欄

/ /

/ /

/ /

/ /

/ /

大家好,我是民工哥!

前幾天在知乎看到一個話題很有意思,且很有討論意義。

伺服器為什麽大多用 Linux 」,除了 開源 好用 等原因,回答也代表了各種不同人需求和看法,摘取一些分享給大家,也歡迎留言討論。

來自知乎好友「熊大你又騙俺」的回答

首先在20年前,windows server+iis+asp+access 的方案,還是流行過一段時間的。

簡單易用,非常適合一些內容釋出頻率不高的小企業網站。

國內有個熱門的論壇就是用asp+access做的,叫「動網論壇」,安裝簡便。

我記得好像連ODBC都不用配,直接就能存取了。

後續好像還是這個叫「動網先鋒」的公司,又搞出了使用 asp.net 的文章系統,叫」動網新聞」和將原始碼封裝成 DLL 防止剽竊的「動易」。

當年許多國內虛擬主機會在配置裏單獨強調」支持動易元件」。而 ASP.NET 的套用成本較高,不如 PHP 受歡迎,PHPWIND 因使用 zend 而快速崛起。

於是乎,那幾年出現了一個非常有意思的局面就是:

買 Windows 主機要帶」動易元件「的,買 Linux 主機要帶 zend 的。

而有段時間,出現了一個非常好笑的現象。

由於當時都是買虛擬主機,根本不能修改伺服器的配置參數。尤其是windows server的虛擬主機。

當時可沒有什麽web.config來給你修改。

而許內送流量備援容錯機制機商,非常不負責。許多就是不知道在哪個IDC那裏租了台伺服器,也不弄其他的配額啥的,就把硬碟劃分成N份,接著開賣。

最多在合約裏強調一句:」不允許跑【江湖】遊戲之類過於占用資源的程式「。

碰上這種主機商,MIME型別啥是不管的。

而且,這類虛擬主機,就提供一層根目錄。web和FTP使用的是同一個根目錄。使用者想改,還改不了。

再加上當時使用ASP的,新手居多,經驗較少。

就會出現:web目錄裏放著index.asp,index.asp的旁邊,放著data.mdb。

結果就一目了然了,客戶端存取「http://xxxx.xxx/data.mdb」,就能把資料庫下載下來了。

接著開啟data.mdb,轉到user表

哎嗨,密碼是明文的呦!

後來,新手使用asp第一課:如果虛擬主機沒有上一級目錄的許可權,那就把data.mdb改副檔名,變成data.asp!!!!

而過了一兩年之後,國外的linux虛擬主機,基本上都更新換代支持ZEND了。

而WINDOWS主機? 給人的印象就是 :ASP效率低下,不安全。MDB容易炸(我真炸過,修復之後近期數據都丟了)。

來自知乎好友「Sental Cristar」的回答

這個事, IIS (微軟的Web Server)至少要負一大半責任。

首先,大家不要去按照現在 Linux 情況跟 Windows比。

很多東西在發展過程中就是一種生態強弱的比較。在那個關鍵的時間點,你的生態強,大家都用你,那麽你就統治了行業。

然後回頭再看,當時很重要的那個業務或者特性,後面已經不存在了。但統治地位建立了,就很難逆轉了。

在大概2000年的時候,Windows的WebServer其實還是有一定優勢的。

內建FTP功能。

ASP動態網頁不需要額外部署軟體。(當時ASP還是挺好用的一種開發語言)有圖形界面來做配置,適合小白管理員。

但很快, Windows 太封閉的問題 ,就開始有很大影響了。

IIS 在 Apache+Nginx+Lighttpd 面前,被打得毫無還手之力。首先是對php、ruby等越來越多的開發語言,支持太差。

IIS過度繫結 asp.net,其他開發語言在上邊部署經常出現各種各樣的幺蛾子。2005年前後那會,正是各種開發語言井噴的時間,大家對 Apache 的相容性,都要好於對IIS的相容性。IIS搞那一大堆許可權、執行生命周期啥的,讓很多語言的runtime難以適從。

其次是, IIS的效能被nginx和lighttpd吊打了

這兩個基於poll和epoll的計畫,因為計畫特別輕量,所以效能上往往能夠拿出IIS幾倍的並行能力來。

加上IIS把自己的配置搞得太復雜、太難以偵錯了,導致很多使用者根本不會做效能最佳化。

這兩個原因,讓Web Server業務基本就被 Linux 搶走了。

來自知乎好友「Kero」的回答

前一陣開帕魯服,教程都是 winserver 的,遂在租的雲伺服器裝win server,結果帕魯的伺服端比較難繃,還需要vc runtime和dx runtime,網上找半天安裝包都沒合適的

最後覺得好麻煩,換成了Ubuntu,apt install裝好steamcmd和伺服端,再執行server.sh就行了。。。

說到jdk忘記一個重要原因,能跑win server是因為為了解決帕魯服記憶體泄露選了4C8G的配置。

而之前開用來4-5個人玩的MC服普遍都是2C2G/2C4G,2G跑Win屬於幾乎不可能,而之前開用來4-5個人玩的MC服普遍都是2C2G/2C4G,2G跑Win屬於幾乎不可能,4G就算能跑但要被ram系統吃掉一大部份未免太虧了,這種輕量場景更適用Linux。

來自知乎好友「hyu jj」的回答

Windows 按 CPU 核心 收費 ,一台伺服器正版授權要10萬元左右,Linux 免費

來自知乎好友「Sven」的回答

回答的時候選擇換一個方向:為什麽不用 Linux?

作為一個專業的基礎設施開發人員和半專業的運維,我看到的是 Linux 相比於 Windows 的一系列優勢:

生態 。這個不用說了,生態是決定技術棧發展的核心:大家都用,自然就受歡迎。微軟在伺服器端生態上起步晚了,當.net core出現的時候java golang node已經差不多在伺服器端三分天下了。

輕量 。這裏說的輕量不是一般愛好者眼中ubuntu或者centos那種的輕量,而是指諸如alpine這樣的輕量級Linux,這意味著可以用極小的空間來完成容器化的工作,使得運維部署變得更加靈活高效。

容器 。上面提到了容器,實際上容器本身也是 Linux 的一個巨大優勢,windows和osx因為諸多限制使得容器化始終無法從最底層直接起步,而當下的伺服器端架構/運維上,容器化是一個無法規避的需求,因此能夠完美支持容器化的 Linux 就成了更好的選擇。

來自知乎好友「水雷」的回答

補充一個當時微軟企業自身的問題: 微軟和開源的對立

早期的時候,比爾蓋茲就有一封特別有名的信:致愛好者的公開信 。信裏面他表達了業余愛好者使用盜版的憎恨。同時有一句

有誰會在沒有任何報酬的情況下來做這些專業的工作?什麽樣的愛好者可以為他的產品投入三人年(man-year)的開發時間,並且發現所有的錯誤、編寫文件以及無償釋出這個產品?

微軟主要營收靠的 Windows 和 Office。這部份業務主要就是開發作業系統/軟體賣給使用者,收取授權和維護費用。在99年達到了第一次巔峰。當時世界上市值最高的公司。

上面提到的業余愛好者,很大一部份是高校和學術界。這部份人接觸電腦很早,同時也有使用電腦工作的需求。在開源的歷史上,你可以看到很多高校的名字。

在第一階段較量的時候,微軟無疑是勝利者,聚集了一大批有實力的的程式設計師,高效的開發(畢竟就他一家)了個人桌面電腦所需要的基本作業系統、軟體。並且賣到了全世界。

但是到了 Linux,其實已經是第二階段了。這裏由於微軟自己上一個階段的成功經驗,整個微軟都會認為給軟體付費是天經地義的。你用了我的程式碼,就要掏錢。

但是開源發展壯大了。這種最初只是分享一下自己的程式,借助互聯網快速傳播,形成了新的生態乃至產業。

面對新的開源模式,當時微軟和社群都是互相敵視的。畢竟這是根本理念的不同。

後來的事情我們都清楚了,微軟現在也擁抱了開源。

來自知乎好友「沒有人」的回答

感覺太多人犯了一個錯誤,即為結果找原因。

如果你盯著張學良的高壽去學他吸煙喝酒玩女人,犯的就是這種錯誤。

系統發展的過程中,馬太效應是存在的,所以這個問題嚴格來說應該被界定清楚,是"現在的伺服器為什麽用Linux"還是"為什麽現在的伺服器用Linux(為什麽歷史選擇了Linux)。

前者的答案很明顯,也很多人說了,方案成熟,工具多,維護方便,等等等等。

後者的答案其實很多人也沒說錯, 就是為了省錢 ,但對手不是windows,而是unix。linux 91年才被寫出來,還只是個內核,但是它上面跑的軟體等全與unix相容,操作命令也是一樣的,可謂無縫轉換,又不收費,用的人就多。

windows在伺服器領域當年面對的困難與今天 Linux 在桌面類似。可以作為伺服器的nt 93年才出來,比較流行的版本已經是2000了,這個時候大家關註重點在免費的Linux上,生態已經有了。打個比方,你學了rh,畢業就能做運維,你學windows,學完了上哪找win伺服器給你維護?

連結:zhihu.com/question/419913304/answer/3344495019

公眾號讀者專屬技術群

構建高品質的技術交流社群,歡迎從事後端開發、運維技術進群( 備註崗位,已在技術交流群的請勿重復添加微信好友 )。主要以技術交流、內推、行業探討為主,請文明發言。 廣告人士勿入,切勿輕信私聊,防止被騙。

掃碼加我好友,拉你進群

PS:因為公眾號平台更改了推播規則,如果不想錯過內容,記得讀完點一下 在看 ,加個 星標 ,這樣每次新文章推播才會第一時間出現在你的訂閱列表裏。 在看 支持我們吧!