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

Linux 手動編譯安裝 LAMP 環境:Apache + MySQL + PHP 完整實戰教程

     編輯:MySQL 資料庫相關知識

RedHat/CentOS 手動編譯部署 LAMP 生產環境全流程

雖然現代部署多使用 yum/dnf、Docker 或編譯安裝腳本,但掌握手動編譯安裝 Apache、MySQL、PHP 的完整流程,有助於深入理解組件依賴、參數調優、權限模型與故障排查。本文基於 RedHat 9.0 環境,記錄生產級編譯部署關鍵步驟與避坑指南。

環境規劃

組件版本安裝路徑關鍵配置
Apache1.3.29/usr/local/apache--enable-module=so 支援 DSO 動態載入
MySQL3.23.58/usr/local/mysql--sysconfdir=/etc --localstatedir=/var/lib/mysql
PHP4.3.4/usr/local/php--with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs

前置條件:
• 最小化安裝 Linux,**不要**勾選系統預設 Apache/MySQL/PHP 包
• 已安裝編譯工具鏈:gcc gcc-c++ make autoconf libtool
• 已安裝依賴庫:zlib-devel openssl-devel pcre-devel expat-devel

1. MySQL 編譯安裝

# 解壓與配置
tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure --prefix=/usr/local/mysql \
            --sysconfdir=/etc \
            --localstatedir=/var/lib/mysql \
            --enable-assembler \
            --with-charset=gbk --with-extra-charsets=all
make && make install

# 初始化資料庫
/usr/local/mysql/bin/mysql_install_db

# 建立專用用戶與權限(關鍵步驟)
useradd -M -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
chown -R mysql:mysql /var/lib/mysql
chown -R root:mysql /usr/local/mysql
chmod 750 /var/lib/mysql

# 啟動腳本註冊
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

# 庫文件鏈接(避免 PHP 編譯找不到庫)
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql

# 啟動驗證
/etc/rc.d/init.d/mysqld start
mysql -u root -p

常見錯誤:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' → 99% 為 /var/lib/mysql 權限不正確,執行 chown -R mysql:mysql /var/lib/mysql 即可。

2. Apache 編譯安裝

tar zxvf apache_1.3.29.tar.gz
cd apache_1.3.29
./configure --prefix=/usr/local/apache \
            --enable-module=so \
            --enable-rule=SHARED_CORE
make && make install

3. PHP 編譯安裝(核心難點)

tar zxvf php-4.3.4.tar.gz
cd php-4.3.4
./configure --prefix=/usr/local/php \
            --with-apxs=/usr/local/apache/bin/apxs \
            --with-mysql=/usr/local/mysql \
            --with-config-file-path=/usr/local/php/etc \
            --enable-mbstring \
            --with-zlib \
            --with-gd \
            --enable-ftp
make && make install

# 複製生產配置
cp php.ini-dist /usr/local/php/etc/php.ini
# 編輯 php.ini:extension_dir、date.timezone、display_errors=Off 等

4. 整合 Apache + PHP

編輯 /usr/local/apache/conf/httpd.conf:

# 載入 PHP 模組(編譯時 --with-apxs 已自動生成 LoadModule 行)
AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html

5. 啟動驗證與測試

/usr/local/apache/bin/apachectl start
# 建立測試頁
echo "" > /usr/local/apache/htdocs/info.php
# 瀏覽器訪問 https://server_ip/info.php

關鍵避坑總結

  1. 權限模型:MySQL 數據目錄、Socket 檔案、錯誤日誌目錄必須屬於 mysql:mysql,權限 750。
  2. 庫文件路徑:編譯 PHP/Perl/Python 連接 MySQL 時,ldconfig 或 ln -s 將庫文件鏈接至 /usr/lib、/usr/include 標準路徑,避免指定 --with-mysql 路徑。
  3. 字符集一致性:MySQL 編譯 --with-charset=gbk、PHP mbstring、HTML meta charset、資料庫建表 CHARSET=gbk 全鏈路統一。
  4. 防火牆/SELinux:開放 80/3306 埠,SELinux 設為 Permissive 或配置正確上下文。
  5. 啟動順序:MySQL → Apache,關閉順序相反。

手動編譯雖繁瑣,但能精確控制每個組件的編譯參數、安裝路徑、權限模型,是排查疑難雜症、實現極致效能調優的基礎技能。生產環境建議改用 Ansible Playbook 或 Docker 實現不可變基礎設施部署。

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