首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Apache + PHP 4 + MySQL 經典編譯安裝腳本實戰詳解

     編輯:MySQL 資料庫相關知識

背景:手工編譯 LAMP 棧的歷史意義

在套件管理器尚未普及的年代,手工編譯 Apache、PHP、MySQL 是每位 Linux 運維工程師的必修課。本文記錄的一份 install 腳本,雖針對 Apache 1.3.12 / PHP 4.0.6 / MySQL 3.22.40 這組經典老版本,但其編譯邏輯、模組靜態綁定模式、配置文件修改要點,至今仍具參考價值,能幫助理解現代編譯安裝的底層原理。

腳本核心流程拆解

1. 解壓與目錄規範化

tar zxvf $1.tar.gz
tar zxvf $2.tar.gz
tar zxvf $3.tar.gz
mv $1 apache
mv $2 PHP
mv $3 MySQL

將三組源碼統一重命名為無版本號目錄,便於後續路徑引用。

2. MySQL 優先編裝(為 PHP 提供 libmysqlclient)

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 才能找到客戶端庫。

3. PHP 編譯並生成靜態模組

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。

4. Apache 二次配置並編譯(激活 PHP 模組)


cd ../apache
./configure --activate-module=src/modules/php4/libPHP4.a
make && make install

此步將 PHP 模組永久編譯進 httpd 二進制,無需 LoadModule 動態加載。

5. PHP 配置文件部署


cd ../PHP
cp php.ini-dist /usr/local/lib/PHP.ini

Apache httpd.conf 手工修改三大項

  1. MIME 類型映射:取消註釋並擴展副檔名
    AddType application/x-httpd-php .php .PHP3 .htm .pHtml .PHP4
  2. 源碼顯示支援:
    AddType application/x-httpd-php-source .PHPs
  3. 預設首頁優先序:
    DirectoryIndex index.htm index.Html index.php3 index.php default.PHP

現代視角的補充建議

  • 版本選擇:生產環境請使用 Apache 2.4 + PHP 8.x + MySQL 8.0 / MariaDB 10.x,享受安全更新與效能提升。
  • 安裝方式:優先使用發佈版套件管理器(apt/dnf/yum)或 Docker 容器化部署,僅在極度定製化場景手工編譯。
  • 安全加固:MySQL 必須執行 mysql_secure_installation,禁用 root 遠程登入、刪除匿名帳號、移除 test 庫。
  • PHP-FPM:現代架構採用 Nginx/Apache + PHP-FPM (FastCGI) 模式,替代舊式 mod_php,資源隔離與效能更優。

結語

這份腳本是 LAMP 發展史上的縮影。理解「靜態編譯模組 → 修改 httpd.conf → 驗證 phpinfo()」這條主線,有助於排查現代環境中「模組未加載、MIME 未識別、路徑錯位」等經典問題。技術棧雖變,核心邏輯不變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved