在套件管理器尚未普及的年代,手工編譯 Apache、PHP、MySQL 是每位 Linux 運維工程師的必修課。本文記錄的一份 install 腳本,雖針對 Apache 1.3.12 / PHP 4.0.6 / MySQL 3.22.40 這組經典老版本,但其編譯邏輯、模組靜態綁定模式、配置文件修改要點,至今仍具參考價值,能幫助理解現代編譯安裝的底層原理。
tar zxvf $1.tar.gz
tar zxvf $2.tar.gz
tar zxvf $3.tar.gz
mv $1 apache
mv $2 PHP
mv $3 MySQL
將三組源碼統一重命名為無版本號目錄,便於後續路徑引用。
cd MySQL
./configure
make && make install
/usr/local/bin/MySQL_install_db # 初始化系統表
echo "/usr/local/bin/safe_MySQLd &" >> /etc/init.d/rc.local # 開機自啟
/usr/local/bin/safe_MySQLd & # 當前啟動
關鍵點: MySQL 必須先裝好,PHP 的 --with-MySQL=/usr/local 才能找到客戶端庫。
cd ../PHP
./configure --with-MySQL=/usr/local --with-apache=/usr/local/apache --enable-track-vars
make && make install
cp libs/libphp4.a ../apache/src/modules/php4/libPHP4.a
PHP 編譯為靜態庫 libphp4.a,隨後拷貝至 Apache 源碼樹中,準備靜態編譯進 httpd。
cd ../apache
./configure --activate-module=src/modules/php4/libPHP4.a
make && make install
此步將 PHP 模組永久編譯進 httpd 二進制,無需 LoadModule 動態加載。
cd ../PHP
cp php.ini-dist /usr/local/lib/PHP.ini
AddType application/x-httpd-php .php .PHP3 .htm .pHtml .PHP4AddType application/x-httpd-php-source .PHPsDirectoryIndex index.htm index.Html index.php3 index.php default.PHPapt/dnf/yum)或 Docker 容器化部署,僅在極度定製化場景手工編譯。mysql_secure_installation,禁用 root 遠程登入、刪除匿名帳號、移除 test 庫。這份腳本是 LAMP 發展史上的縮影。理解「靜態編譯模組 → 修改 httpd.conf → 驗證 phpinfo()」這條主線,有助於排查現代環境中「模組未加載、MIME 未識別、路徑錯位」等經典問題。技術棧雖變,核心邏輯不變。