27.2 設定 Apache

可以使用兩種方法設定 SUSE Linux Enterprise Server 中的 Apache︰使用 YaST 或者手動設定。手動設定組態可以提供較詳細的設定,但是缺乏 YaST GUI 提供的方便性。

重要: 組態變更

大部分 Apache 組態值在變更之後,必須等到 Apache 重新啟動或是重新載入才能生效。如果是使用 YaST 完成組態設定,而且已針對HTTP 服務核取已啟用,Apache 會自動重新啟動或重新載入。如需有關手動重新啟動的詳細資訊,請參閱節 27.3, 啟動和停止 Apache。大多數的組態變更只需要透過 rcapache2 reload 進行重新載入。

27.2.1 手動設定 Apache

手動設定 Apache 是指透過 root 使用者身份來編輯純文字組態檔案。

組態檔案

您可以在下列兩個不同位置找到 Apache 組態檔案:

  • /etc/sysconfig/apache2

  • /etc/apache2/

/etc/sysconfig/apache2

/etc/sysconfig/apache2 可控制部分的 Apache 全域設定,例如要載入的模組、要包含的其他組態檔案、伺服器應該啟動的旗標,以及應該新增至指令行的旗標。此檔案對每個組態選項都進行了詳細說明,因此本文不予以介紹。針對一般用途的網頁伺服器,在 /etc/sysconfig/apache2 中的設定應該可以符合任何組態需求。

/etc/apache2/

/etc/apache2/ 代管了 Apache 的所有組態檔案。以下各節將說明每個檔案的用途。每個檔案都包含了數個組態選項 (又稱為指示詞)。在這些檔案中的每個組態選項都會詳加說明,因此本文將不予以介紹。

Apache 組態檔案的組織方式如下:

/etc/apache2/
 |
 |- charset.conv 
 |- conf.d/
 |   |
 |   |- *.conf
 |
 |- default-server.conf
 |- errors.conf
 |- httpd.conf
 |- listen.conf
 |- magic
 |- mime.types
 |- mod_*.conf
 |- server-tuning.conf
 |- ssl.*
 |- ssl-global.conf
 |- sysconfig.d
 |   |
 |   |- global.conf
 |   |- include.conf
 |   |- loadmodule.conf . .
 |
 |- uid.conf
 |- vhosts.d
 |   |- *.conf
在 /etc/apache2/ 中的 Apache 組態檔案
charset.conv

指定不同語言所要使用的字元集。請勿進行編輯。

