LNMP(Linux + Nginx + MySQL + PHP)是高併發 Web 服務的主流架構。Nginx 以事件驅動、非阻塞 I/O 模型著稱,靜態資源處理與反向代理性能遠超 Apache。本文記錄 LNMP 核心組件源碼編譯安裝全流程。
| 維度 | Apache (Prefork/Worker) | Nginx (Event-driven) |
|---|---|---|
| 處理模型 | 進程/執行緒阻塞 | 單進程多執行緒 + epoll 事件通知 |
| 記憶體佔用 | 高(每連接獨佔進程記憶體) | 低(共享記憶體,少量進程) |
| 併發能力 | ~1,000 並發連接 | ~50,000+ 並發連接 |
| 穩定性 | 極高(進程隔離) | 較低(進程崩潰影響所有執行緒) |
| 適用場景 | 動態內容為主、穩定性優先 | 高併發、靜態資源、反向代理 |
tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/src
cd /usr/local/src/libevent-2.0.16-stable
./configure --prefix=/usr/local/libevent
make && make install
# 配置動態連結庫路徑
echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
ldconfig -v
# 連結頭文件
ln -s /usr/local/libevent/include /usr/include/libevent

# 安裝 pcre-devel (含頭文件與靜態庫)
rpm -ivh pcre-6.6-2.el5_1.7.i386.rpm
rpm -ivh pcre-devel-6.6-2.el5_1.7.i386.rpm

cd /usr/local/src
tar -zxvf nginx-1.0.11.tar.gz
cd nginx-1.0.11
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-pcre=/usr/local/src/pcre-6.6 \
--with-libevent=/usr/local/libevent
make && make install
mysql-5.5.15-linux2.6-i686.tar.gz 部署至 /usr/local/mysql--enable-fpm 啟用 PHP-FPM,並指定 --with-mysql=/usr/local/mysqlfastcgi_pass 127.0.0.1:9000 轉發 PHP 請求至 PHP-FPMLNMP 架構特別適合高併發、靜態資源豐富的 Web 應用,是現代雲原生部署的首選組合。