46.2. 安裝

SUSE Linux 上的 Apache,會以標準的預先定義組態來執行原始設定。您可以依照本章中的說明,在短時間之內完成設定並執行 Apache 網頁伺服器。您必須登入為 root 身分,才能安裝和設定 Apache。

46.2.1. 使用 YaST 安裝 Apache

SUSE Linux Apache2 套件與 Apache 網站 (http://httpd.apache.org) 上提供的標準軟體套件,在檔案系統和應用程式配置上有些許不同。以下章節將敘述安裝 SUSE Linux Apache2 套件的詳細說明,並解釋適用的變化。

若要安裝簡易的 Web 伺服器,請執行下列步驟:

過程 46.1. 快速安裝

  1. 以 GUI (圖形使用者介面) 或指令行模式啟動 YaST。

  2. 選取網路服務+HTTP 伺服器

  3. 按一下繼續以確認要安裝套件 Apache2Apache2-prefork

  4. 完成安裝後,會出現 Apache 組態精靈,接著您可以開始設定 Web 伺服器。

如上述說明中指出的缺點,您所安裝的套件不包含 PHP 且沒有資料庫支援功能。若要安裝包含 PHP 和資料庫支援功能的 Web 伺服器,請執行下列步驟:

過程 46.2. 簡易安裝 Web 伺服器

  1. 以 GUI (圖形使用者介面) 或指令行模式啟動 YaST。

  2. 選取軟體+安裝和移除軟體

  3. 選取過濾器中的選擇,然後核取包含 Apache2 的簡易 Web 伺服器

  4. 確定

  5. 確認安裝個別套件後,即可完成 SUSE Linux Apache2 安裝程序。

若是進階使用者,SUSE Linux 會提供自訂套件選擇。若要自訂安裝 Web 伺服器,請執行下列步驟:

過程 46.3. 使用 YaST 安裝預設 Apache RPM

  1. 以 GUI (圖形使用者介面) 或指令行模式啟動 YaST。選取軟體+安裝和移除軟體

  2. 選取過濾器中的搜尋,接著在搜尋欄位中輸入 apache2

  3. 選取要安裝的 apache2

  4. 接著使用步驟 2 和步驟 3 來選擇模組。請參閱 節 46.5, "Apache 模組"

  5. 選擇模組後,請按接受

  6. 接著,系統會提示您選擇一個用於所需 apache2-MPM 套件的相依性:apache2-preforkapache2-worker。如需兩者差異處的說明,請參閱 節 46.2.2, "多重處理模組"。如果您無法確定要選擇哪一個選項,請選取 apache2-prefork 套件 (此選項為以 Unix 為基礎的作業系統所使用的預設值),接著按確定

  7. 確認安裝個別套件後,即可完成 SUSE Linux Apache2 安裝程序。

[Note]啟動 Web 伺服器

安裝 Apache 不會自動啟動 Web 伺服器。如需控制 Apache 啟動和關閉的資訊,請參閱 節 46.3.3, "啟動、開始和停止 Apache"

46.2.2. 多重處理模組

使用 YaST 安裝預設 Apache RPM 中所提及,SUSE Linux 會提供兩種不同的多重處理模組 (MPM) 搭配 Apache 使用。MPM 會負責接收和處理網頁伺服器所收到的要求,因此屬於網頁伺服器軟體的核心部分。

46.2.2.1. Prefork MPM

Prefork MPM 會實作未產生執行緒、正在進行 Prefork 的網頁伺服器。這個模組會使得網頁伺服器產生類似 Apache 版本 1.x 的行為,也就是將每個要求獨立分開,並為個別子程序進行 fork 來加以處理。這樣發生問題的要求就不會影響其他要求,進而避免網頁伺服器出現鎖定現象。

雖然透過這種以程序為主的方法可以提供穩定性,但是比起 Worker MPM 方法, Prefork MPM 會耗用較多的系統資源。Unix 作業系統會將 Prefork MPM 當作預設 MPM。

[Important]本文件的 MPM

本文件會假設 Apache 是使用 Prefork MPM。

46.2.2.2. Worker MPM

Worker MPM 會提供多執行緒網頁伺服器。執行緒是"輕量級"的程序。執行緒和程序相比的優點是,它消耗的資源較少。Worker MPM 不只會 Fork 子程序,它還可使用執行緒和伺服器處理程序,來為要求提供服務。完成 Prefork 的子程序屬於多執行緒。

這種方法因為耗用比 Prefork MPM 更少的系統資源,因此可以提高 Apache 的執行效能。主要缺點之一就是 worker MPM 的穩定性:當某執行緒毀損時,程序的所有執行緒都會受到影響。最嚴重的情況下,甚至還會造成伺服器當機。尤其是在負載量高的 Apache 上使用 CGI (已於 節 46.5.1.2, "通用閘道介面:mod_cgi " 說明) 時,可能就會因執行緒無法與系統資源進行通訊而產生內部伺服器錯誤。

在 Apache 上使用 worker MPM 的另外一點爭議,就是並非所有可用的 Apache 模組 (see 節 46.5, "Apache 模組") 都能安全地使用執行緒,這樣就無法配合 worker MPM 使用。

[Warning]PHP 屬於 Apache 模組 (mod_php)

並非所有可用的 PHP 模組都是安全執行緒。因此最好不要搭配 worker MPM 來使用 mod_php

46.2.3. 預設的檔案系統與應用程式配置

SUSE Linux 會在預設位置中放入 Apache 套件檔案。這裡將列出最重要檔案的位置。

46.2.3.1. 二進位檔

大部分在 SUSE Linux Apache 中的執行檔都會附加 2。這樣就可以在同時安裝 Apache 1.x 和 Apache 2.x 時,方便識別不同版本的二進位檔案。

/usr/sbin/httpd2

指向 節 46.2.2, "多重處理模組" 所述選擇多重處理模組的符號連結。預設值是 httpd2-prefork。啟動程序檔會根據 MPM 的系統組態設定,來維護此 symlink。

/usr/sbin/httpd2-prefork

實際的 Apache2 執行檔。

/usr/sbin/apache2ctl

由 Apache HTTPD 專案提供,可用來啟動和停止網頁伺服器的控制程序檔。如需更多詳細資訊,請參閱 節 46.3.3, "啟動、開始和停止 Apache" 或執行 /usr/sbin/apache2ctl help

/etc/init.d/apache2

啟動和停止程序檔,可以提供 SUSE Linux 安裝的完整功能,並在開機階段啟動 Apache。這個程序檔會在啟動和停止伺服器之前先檢查有效的組態,以及覆寫組態的位置。它還可以讓使用者更方便地包含其他組態檔、載入模組,甚至在不用修改程序檔情況下啟動不同的伺服器例項。

/usr/sbin/rcapache2

方便使用的 /etc/init.d/apache2 symlink,因為其路徑預設不會出現 /etc/init.d/。只要使用 rcapache2 start 就可以啟動 Apache。

/usr/sbin/htpasswd2

可用來產生 .htaccess 驗證加密密碼的公用程式。如需如何使用這項工具的詳細資訊,請參閱 htpasswd2(1) Man 頁面。

46.2.3.2. 組態檔案

大部分的組態檔案會出現在 /etc/apache2 底下。如需如何變更組態設定的詳細資訊,請參閱 節 46.3, "組態"

/etc/apache2/httpd.conf

上層組態檔案。儘可能不要變更這個檔案。這個檔案主要是用來包含其他組態檔案,以及宣告全域設定。

/etc/apache2/*.conf

有些外部 Apache 模組會將組態檔案放在目錄 /etc/apache2/ 中,而且通常會用模組本身名稱 (mod_*.conf) 作為字首。

/etc/apache2/conf.d/*

其中會包含來自特定套件之其他不同組態檔案的目錄。如需取得範例說明,請參閱 節 46.5.3.2, "服務 PHP:mod_php4mod_php5 "

/etc/apache2/vhosts.d/*

其中包含虛擬主機之選擇性組態檔案的目錄。如需詳細資料,請參閱 節 46.4, "虛擬主機"

/etc/sysconfig/apache2

相關於 Apache2 的 SUSE Linux 組態檔案。其中包含控制 Apache 網頁伺服器的所有相關組態參數。YaST 會使用 /etc/sysconfig/apache2 來設定 Apache,請參閱 節 46.3.1, "使用 YaST 設定 Apache"。它也可以手動進行編輯,請參閱 節 46.3.2, "手動設定 Apache"

46.2.3.3. 日誌檔

依預設,Apache 會在下列檔案中提供有關其 Runtime 狀態的各種資訊:

/var/log/apache2/error_log

Apache 會在這個檔案中,記錄啟動、關閉通知與所有 Runtime 錯誤。

/var/log/apache2/access_log

所有送到網頁伺服器的要求都會記錄在這個檔案。預設的項目格式會使用組合格式,以便顯示有關主機、傳送要求的使用者代理程式與參照 URI 的資訊。

46.2.3.4. Document Root

實體目錄 /srv/www/htdocs 是 Apache 從其中提供網頁的預設位置。它扮演了用戶端要求的"根目錄"。如果要使用 Apache 發佈網頁,請將檔案結構儲存在此目錄或其下方。

例如 http://www.example.com/index.html 的 URL,將會參照到名為 example.com 領域之 SUSE Linux Apache 預設組態中的 /srv/www/htdocs/index.html

46.2.4. 手動建立模組

Apache 是以模組化方式建立,這表示這些模組可以提供網頁伺服器軟體本身的功能。這樣一來,進階使用者就可以撰寫自訂模組,來延伸 Apache 功能。如需詳細資訊,請參閱下面介紹的 Man 頁面。

46.2.4.1. apache2-devel

若要開發 Apache 模組或是編譯協力廠商模組,除了適當的開發工具外,還需使用 apache2-devel 套件。 apache2-devel 也包含了 apxs2 工具,這是在編譯 Apache 其他模組時,需要用到的工具。

46.2.4.2. apxs2

apxs2 二進位檔案位在 /usr/sbin 下方:

  • /usr/sbin/apxs2 -- 適合用來建立可配合任何 MPM 使用的延伸模組。安裝位置是 /usr/lib/apache2

  • /usr/sbin/apxs2-prefork -- 適合用於 prefork MPM 模組。安裝位置是 /usr/lib/apache2-prefork

  • /usr/sbin/apxs2-worker -- 適合用於 worker MPM 模組。

apxs2 會安裝可供所有 MPM 使用的模組。另外兩個程式,則只能安裝供個別 MPM 使用的模組。 apxs2 會將模組安裝在 /usr/lib/apache2,而 apxs2-prefork 則會將模組安裝在 /usr/lib/apache2-prefork

apxs2 可以從原始程式碼進行模組編譯和安裝 (其中包括必要的組態檔案變更),並建立可於 Runtime 載入 Apache 的動態共用物件 (DSO)。使用 cd /path/to/module/source; apxs2 -c -i mod_foo.c 指令,從原始程式碼安裝模組。有關 apxs2 的其他選項,將於 apxs2(1) man 頁面說明。接著根據 節 46.3.2, "手動設定 Apache" 中的描述,使用 APACHE_MODULES 項目,在 /etc/sysconfig/apache2 中啟動這些模組。