首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Apache、MySQL、PHP 源碼編譯安裝完整實戰筆記

     編輯:PHP 綜合知識

環境與版本

  • OS:Ubuntu 12.04 LTS
  • Apache:2.4.2
  • PHP:5.3.11
  • MySQL:5.1.62

前置準備

# 安裝編譯工具鏈與依賴庫
apt-get update
apt-get install -y build-essential libxml2-dev libssl-dev libbz2-dev libcurl4-openssl-dev \
libjpeg-dev libpng-dev libfreetype6-dev libgmp-dev libldap2-dev libmcrypt-dev \
libmysqlclient-dev libpspell-dev librecode-dev libsnmp-dev libtidy-dev libxslt-dev \
libzip-dev zlib1g-dev libncurses5-dev libreadline-dev libedit-dev libsqlite3-dev \
libonig-dev pkg-config autoconf bison re2c

Apache 2.4.2 編譯安裝

cd httpd-2.4.2
./configure --prefix=/usr/local/apache \
            --with-libxml2 \
            --enable-modules=most \
            --enable-mods-shared=all
make
make install

# 測試
/usr/local/apache/bin/apachectl start
curl 127.0.0.1  # 應顯示 "It works!"

關鍵點:Apache 2.4 需 APR、APR-Util、PCRE,若 configure 報錯缺少,需先編譯安裝這三個依賴或指定 --with-apr 等路徑。

MySQL 5.1.62 編譯安裝

cd mysql-5.1.62
./configure --prefix=/usr/local/mysql \
            --with-mysqld-user=mysql \
            --with-extra-charsets=all \
            --enable-thread-safe-client
make
make install

# 初始化資料庫
/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 配置 my.cnf
cp support-files/my-medium.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 加入:
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
user=mysql
[client]
default-character-set=utf8

# 目錄權限
chown -R mysql:mysql /usr/local/mysql

# 啟動
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 驗證
ps aux | grep mysqld

PHP 5.3.11 編譯安裝(最複雜)

cd php-5.3.11
./configure --prefix=/usr/local/php \
            --with-apxs2=/usr/local/apache/bin/apxs \
            --with-mysql=/usr/local/mysql \
            --with-mysql-sock=/tmp/mysql.sock \
            --with-pdo-mysql=/usr/local/mysql \
            --with-mysqli=/usr/local/mysql/bin/mysql_config \
            --enable-mbstring=all \
            --enable-zend-multibyte \
            --with-gd \
            --with-freetype-dir \
            --with-jpeg-dir \
            --with-png-dir \
            --with-zlib \
            --with-bz2 \
            --with-curl \
            --with-openssl \
            --enable-ftp \
            --enable-sockets \
            --enable-bcmath \
            --enable-calendar \
            --enable-exif \
            --enable-soap \
            --enable-zip \
            --with-xmlrpc \
            --with-xsl \
            --enable-shmop \
            --enable-sysvmsg \
            --enable-sysvsem \
            --enable-sysvshm \
            --enable-wddx \
            --with-gmp \
            --with-gettext \
            --with-mhash \
            --with-mcrypt \
            --enable-pcntl \
            --disable-rpath \
            --enable-inline-optimization
make
make test  # 可能有測試失敗,但不影響安裝
make install

# 複製生產環境 php.ini
cp php.ini-production /usr/local/php/lib/php.ini
# 編輯關鍵配置
# error_log = /usr/local/php/php_error.log
# date.timezone = "Asia/Shanghai"
# session.save_path = "/tmp"
# extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626"
# extension=mysqli.so
# extension=pdo_mysql.so
# extension=gd.so
# extension=curl.so
# extension=mbstring.so
# ... 其他擴展

Apache 整合 PHP

# 編輯 /usr/local/apache/conf/httpd.conf
# 確保載入 PHP 模組(make install 應自動添加)
LoadModule php5_module modules/libphp5.so

# 新增類型映射
AddType application/x-httpd-php .php .php5 .phtml
AddType application/x-httpd-php-source .phps

# 設定 DirectoryIndex
DirectoryIndex index.php index.html

# 重啟 Apache
/usr/local/apache/bin/apachectl restart

驗證安裝

<?php
phpinfo();
?>

瀏覽器訪問 https://server-ip/info.php,確認 Apache、PHP、MySQL 模組、GD、cURL、mbstring 等擴展正常載入。

常見編譯問題與解決

問題解決
configure: error: xml2-config not foundapt-get install libxml2-dev
configure: error: Cannot find OpenSSL's <evp.h>apt-get install libssl-dev 並指定 --with-openssl=/usr
make: *** [ext/gd/gd.o] Error 1缺少 freetype/jpeg/png dev 包,安裝後重新 configure
apxs: command not foundApache 未安裝或路徑錯誤,確認 --with-apxs2 路徑正確
MySQL client library not foundapt-get install libmysqlclient-dev 或指定 --with-mysql=/usr/local/mysql
PHP make test 失敗部分測試對環境敏感,不影響功能,可忽略;關鍵擴展測試通過即可

生產環境優化建議

  1. PHP-FPM 替代 mod_php:Nginx + PHP-FPM 架構效能更高、資源隔離更好。
  2. OpCache 啟用:opcache.enable=1、opcache.memory_consumption=256。
  3. MySQL InnoDB 優化:innodb_buffer_pool_size 設為實體記憶體 70%。
  4. 日誌切割:logrotate 管理 Apache/PHP/MySQL 日誌。
  5. 安全加固:disable_functions、open_basedir、expose_php=Off、隱藏版本號。

總結

源碼編譯安裝雖繁瑣,但能精確控制版本、模組、優化參數,適合特定版本相容性需求或極致效能調優場景。現代生產環境建議優先使用發布版套件管理器或容器化部署,降低維護成本。

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