相比 RPM/YUM 安裝,源碼編譯提供更大的彈性:
yum groupinstall "Development Tools")

將以下源碼包上傳至 /root 或 /usr/local/src:

# APR
tar zxvf apr-1.4.6.tar.gz -C /usr/local/src
cd /usr/local/src/apr-1.4.6
./configure --prefix=/usr/local/apr
make && make install
# APR-Util
tar zxvf apr-util-1.5.1.tar.gz -C /usr/local/src
cd /usr/local/src/apr-util-1.5.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make && make install
tar zxvf pcre-8.xx.tar.gz -C /usr/local/src
cd /usr/local/src/pcre-8.xx
./configure --prefix=/usr/local/pcre
make && make install
tar zxvf httpd-2.2.14.tar.gz -C /usr/local/src
cd /usr/local/src/httpd-2.2.14
./configure \
--prefix=/usr/local/apache \
--enable-so \
--enable-rewrite \
--enable-ssl \
--enable-modules=most \
--enable-mods-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre
make && make install
# 建立 mysql 使用者與群組
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
tar zxvf mysql-5.1.45.tar.gz -C /usr/local/src
cd /usr/local/src/mysql-5.1.45
./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-extra-charsets=all \
--with-plugins=innobase,myisam,partition
make && make install
# 初始化資料庫
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
tar zxvf php-5.2.5.tar.gz -C /usr/local/src
cd /usr/local/src/php-5.2.5
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php/etc \
--enable-mbstring \
--enable-sockets \
--enable-ftp \
--enable-gd-native-ttf \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--with-curl \
--with-openssl \
--with-mcrypt \
--with-mhash \
--enable-bcmath \
--enable-zip \
--enable-soap \
--enable-calendar \
--enable-exif
make && make install
# 複製生產環境 php.ini
cp php.ini-production /usr/local/php/etc/php.ini
# 編輯 php.ini 設定時區、錯誤日誌、上傳大小等
編輯 /usr/local/apache/conf/httpd.conf,確認含有:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .php5
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
重啟 Apache:/usr/local/apache/bin/apachectl restart
phpinfo.php 確認所有模組載入正常。my.cnf 關鍵參數:innodb_buffer_pool_size、query_cache_size、max_connections。MaxClients、KeepAlive 參數。| 錯誤現象 | 原因 | 解決方法 |
|---|---|---|
| configure: error: xml2-config not found | 缺少 libxml2-devel | yum install libxml2-devel |
| configure: error: Cannot find OpenSSL's <evp.h> | 缺少 openssl-devel | yum install openssl-devel |
| make: *** [sapi/cgi/php-cgi] Error 1 | libxml2 版本過舊或路徑錯誤 | 指定 --with-libxml-dir=/usr/local/libxml2 |
| Apache 啟動報錯: libpcre.so.0 not found | 動態庫路徑未加入 ld.so.conf | echo "/usr/local/pcre/lib" > /etc/ld.so.conf.d/pcre.conf && ldconfig |