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

Apache + MySQL + PHP + SSL 完整伺服器建置指南(Linux/Unix 篇)

     編輯:PHP 綜合知識

建置目標

打造支援多網站託管、電子商務級 SSL 加密、資料庫驅動動態腳本的生產環境 Web 伺服器。

軟體棧選擇理由

  • Apache:業界標準 Web 伺服器
  • Mod_SSL + OpenSSL:成熟穩定的 SSL 實作,整合容易
  • MySQL:輕量高效的關聯式資料庫
  • PHP:學習曲線平緩、與 Apache/MySQL 整合度高

本指南採源碼編譯安裝,適用於 Linux/Unix 系統。

前置需求

  • Perl 5+、gzip/gunzip、gcc、GNU make
  • 基本 Unix 指令、HTML、SQL、Linux 系統管理知識
  • 乾淨系統(未預裝 MySQL、Apache、PHP)

運作原理簡述

  1. 瀏覽器請求 https://domain/test.php
  2. Apache 辨識 .php,交由 mod_php 處理
  3. PHP 解析腳本,連接 MySQL 執行 SQL
  4. MySQL 回傳結果,PHP 產生 HTML
  5. Apache 回應瀏覽器
  6. HTTPS 流程同理,差異在通訊加密(Port 443)與憑證驗證

安裝順序規劃

  1. MySQL → 驗證運作
  2. PHP(需預先配置 Apache 來源目錄)
  3. Mod_SSL + OpenSSL → Apache 整合編譯
  4. Apache → 測試 PHP/SSL

MySQL 原始碼安裝

# 解壓
gunzip -d -c mysql-3.22.xx.tar.gz | tar xvf -
cd mysql-3.22.xx

# 配置與編譯
./configure --prefix=/usr/local/mysql
make
make install

# 初始化資料庫與啟動
scripts/mysql_install_db
cd /usr/local/mysql/bin
./safe_mysqld &
./mysqladmin -u root password "new-password"

驗證與基本操作

# 檢查資料庫
BINDIR/mysqlshow -p
# 進入互動模式
mysql -u root -p
mysql> CREATE DATABASE test2;
mysql> USE test2;
mysql> CREATE TABLE books (id INT(3) NOT NULL AUTO_INCREMENT, name CHAR(50) NOT NULL, PRIMARY KEY(id));
mysql> INSERT INTO books (name) VALUES ("PHP 4 Newbies"), ("Red Hat Linux 6 Server");
mysql> SELECT * FROM books;

PHP 安裝(需 Apache 來源目錄)

# 解壓 Apache 來源(僅供 PHP configure 參考)
cd /tmp/download
gunzip -c apache_1.3.x.tar.gz | tar xf -
cd apache_1.3.x
./configure
cd ..

# PHP 編譯
gunzip -c php-4.0.x.tar.gz | tar xf -
cd php-4.0.x
./configure --with-mysql=/usr/local/mysql \
            --with-xml \
            --with-apache=../apache_1.3.x \
            --enable-track-vars \
            --with-ldap
make
make install

# 複製設定檔
cp php.ini-dist /usr/local/lib/php.ini
# 可調整 max_execution_time = 60

OpenSSL、Mod_SSL、Apache 整合編譯

1. RSARef(僅美規需求,現已過時可略)

2. OpenSSL

cd openssl-0.9.x
./config --prefix=/usr/local/ssl -L`pwd`/../rsaref-2.0/local/ rsaref -fPIC
make && make test && make install

3. Mod_SSL 配置

cd mod_ssl-2.5.x-1.3.x
./configure --with-apache=../apache_1.3.x

4. Apache 最終編譯

cd apache_1.3.x
SSL_BASE=../openssl-0.9.x
RSA_BASE=../rsaref-2.0/local
./configure --enable-module=ssl \
            --activate-module=src/modules/php4/libphp4.a \
            --enable-module=php4 \
            --prefix=/usr/local/apache \
            --enable-shared=ssl
make

5. 產生憑證並安裝

# 產生自簽憑證(測試用)
make certificate TYPE=custom
# 或正式環境 TYPE=custom 配合自建 CA
make install

Apache 設定檔調整

編輯 /usr/local/apache/conf/httpd.conf,啟用 PHP:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

服務啟動與驗證

# 語法檢查
/usr/local/apache/bin/apachectl configtest
# 一般啟動
/usr/local/apache/bin/apachectl start
# SSL 啟動
/usr/local/apache/bin/apachectl startssl

測試清單

  • https://localhost/ → Apache 預設頁
  • https://localhost/test.php → <?php phpinfo(); ?> 顯示 PHP 資訊
  • https://localhost/ → 瀏覽器提示接受自簽憑證,建立加密連線
  • PHP + MySQL 連線測試腳本(略)

虛擬主機配置

非 SSL 虛擬主機

<VirtualHost *>
    ServerAdmin webmaster@domain1.com
    DocumentRoot /home/vhosts/domain1.com/www/
    ServerName www.domain1.com
    ErrorLog logs/domain1.com-error_log
    CustomLog logs/domain1.com-access_log common
    ScriptAlias /cgi-bin/ /var/www/cgi-bin/domain1.com/
    DirectoryIndex index.php
</VirtualHost>

SSL 虛擬主機

<VirtualHost *:443>
    DocumentRoot /usr/local/apache/htdocs
    ServerName www.securedomain1.com
    SSLEngine on
    SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
    CustomLog /usr/local/apache/logs/ssl_request_log \
        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

SSL 憑證完整產生流程

  1. 產生私鑰:openssl genrsa -des3 -out server.key 1024
  2. 產生 CSR:openssl req -new -key server.key -out server.csr(CommonName 填 FQDN)
  3. 送簽:商業 CA(VeriSign、Thawte 等)或自建 CA
  4. 自建 CA 流程:
    • openssl genrsa -des3 -out ca.key 1024
    • openssl req -new -x509 -days 365 -key ca.key -out ca.crt
    • 使用 sign.sh(mod_ssl 附贈)簽署:./sign.sh server.csr
  5. 部署:SSLCertificateFile 指向 server.crt,SSLCertificateKeyFile 指向 server.key

完成上述步驟即擁有功能完整的 LAMP + SSL 生產環境。

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