LAMP (Linux + Apache + MySQL + PHP) 是經典 Web 架構。本文記錄從源碼編譯安裝各組件、配置關聯、部署 phpwind 的完整教程(學習/教學用途,生產建議用包管理器/容器)。
# 1. 安裝開發工具組 (GCC, make, autoconf 等)
yum groupinstall -y "Development Tools"
yum install -y "Development Libraries"
# 2. 安裝 Apache 依賴庫 (APR, APR-util, PCRE)
cd /usr/src
wget https://apache.mirrors.pair.com/apr/apr-1.5.2.tar.gz
wget https://apache.mirrors.pair.com/apr/apr-util-1.5.4.tar.gz
wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz
# 編譯安裝 APR
tar zxvf apr-1.5.2.tar.gz && cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install
# 編譯安裝 APR-util (依賴 APR)
cd ../apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
# 編譯安裝 PCRE
cd ../pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install
cd /usr/src
wget https://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz
tar zxvf httpd-2.4.25.tar.gz
cd httpd-2.4.25
./configure \
--prefix=/usr/local/apache2 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre \
--enable-so \
--enable-rewrite \
--enable-ssl \
--enable-mods-shared=most \
--with-mpm=prefork # PHP 非線程安全模式需用 prefork
make -j$(nproc) && make install
# 參考上文 LNMP 教程 MySQL 部分,關鍵差異:
# Apache + PHP 通常用 prefork MPM,PHP 編譯不加 --enable-maintainer-zts
cd /usr/src
wget https://cn2.php.net/distributions/php-5.4.45.tar.gz
tar zxvf php-5.4.45.tar.gz
cd php-5.4.45
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache2/bin/apxs # 關鍵:生成 libphp5.so 給 Apache 載入
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags
make -j$(nproc) && make install
# 1. httpd.conf 載入 PHP 模塊 (make install 通常自動添加)
LoadModule php5_module modules/libphp5.so
# 2. 識別 .php 文件
SetHandler application/x-httpd-php
# 3. 目錄索引
DirectoryIndex index.php index.html
# 4. PHP 配置
cp php.ini-production /usr/local/php/lib/php.ini
# 修改時區、上傳限制、錯誤顯示等
# 5. 重啟 Apache
/usr/local/apache2/bin/apachectl restart
# 解壓到 /usr/local/apache2/htdocs/phpwind
# 設置權限 daemon:daemon (Apache 運行用戶)
# 創建數據庫
# 瀏覽器安裝向導
| 維度 | LAMP (Apache) | LNMP (Nginx) |
|---|---|---|
| PHP 運行模式 | mod_php (嵌入 Apache 進程) | PHP-FPM (獨立進程池) |
| 並發性能 | 中等 (進程模型,內存佔用大) | 高 (事件驅動,內存效率高) |
| 靜態文件處理 | 一般 | 極快 |
| .htaccess 支持 | 原生支持 | 不支持 (需轉換為 nginx.conf) |
| 配置複雜度 | 較高 | 較低 |
| PHP 版本隔離 | 困難 (單模塊) | 容易 (多 FPM 池) |
yum install httpd php php-mysql (RHEL/CentOS) 或 apt install apache2 php libapache2-mod-php php-mysql (Ubuntu/Debian)。event MPM + PHP-FPM (代替 mod_php),獲得更好並發與內存隔離。本文詳細記錄了 LAMP 組件源碼編譯安裝全流程,重點講解了 Apache 依賴庫 (APR/APR-util/PCRE)、PHP `--with-apxs2` 關聯編譯、httpd.conf PHP 模塊載入配置。對於理解傳統 Web 架構原理、排查編譯鏈路問題極有價值。**現代項目請優先選擇 LNMP 或容器化部署,獲得更好性能與運維體驗。**