ASP.NET Core 最迷人之處就在於可以跨出 Windows 象牙塔,在伺服器的選擇上海闊天空,藉著改版部落格我已踏出第一步,接著我想真實挑戰跨平台這件事。

依據 W3Techs 最新調查,統計全世界一千萬個網站(其調查方法可參考這篇),其使用作業系統比例:Unix 佔 68.1%,Windows 佔 31.9%,macOS 小於 0.1% (2018/9 資料)。而 Unix 中,Linux 佔 55.8%、BSD 佔 0.9%、Darwin、HP-UX、Solaris、Minix 都小於 0.1%,另外有 43.3% 無法判定版本(2018/9 資料)。

差不多你想得到可以拿來架網站的作業系統,.NET Core 都包了。但為什麼要在 Linux 上跑 ASP.NET Core?理由在先前ASP.NET Core 值得學嗎? 中提過,光省成本跟不必跟老闆客戶戰作業系統這點就值了。

在 Windows IIS 跑 ASP/ASP.NET 累積近 20 年經驗,既然 .NET Core 開創了新局,ASP.NET 老兵技能也該升級,現在就來認真研究怎麼在 Linux 上跑 ASP.NET Core 吧!

我遇到的第一個困難抉擇是 - Linux 版本多如牛毛,該選哪一個? 依據 .NET Core 指南,.NET Core 目前支援 Windows / macOS / Linux,而 .NET Core 2.1 支援的 Linux 版本包含:

  • Red Hat Enterprise Linux 7、6
  • CentOS 7
  • Oracle Linux 7
  • Fedora 27
  • Debian 9、8.7 或更新版本
  • Ubuntu 18.04、17.10、16.04、14.04
  • Linux Mint 18、17
  • openSUSE 42.3 或更新版本
  • SUSE Enterprise Linux (SLES) 12 Service Pack 2 或更新版本
  • Alpine Linux 3.7 或更新版本

光清單就看到眼花,而我對 Linux 了解有限,爬文吧~ 綜合我找到的參考資料,心得如下:

  1. 參考 W3Techs 針對 Linux 版本的細部統計,Ubuntu 佔 37.1%、Debian 佔 23.5%、CentOS 佔 18.1%、Gentoo 2.5%、Red Hat 2.4%、Fedora 0.6%、SuSE 0.4%,版本未知及 0.1% 以下的跳過。依照「拿香跟著拜原則」,我只將 Ubuntu、Debian 及 CentOS 列為侯選人,後面只對這三者進行比較。
  2. 網路上對三套作業系統的普遍認知如下:
  • Ubuntu
    簡單易上手,更新頻率高(硬體支援廣),使用者社群龐大,學習資源眾多,是初學者的最愛。
  • Debian
    穩定度高,但操作介面較不友善,適合不怕繁瑣指令的管理者。
  • CentOS
    改造自 Red Hat Enterprise Linux,標榜免費,100% 收錄自由軟體,享有「萬年不掛伺服器」的美稱。 參考:linux主流發行版本介紹、比較與推薦
  1. 我推測 Ubuntu 在三套間享有最高市佔源自它是新手首選,上手門檻低,接受度最高。然而作為伺服器,效能、穩定性應該優先於學習曲線。另一方面,Ubuntu 以其友善的桌面環境著稱,跟易學好上手一樣,在伺服器評比的權重不比效能、穩定、安全,比較時較吃虧。反過來,Ubuntu 的特色也來自於取捨,友善桌面耗用較多資源、更新頻率高會犠牲穩定性,基於這些考量,Ubuntu 在首輪被我淘汰。
  2. 留下 Degian 跟 CentOS 車拼,對岸相關的中文討論較多,歸納心得如下:
  • CentOS 骨子是 RedHat,發展策略保守謹慎,一般視為具備企業級產品等級的品質,故受到較多企業青睞
  • CentOS 的文件(英文)較 Debian 完整
  • 有不少人是公司用 CentOS,自己玩 Debian
  • Debian 更新頻率較 CentOS 快
  • Debian 部分套件有更新來源不穩定的問題
  • 更新工具 CentOS yum 不如 Debian apt 簡便
  • Debian 的體積比 CentOS 又更小一些(128MB RAM 就能跑) 參考:
  1. 为什么国内互联网公司喜欢用Centos而不是Ubuntu?
  2. CentOS、Ubuntu、Debian三个linux比较异同

綜合以上,最後我選了 CentOS,最主要理由還是在於穩定性。就一個需要長期運轉的伺服器,穩定性是我最優先的考慮,CentOS 是公認更穩定的選擇。另外我還考量到未來如要在工作上使用 Linux,預期企業採用 CentOS 的機率高於 Debian/Ubuntu,換言之,CentOS 管理技能比容易拿來換錢 XD。

最後,Azure 對 Debian 補上最後一刀,Azure 虛擬機器的 Linux 選項列表只有 CentOS,沒有 Debian! 亳無懸念,就決定是你了,CentOS!
【2018-09-26 更新】在 Azure 上可從 Marketplace 建立 Debian VM,感謝網友 Tseng Alvin 補充。

我打算拿剛寫好的新版部落格練兵,試著把它搬進 CentOS 運行,尤其想挑戰上圖 Azure 最陽春的雲端主機:單核心 1GB RAM 虛擬機(主機費用每月不到 400 塊),究竟會不會成功呢?敬請期待。

Planning to run ASP.NET Core on Linux, I compared major web server choice of Linux distribution: Ubuntu, Debian and CentOS.


Comments

# by K.C Hsieh

黑大您好 上述第 4 點, Debian 是否誤寫為 Degian ?

# by 祐民

我自己使用過Ubuntu Server 18.04版,其實如果說要作為伺服器使用的話,這也是一個不錯的版本,純指令介面,系統本身容量也沒有Desktop版那麼肥大,供參考:D

# by Jeffrey

to K.C. Hsieh, 是,我得了一種不打錯字就寫不下去的病 Orz 謝謝指正 to 祐民,我有用 Ubuntu 跑過 24h 服務,長年不重開竟沒半點問題,穩定度很讓我滿意。選擇 CentOS 也屬市場考量(企業愛用,技能好賣錢),心態多少帶點娶妻但求少奮鬥十年的市儈。XD

# by 精神

好奇 ASP.NET on Linux 真的會有比在 Windows 上面有優勢嗎?? 一整套 Windows 太香了~~~離不開他

# by Jeffrey

to 精神,對一般開發者、使用者,Windows 肯定比 Linux 順手好用,但企業主要盤算幾十到數百台伺服器的成本(當然,若搬上雲端就是另一回事了),跟我們的考量點不完全相同。

Post a comment