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

Ubuntu 手動編譯安裝 Apache + PHP + MySQL 完整攻略:從源碼到生產就緒

     編輯:PHP 綜合知識

前言:為什麼選擇源碼編譯?

套件管理器 (apt/yum) 版本滯後、編譯參數固定。源碼編譯可:**自訂模組、優化效能、啟用實驗功能、精確控制版本、學習底層依賴關係**。本文以 Ubuntu (適用 Debian 系) 為例,完整記錄 Apache 2.2、PHP 5.4、MySQL 5.6 手動編譯安裝、配置整合、權限管理、服務啟動的全流程。

一、MySQL 安裝與配置

1. 安裝依賴

sudo apt-get update
sudo apt-get install build-essential cmake libncurses5-dev bison

2. 下載、編譯、安裝

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.51.tar.gz
tar zxvf mysql-5.6.51.tar.gz && cd mysql-5.6.51
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
      -DMYSQL_DATADIR=/usr/local/mysql/data \
      -DSYSCONFDIR=/etc \
      -DWITH_INNOBASE_STORAGE_ENGINE=1 \
      -DWITH_PARTITION_STORAGE_ENGINE=1 \
      -DDEFAULT_CHARSET=utf8mb4 \
      -DDEFAULT_COLLATION=utf8mb4_general_ci
make -j$(nproc) && sudo make install

3. 初始化與啟動

sudo groupadd mysql && sudo useradd -r -g mysql -s /bin/false mysql
sudo chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql
sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
sudo cp support-files/mysql.server /etc/init.d/mysql
sudo update-rc.d mysql defaults
sudo service mysql start
# 設定 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'new_password'

4. 遠程訪問配置

編輯 /etc/mysql/my.cnf (或 /usr/local/mysql/my.cnf):

[mysqld]
bind-address = 0.0.0.0  # 註釋預設 127.0.0.1
skip-name-resolve

重啟:sudo service mysql restart。建立遠程用戶:GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;

二、Apache 2.2 編譯安裝

1. 依賴

sudo apt-get install libpcre3-dev libexpat1-dev libssl-dev

2. 編譯參數

wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz
tar zxvf httpd-2.2.34.tar.gz && cd httpd-2.2.34
./configure --prefix=/usr/local/apache2 \
            --enable-module=so \
            --enable-rewrite=shared \
            --enable-ssl=shared \
            --with-mpm=prefork
make -j$(nproc) && sudo make install

3. 配置 httpd.conf

sudo vim /usr/local/apache2/conf/httpd.conf
# 修改
ServerName localhost:80
# Listen 80 (預設)
# 載入 PHP 模組 (稍後添加)
# DirectoryIndex index.php index.html

4. 啟動測試

sudo /usr/local/apache2/bin/apachectl start
# 瀏覽 https://localhost 應見 "It Works!"

三、PHP 5.4 編譯安裝 (整合 Apache 模組)

1. 依賴

sudo apt-get install libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libreadline-dev libedit-dev

2. 編譯參數 (關鍵:--with-apxs2)

wget https://www.php.net/distributions/php-5.4.45.tar.gz
tar zxvf php-5.4.45.tar.gz && cd php-5.4.45
./configure --prefix=/usr/local/php5 \
            --with-apxs2=/usr/local/apache2/bin/apxs \
            --with-mysql=/usr/local/mysql \
            --with-mysqli=/usr/local/mysql/bin/mysql_config \
            --with-pdo-mysql=/usr/local/mysql \
            --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir \
            --with-curl --with-zlib --with-openssl \
            --enable-mbstring --enable-sockets --enable-bcmath \
            --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data \
            --with-pear --with-libxml-dir
make -j$(nproc) && sudo make install

3. php.ini 配置

sudo cp php.ini-production /usr/local/php5/lib/php.ini
# 編輯關鍵項
date.timezone = Asia/Taipei
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
cgi.fix_pathinfo = 0
# 擴展
extension= mysqli.so
extension= pdo_mysql.so
extension= gd.so
extension= curl.so
extension= mbstring.so

4. Apache 整合 PHP

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

# 確認已自動添加
LoadModule php5_module modules/libphp5.so
# 添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# 修改 DirectoryIndex

    DirectoryIndex index.php index.html

# 指定 php.ini 路徑 (可選)
PHPIniDir /usr/local/php5/lib

5. 重啟驗證

sudo /usr/local/apache2/bin/apachectl restart
echo '' | sudo tee /usr/local/apache2/htdocs/info.php
# 瀏覽 https://localhost/info.php

四、常見問題排查表

現象原因解決
configure: error: xml2-config not found缺 libxml2-devapt-get install libxml2-dev
apxs not foundApache 未安裝或路徑錯誤find / -name apxs 確認路徑
mysql.h not foundMySQL 開發頭文件缺失--with-mysql=/usr/local/mysql (安裝前綴)
PHP 模組未載入httpd.conf 無 LoadModule檢查 modules/libphp5.so 存在、LoadModule 行未註釋
權限拒絕寫入日誌目錄擁有者非 www-datachown -R www-data:www-data /var/log/apache2 /usr/local/apache2/logs

五、生產環境優化建議

  • Apache MPM:高併發改用 event 或 worker (需 PHP-FPM),預設 prefork 適合 mod_php。
  • PHP-FPM:生產建議用 --enable-fpm,Nginx/Apache (proxy_fcgi) 連接 Unix Socket,效能優於 mod_php。
  • OpCache:PHP 5.5+ 內建,opcache.enable=1、opcache.memory_consumption=256。
  • 安全:expose_php=Off、disable_functions=exec,passthru,shell_exec,system,proc_open,popen、目錄權限最小化。
  • 日誌切割:logrotate 管理 Apache/PHP/MySQL 日誌。
  • 監控:Prometheus + node_exporter、Apache mod_status、MySQL mysqld_exporter。

結語

完成源碼編譯安裝,不僅獲得最新版本與自訂功能,更能深入理解 LAMP 棧各層依賴與配置關係。生產環境建議:**資料庫分離 (RDS/獨立實例)、Web 服務器改用 Nginx + PHP-FPM、靜態資源走 CDN、配置自動化部署 (Ansible/Docker)、**。手動編譯是學習與特殊需求的最佳途徑,標準化部署請轉向容器化與基礎設施即代碼。

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