conf.d/*.conf

組態檔案由其他模組新增。這些組態檔案可以依實際需要包含至虛擬主機組態。如需範例,請參閱 vhosts.d/vhost.template。若要執行這個動作,您可以為不同的虛擬主機提供不同的模組組合。

default-server.conf

使用合理預設值設定所有虛擬主機的全域組態。這時不是變更組態值,而是採用虛擬主機組態覆寫組態值。

errors.conf

定義 Apache 處理錯誤的方式。若要自定這些傳送給所有虛擬主機的訊息,請編輯此檔案。另外一種方法是覆寫虛擬主機組態中的這些指示詞。

httpd.conf

主要的 Apache 伺服器組態檔案。請勿變更此檔案。此檔案主要包含 Include 陳述式和全域設定。分別為此處列出的每個組態檔案覆寫全域設定。變更虛擬主機組態的主機特定設定 (例如文件根目錄)。

listen.conf

繫結 Apache 至特定的 IP 位址與連接埠這裡也可以設定以名稱為基礎之虛擬主機的組態 (請參閱以名稱為基礎的虛擬主機)。

magic

mime_magic 模組的資料,此模組可協助 Apache 自動判斷不明檔案的 MIME 類型。請勿進行變更。

mime.types

系統已知的 MIME 類型 (實際上是 /etc/mime.types 的連結)。請勿進行編輯。如果您需要新增這裡未列出的 MIME 類型,請將它們新增到 mod_mime-defaults.conf

mod_*.conf

預設已安裝之模組的組態檔案。如需詳細資訊,請參閱節 27.4, 安裝、啟用和設定模組。請注意,選用模組的組態檔案會存放在 conf.d 目錄。

server-tuning.conf

包含不同 MPM 的組態指示詞 (請參閱節 27.4.4, 多重處理模組) 和可控制 Apache 效能的一般組態選項。請在變更此檔案之後為網頁伺服器進行適當測試。

ssl-global.confssl.*

全域 SSL 組態和 SSL 憑證資料。如需詳細資訊,請參閱節 27.6, 設定提供 SSL 的安全網頁伺服器

sysconfig.d/*.conf

自動從 /etc/sysconfig/apache2 產生的組態檔案。請勿變更其中任何一個檔案,但可以編輯 /etc/sysconfig/apache2。請勿在此目錄中放置其他組態檔案。

uid.conf

指定要在哪個使用者和群組 ID 之下執行 Apache。請勿進行變更。

vhosts.d/*.conf

此為虛擬主機組態。此目錄包含採用或不採用 SSL 之虛擬主機的樣板檔案。在此目錄中,以 .conf 做為結尾的每個檔案,都會自動包含至 Apache 組態。如需詳細資訊,請參閱虛擬主機組態

虛擬主機組態

虛擬主機」一詞,是形容 Apache 從同一部實體機器提供多個 URI (統一資源識別元,Universal Resource Identifier) 的能力。意思是一部實體機器上的單一網頁伺服器能同時執行數個網域,例如,www.example.com 和 www.example.net。

使用虛擬主機的目的,經常是為了節省管理工作 (只需要維護一部網頁伺服器) 和硬體開銷 (不需要將各個網域安裝在專屬伺服器上)。虛擬主機可以使用名稱、IP 或是連接埠作為基礎。

若要列出所有現有的虛擬主機,請使用指令 httpd2 -S。該指令將輸出一份清單,顯示預設伺服器和所有虛擬主機,以及它們的 IP 位址和監聽埠。此外,該清單還顯示每個虛擬主機在組態檔案中的位置。

虛擬主機可經由 YaST (請參閱虛擬主機) 或是手動編輯組態檔案進行設定。依預設,系統會根據 /etc/apache2/vhosts.d/ 中每部虛擬主機一個組態檔案的設定,為在 SUSE Linux Enterprise Server 中執行的 Apache 做好準備。此目錄中副檔名為 .conf 的所有檔案,都會自動包含至組態中。這個目錄會提供虛擬主機的基本樣板 (vhost.template,或是適用於提供 SSL 支援之虛擬主機的 vhost-ssl.template)。

提示: 永遠要建立虛擬主機組態

建議您務必要建立虛擬主機組態檔案,即使網頁伺服器只代管一個網域。建立此檔案時,您不但可以將網域特定組態存放在一個檔案中,還可以隨時恢復工作環境的基本組態 (只需簡單地移動、刪除或重新命名虛擬主機的組態檔案即可)。同樣地,您應該也要分別為每個虛擬主機建立組態。

<VirtualHost></VirtualHost> 區塊包含要套用到特定網域的資訊。當 Apache 接收到來自定義的虛擬主機的用戶端要求時,就會使用本節所包含的指示詞。幾乎所有指示詞都可以用於虛擬主機網路位置。如需更多有關 Apache 組態指示詞的詳細資訊,請參閱http://httpd.apache.org/docs/2.2/mod/quickreference.html

以名稱為基礎的虛擬主機

使用以名稱為基礎的虛擬主機時,每個 IP 位址可以為數個網站提供服務。Apache 會使用用戶端所傳送之 HTTP 標頭中的主機欄位,將要求連接到符合其中一個虛擬主機宣告的 ServerName 項目。如果沒有找到相符的 ServerName,就會預設使用第一個指定的虛擬主機。

NameVirtualHost 指示詞會通知 Apache,要在哪個 IP 位址及哪個連接埠 (選擇性) 上傾聽來自 HTTP 標頭中包含網域名稱的用戶端的要求。這個選項會設定在組態檔案 /etc/apache2/listen.conf

第一個引數可以是完全合格的網域名稱 (Fully Qualified Domain Name),但是建議最好使用 IP 位址。第二個引數是連接埠,此引數是可選的。根據預設會使用連接埠 80,而且可以透過 Listen 指示詞設定。

IP 位址和連接埠號碼都可以使用萬用字元 *,來接收所有介面上的要求。IPv6 位址必須包在方括號中。

範例 27-1 以名稱為基礎的 VirtualHost 項目變化

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.3.100:80
NameVirtualHost 192.168.3.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:364::]:80

開啟的 VirtualHost 標籤會將前面經由 NameVirtualHost 宣告的 IP 位址 (或完全合格的網域名稱) 當作以名稱為基礎之虛擬主機的組態引數。先前使用 NameVirtualHost 指示詞宣告的連接埠號碼屬於選擇性。

允許使用萬用字元 * 做為 IP 位址的替代符號。此語法只適用於在 NameVirtualHost * 中結合使用萬用字元的情形。如果是使用 IPv6 位址,該位址就必須用方括號包住。

範例 27-2 以名稱為基礎的 VirtualHost 指示詞

<VirtualHost 192.168.3.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.3.100>
  ...
</VirtualHost>

<VirtualHost *:80>
  ...
</VirtualHost>

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:364::]>
  ...
</VirtualHost>
以 IP 為基礎的虛擬主機

此虛擬主機組態替代方法需要為一台機器設定多個 IP。一個 Apache 例項可裝載多個網域,每個網域都會指定不同的 IP。

實體伺服器必須為每部以 IP 為基礎的虛擬主機設定一個 IP 位址。當該電腦沒有安裝多張網路卡時,也可以使用虛擬網路介面 (IP 別名)。

下列範例中,Apache 正執行於 IP 為 192.168.3.100 的電腦上,並另外在 IP 192.168.3.101192.168.3.102 上裝載了兩個網域。每部虛擬伺服器都必須具備個別的 VirtualHost 區塊。

範例 27-3 以 IP 為基礎的 VirtualHost 指示詞

<VirtualHost 192.168.3.101>
  ...
</VirtualHost>

<VirtualHost 192.168.3.102>
  ...
</VirtualHost>

這裡出現的 VirtualHost 指示詞僅指定給了除 192.168.3.100 以外的其他介面。如果 192.168.3.100 也有設定 Listen 指示詞,這時就必須建立另一個以 IP 為基礎的虛擬主機,向該介面回應 HTTP 要求,否則將套用預設伺服器組態 (/etc/apache2/default-server.conf) 中的指示詞。

基本虛擬主機組態

每個虛擬主機組態中至少要出現下列指示詞,才能設定虛擬主機。如需了解更多選項的詳細資訊,請參閱 /etc/apache2/vhosts.d/vhost.template

ServerName

完整網域名稱,其下是應該要建立位址的主機。

DocumentRoot

目錄路徑,Apache 會從此路徑為此主機提供檔案。基於安全性考量,存取整個檔案系統是預設禁止的動作,所以您必須明確解除鎖定這個位在 Directory 容器中的目錄。

ServerAdmin

伺服器管理員的電子郵件地址. 這個地址可顯示在 Apache 建立的錯誤頁面 (舉例說明)。

ErrorLog

此虛擬主機的錯誤記錄檔案。雖然沒必要為每個虛擬主機分別建立錯誤記錄檔案,但是多數人會這樣做,以便更加容易地進行除錯。/var/log/apache2/ 是 Apache 保存記錄檔案的預設目錄。

CustomLog

此虛擬主機的存取記錄檔案。雖然沒必要為每個虛擬主機分別建立存取記錄檔案,但是多數人會這樣做,以便分別為每個主機分析存取統計資料。/var/log/apache2/ 是 Apache 保存記錄檔案的預設目錄。

正如前面所述,存取整個檔案系統已因安全性考量而預設為禁止動作。因此,請將 Apache 要處理之檔案所在的目錄明確解除鎖定 — 例如 DocumentRoot

<Directory "/srv/www/www.example.com/htdocs">
  Order allow,deny
  Allow from all
</Directory>

此完整組態看起來如下:

範例 27-4 基本 VirtualHost 組態

<VirtualHost 192.168.3.100>
  ServerName www.example.com;
  DocumentRoot /srv/www/www.example.com/htdocs
  ServerAdmin webmaster@example.com
  ErrorLog /var/log/apache2/www.example.com_log
  CustomLog /var/log/apache2/www.example.com-access_log common
  <Directory "/srv/www/www.example.com/htdocs">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

27.2.2 使用 YaST 設定 Apache

若要使用 YaST 來設定您的網頁伺服器,請啟動 YaST 並依序選取網路服務 > > HTTP 伺服器。第一次啟動模組時,HTTP 伺服器精靈會啟動,提示您如何決定有關伺服器管理的一些基本設定。完成精靈之後,每當您呼叫 HTTP 伺服器模組時,就會啟動HTTP 伺服器組態中介紹的對話方塊。

HTTP 伺服器精靈

HTTP 伺服器精靈包含有五個步驟。在最後一個步驟的對話方塊中,您可以進入進階組態模式以進行更多特定的設定。

網路設備選擇

在此,您可以指定 Apache 用來傾聽內送要求的網路介面和連接埠。您可以選取任何現有網路介面及其 IP 位址的組合。若連接埠 (連接埠隸屬以下三種:已知埠、註冊埠和動態或私人埠) 不供其他服務使用,則皆可供您使用。預設設定為傾聽所有在連接埠 80 上的網路介面 (IP 位址)。

核取開啟選取埠的防火牆選項,可開啟防火牆中網頁伺服器傾聽的連接埠。若要使網頁伺服器在網路 (包括 LAN、WAN 或公用網際網路) 上為可用狀態,請核取此選項。只有在測試時,並且此時不須由外部網路存取 Web 伺服器,才可以關閉該連接埠。如果您有多個網路介面,請按一下防火牆細節...以指定應在何介面上開啟連接埠。

按一下 下一步繼續設定。

模組

模組組態選項可以用來啟用、或停用 Web 伺服器應支援的程序檔語言。如需有關啟用或停用其他模組的詳細資訊,請參閱伺服器模組。按一下下一步,繼續進行下一個對話方塊。

預設主機

此選項與預設網頁伺服器相關。正如虛擬主機組態內容所述,Apache 可以在一部實體機器上提供多個虛擬主機。組態檔案中第一個宣告的虛擬主機通常會被視為預設主機。每部虛擬主機都會繼承預設主機的組態。

若要編輯主機設定 (又稱為指示詞),請在表格中選擇適當項目,然後按一下編輯。若要新增指示詞,請按一下新增。若要刪除指示詞,請選取該指示詞,然後按一下刪除

圖 27-1 HTTP 伺服器精靈:預設主機

這是伺服器預設值的清單:

Document Root

目錄路徑,Apache 會從此路徑為此主機提供檔案。/srv/www/htdocs 是預設位置。

Alias

在配合 Alias 指示詞時,URL 可以映射到實體檔案系統位置。這表示某個路徑即使不在檔案系統的 Document Root 中,仍可藉由該路徑別名的 URL 進行存取。

預設的 SUSE Linux Enterprise Server Alias /icons 指向 /usr/share/apache2/icons,做為目錄索引檢視中顯示的 Apache 圖示。

ScriptAlias

功能相似於 Alias 指示詞,ScriptAlias 指示詞可以將 URL 映射到檔案系統位置。兩者差別在於 ScriptAlias 可以將目標目錄指定作為 CGI 位置,表示該 CGI 程序檔必須在該位置執行。

Directory

使用 Directory 設定時,您可以限制只會套用到特定目錄的組態選項群組。

在此可以設定 /usr/share/apache2/icons/srv/www/cgi-bin 等目錄的存取和顯示選項。其中預設值應該不需要進行改變。

Include

使用 Include 可以指定其他的組態檔案。預先設定的 Include 指示詞有兩個︰/etc/apache2/conf.d/ 為外部模組隨附之組態檔所在的目錄。使用此指示詞時,此目錄中所有以 .conf 結尾的檔案都會包含在內。使用第二個指示詞時,/etc/apache2/conf.d/apache2-manual.conf,即 apache2-manual 組態檔將包含在內。

Server Name

這個項目可以指定用戶端用來聯絡網頁伺服器的預設 URL。請使用完全合格的網域名稱 (FQDN) 來連接 http://FQDN/ 的網頁伺服器或其 IP 位址。您不能在此選擇任意名稱 — 採用此名稱的伺服器必須是「已知」的。

Server Administrator E-Mail

伺服器管理員的電子郵件地址. 這個地址可顯示在 Apache 建立的錯誤頁面 (舉例說明)。

完成設定預設主機步驟後,請按一下下一步,繼續下一個組態步驟。

虛擬主機

在此步驟中,精靈會顯示已完成設定之虛擬主機的清單 (請參閱虛擬主機組態)。如果在啟動 YaST HTTP 精靈之前尚未進行手動變更,則不會顯示虛擬主機。

若要新增主機,請按一下新增開啟對應的對話方塊,並在其中輸入主機的基本資訊,例如伺服器名稱伺服器內容根目錄(DocumentRoot) 和管理員電子郵件伺服器解析可用來決定主機的識別方式 (以名稱為基礎或是以 IP 為基礎)。透過變更虛擬主機 ID指定名稱或 IP 位址

按一下下一步,繼續進入虛擬主機組態對話方塊的第二部分。

在虛擬主機組態對話方塊的第二部分中,您可以指定是否要啟用 CGI 程序檔、以及這些程序檔要使用哪個目錄。您也可以在此啟用 SSL。如果執行了這個動作,您就必須同時指定憑證的路徑。如需有關 SSL 和憑證的詳細資訊,請參閱節 27.6.2, 設定提供 SSL 的 Apache。使用目錄索引選項時,您可以指定當用戶端要求目錄 (依預設是指 index.html) 時要顯示哪個檔案。如果您要變更這個設定,請新增一個或多個檔名 (以空格分隔)。使用啟用公用 HTML時,使用者公用目錄 (~使用者/public_html/) 的內容就可由伺服器公開於 http://www.example.com/~使用者上。

重要: 建立虛擬主機

您不能在此隨意新增虛擬主機。如果使用以名稱為基礎的虛擬主機,就必須在網路上解析每部主機名稱。如果是使用以 IP 為基礎的虛擬主機,每個可用 IP 位址就只能指派一部主機。

摘要

這是精靈的最後一個步驟。您可以在此處決定 Apache 伺服器啟動的方式和時間:開機時啟動或手動啟動。同時可檢視目前已完成之組態的簡短摘要。如果您接受目前設定,請按一下完成以完成組態設定。如果要變更某些設定,請按上一步,直到出現您需要的對話方塊。按一下 HTTP 伺服器進階組態便可開啟HTTP 伺服器組態所介紹的對話方塊。

圖 27-2 HTTP 伺服器精靈:摘要

HTTP 伺服器組態

HTTP 伺服器組態對話方塊可提供比精靈更多的組態調整 (精靈 只會在第一次設定網頁伺服器時執行)。其中包含下列要介紹的四個索引標籤。在此變更的任何組態選項都無法立即生效 — 您必須先按一下完成進行確認之後,它們才會生效。按一下中止,系統將不變更組態模組,並會捨棄您的變更。

傾聽連接埠和位址

HTTP 服務中,選取執行 (啟用) 或停止 (停用) Apache。在傾聽埠中,新增編輯刪除可透過其使用伺服器的位址和連接埠。預設設定是傾聽在連接埠 80 上的所有介面。您應核取開啟已選埠上的防火牆,否則就不能從外部連接網頁伺服器。只有在測試時,並且此時不須由外部網路存取 Web 伺服器,才可以關閉該連接埠。如果您有多個網路介面,請按一下防火牆細節...以指定應在何介面上開啟連接埠。

使用記錄檔案時,可檢視存取記錄或錯誤記錄。測試組態時此選項非常有用。記錄檔案會在單獨的視窗中開啟,在此您還可以重新啟動或重新載入網頁伺服器 (如需詳細資訊,請參閱節 27.3, 啟動和停止 Apache)。這些指令會立即生效。

圖 27-3 HTTP 伺服器組態:傾聽連接埠和位址

伺服器模組

您可以按一下切換狀態,變更 Apache2 模組的狀態 (啟用或停用)。按一下新增模組,可新增已經安裝但是未列出的新模組。若要更進一步認識模組,請參閱節 27.4, 安裝、啟用和設定模組

圖 27-4 HTTP 伺服器組態:伺服器模組

主要主機

這些對話方塊相同於前面已介紹過的對話方塊。請參閱預設主機虛擬主機