5.3 Apache Web 伺服器與 LAMP(Linux+Apache+MySQL+PHP)組合:開源技術統治網際網路基礎設施#
Apache:從「補丁中的補丁」到伺服器之王#
1995 年,美國國家超級計算應用中心(NCSA)的 HTTPd 伺服器(與 Mosaic 同源的計畫)因核心開發者離開而陷入停滯,但仍有大量用戶繼續使用並自行寫補丁修正問題。「A patchy server」(一堆補丁的伺服器)的冷笑話成為 Apache 的名字。
1995 年 4 月,自發性組成的 Apache Group 發布 Apache 0.6.2,並確立了後來影響整個開源史的「Apache 模式」:
- 基金會式治理:對核心貢獻者(後來的「committers」)開放投票權;
- 中立的法人基金會(1999 年成立 Apache Software Foundation, ASF),把商業利益與專案治理隔離;
- 「社群重於程式碼」:引進新人、培養 committer,組織的生產力高於個人英雄。
市占統治#
Apache 迅速碾壓 NCSA HTTPd 與商業伺服器,1996–2006 年間在全球 Web 伺服器市占率一直保持在 50–60% 以上(Netcraft 調查數據的教科書級曲線);即使 2000 年代後期被 Nginx 蠶食高並發場景、2010 年代被 Node 與市占重新洗牌,Apache 至今仍是網際網路規模最大的伺服器應用之一。
LAMP:開源的「全套免費方案」#
1998 年前後,德國作者 Michael Kunze 在為《c't》雜誌撰稿時創造了 LAMP 縮寫:Linux + Apache + MySQL + PHP(Perl/Python 亦通)。這個首字母組合的偉大之處在於它把四個各自獨立的專案,串成一套「替代微軟全家桶」的完整叙事。
| 層 | 專案 | 誕生 | 角色 | 後續命運 |
|---|---|---|---|---|
| 作業系統 | Linux | 1991 | 核心平台 | 統治一切伺服器與雲端 |
| Web 伺服器 | Apache | 1995 | 傳輸層 | 被 Nginx 分食,仍長居前列 |
| 資料庫 | MySQL | 1995 | 資料層 | 2008 年被 Sun 買下、2010 年隨 Sun 被 Oracle 買走(引發 MariaDB 分叉) |
| 腳本語言 | PHP(Rasmus Lerdorf, 1995) | 1995 | 動態頁面 | WordPress(2003)使 PHP 稱霸內容網站;Rails/Django 的興起分流了動態網頁需求 |
「dot-com 泡沫廉價堆疊」的勝利#
LAMP 組合在 dot-com 時代成為標準的初創公司技術棧,原因極其經濟學:
- $0 的軟體成本 + $1 的硬體成本:一台 x86 PC + 全部免費開源軟體,可以做出與 Sun/Oracle 小型機等級的 Web 服務;
- 人才充斥:學生、駭客、新創工程師都會 LAMP——不會 Windows Server 的大有人在;
- 可客製:自由修改任何一層以适配業務,免去專有軟體的授權談判。
開源一統基礎設施的三個深層原因#
- 網際網路本質上是開放的:TCP/IP 定義了開放標準,Web 是開放文件,所以「開放工具棧」承載純開放協議最順手;
- 運維的韌性需求:24/7 的服務無法依賴「單一廠商下週會不會修好」,自己擁有全部原始碼成為營運安全網;
- 人才引擎的回饋環:全世界的 CS 學生在放學後就使用 LAMP——他們進入社會後順理成章把開源帶進企業;教育系統成為開源擴散的主動脈(大學的 CS 課程在 1990 年代後期開始大量以 Linux 為教材)。
從基礎設施勝利到全景勝利#
LAMP 的勝利是開源主導資料中心的第一座山頭。隨後的演化:
- 2000 年代末:Nginx、Node.js、Memcached、Redis 加入,LAMP 變成 LNMP、LEMP 等各種組合;
- 2010 年代:NoSQL 運動(MongoDB、Cassandra)、容器(Docker、JVM 生态的 Kafka/Hadoop)根本重寫資料與運算層;
- 2013 年以後:Docker/Kubernetes 將「LAMP 的四件套」化為「雲原生叢集的一個容器意象」——基礎設施徹底開源化;
- 2020 年代:全球幾乎所有大型資料中心運行的都是開源作業系統、開源資料庫與開源中間件——1990 年代的「對抗性選項」成為 2020 年代的「唯一選項」。
小結#
Apache 與 LAMP 證明了「開源不是一種思想,而是一種有生產力的工程方法」。這場勝利逼出了兩個新問題——如何把它變成生意(第 6 章:紅帽與 MySQL),以及帝國的反擊如何演變成全面擁抱(第 8 章)。