前置條件: 必須移除系統預裝的 Apache/MySQL/PHP (rpm -e),避免衝突。
wget https://www.mysql.com/downloads/mysql-3.23.58.tar.gz
tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure \
--prefix=/usr/local/mysql \
--sysconfdir=/etc \
--localstatedir=/var/lib/mysql \
--with-charset=gbk \
--with-extra-charsets=all
| 參數 | 用途 |
|---|---|
--prefix | 安裝根目錄 |
--sysconfdir | my.cnf 配置檔目錄 |
--localstatedir | 資料庫檔案儲存目錄 |
--with-charset | 預設字元集 (中文環境建議 gbk/utf8) |
--with-extra-charsets | 編譯支援所有字元集 |
make
make install
# 初始化系統資料庫
/usr/local/mysql/bin/mysql_install_db
# 建立 mysql 系統用戶 (若不存在)
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 755 /usr/local/mysql/bin/*
# 啟動
/usr/local/mysql/bin/safe_mysqld &
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
根因: /var/lib/mysql 權限不屬於 mysql 用戶,導致 safe_mysqld 無法建立 socket 檔案。
徹底修正權限腳本:
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chmod 777 /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
tar zxvf apache_1.3.29.tar.gz
cd apache_1.3.29
./configure --prefix=/usr/local/apache --enable-module=so
make
make install
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/lib \
--enable-track-vars \
--with-zlib \
--with-gd \
--enable-mbstring
make
make install
cp php.ini-dist /usr/local/lib/php.ini
# 載入 PHP 模組 (make install 通常自動加入)
LoadModule php4_module libexec/libphp4.so
AddModule mod_php4.c
# PHP 副檔名解析
AddType application/x-httpd-php .php .phtml .php3 .inc
AddType application/x-httpd-php-source .phps
# 預設首頁
DirectoryIndex index.php index.html index.htm
# 安全性
Options FollowSymLinks MultiViews
register_globals = Off
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
extension_dir = "/usr/local/php/lib/php/extensions"
; extension=mysql.so (通常靜態編譯已內建)
/usr/local/apache/bin/apachectl start
# 瀏覽器訪問 https://server_ip/ 測試
Apache 1.3.x 預設 HARD_SERVER_LIMIT 256,修改 src/include/httpd.h 重新編譯可提高 (如 2048)。