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

FreeBSD/Linux 手動編譯安裝 Apache、MySQL、PHP (LAMP) 完整步驟

     編輯:MySQL 資料庫相關知識

前言

原始碼編譯安裝可自訂模組、優化參數、掌握版本,適合生產環境需高度客製化的場景。本文以 FreeBSD/Linux 通用流程示範 Apache 2.2、MySQL 5.0、PHP 5.2 編譯安裝,並說明關鍵配置與驗證步驟。

一、前置準備

  • 確保系統已安裝編譯工具鏈:gcc、make、autoconf、libtool、openssl-devel、zlib-devel、pcre-devel 等。
  • 建立專用用戶/群組(安全原則):
    groupadd mysql && useradd -r -g mysql -s /sbin/nologin mysql
    groupadd www && useradd -r -g www -s /sbin/nologin www
  • 統一安裝前綴:/usr/local/apache、/usr/local/mysql、/usr/local/php。

二、Apache 2.2 編譯安裝

tar zxvf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure --prefix=/usr/local/apache \
            --enable-shared=max \
            --enable-module=most \
            --enable-so \
            --with-mpm=prefork
make && make install

關鍵參數說明

  • --enable-so:支援動態載入模組 (DSO),後續 PHP 模組需此功能。
  • --with-mpm=prefork:非執行緒安全的 PHP 必須搭配 prefork MPM。

三、MySQL 5.0 編譯安裝

tar zxvf mysql-5.0.56.tar.gz
cd mysql-5.0.56
./configure --prefix=/usr/local/mysql \
            --sysconfdir=/etc \
            --localstatedir=/var/lib/mysql \
            --with-charset=utf8 \
            --with-collation=utf8_general_ci \
            --with-extra-charsets=all \
            --with-plugins=innobase,myisam,heap,csv
make && make install

初始化與權限設定

cd /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf
./scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql
chown -R root .
chown -R mysql /var/lib/mysql
chgrp -R mysql .
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

設定 Root 密碼與遠程存取

/usr/local/mysql/bin/mysqladmin -u root password 'NewStrongPass'
# 允許遠程 root(生產環境建議建立專用帳號)
/usr/local/mysql/bin/mysql -u root -p -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'NewStrongPass' WITH GRANT OPTION; FLUSH PRIVILEGES;"

四、PHP 5.2 編譯安裝(Apache 模組模式)

tar zxvf php-5.2.1.tar.gz
cd php-5.2.1
./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 \
            --with-openssl \
            --with-zlib \
            --with-curl \
            --with-gd \
            --with-jpeg-dir \
            --with-png-dir \
            --with-freetype-dir \
            --enable-mbstring \
            --enable-sockets \
            --enable-bcmath
make && make install

配置 php.ini 與 Apache 整合

cp php.ini-dist /usr/local/php/etc/php.ini
# 編輯 php.ini 關鍵項
# date.timezone = Asia/Taipei
# display_errors = Off
# log_errors = On
# error_log = /var/log/php_errors.log
# max_execution_time = 30
# memory_limit = 128M
# post_max_size = 8M
# upload_max_filesize = 2M

# 編輯 Apache httpd.conf
# 在 AddType 區段加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# DirectoryIndex 加入 index.php
DirectoryIndex index.html index.php

# 載入 PHP 模組(make install 通常自動寫入,確認即可)
LoadModule php5_module modules/libphp5.so

五、驗證安裝

# 建立測試頁
echo '' > /usr/local/apache/htdocs/index.php

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

# 瀏覽器訪問 https://伺服器IP/index.php
# 應顯示 PHP 資訊頁,確認 MySQL 區段出現 Client API version

六、系統服務化與開機自啟

# Apache
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
chkconfig --add httpd
chkconfig httpd on

# MySQL 已於上節完成

# 防火牆開放 80/3306
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

七、常見問題排查

現象可能原因解決
Apache 啟動報 libphp5.so 找不到PHP 編譯未指定 --with-apxs2 或路徑錯誤重新編譯 PHP 並確認 apxs 路徑
PHP 無法連線 MySQLsocket 路徑不符、權限、skip-networking檢查 mysql.default_socket、my.cnf socket 設定、防火牆
中文亂碼字元集未統一資料庫/表/連線/Apache/PHP 全統一 utf8mb4
編譯失敗缺少庫缺開發套件yum install -y gcc make openssl-devel zlib-devel pcre-devel libxml2-devel curl-devel gd-devel

總結

原始碼編譯安裝 LAMP 雖步驟較多,但能精確控制版本、模組與優化參數。生產環境建議搭配配置管理工具將上述流程自動化,確保可重現、可審計。

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