Apache是使用范圍最廣的Web服務器工具套件,這里我們將詳細介紹如何在Red?Hat?Linux?9.0環境里安裝、啟動和配置Apache服務器。?

  1.安裝Apache服務器?
  在安裝Red?Hat?Linux?9.0時,會提示是否安裝Apache服務器。如果不能確定是否已經安裝,可以在終端命令窗口輸入以下命令:?

  [root@ahpeng?root]?rpm?-qa?|?grep?httpd?

  如果結果顯示為“httpd-2.0.40-21”,則說明系統已經安裝Apache服務器。?

  如果安裝Red?Hat?Linux?9.0時沒有選擇Apache服務器,則可以在圖形環境下單擊“主菜單→系統設置→添加刪除應用程序” 菜單項,在出現的“軟件包管理”對話框里確保選中“萬維網服務器”選項,然后單擊“更新”按鈕,按照屏幕提示插入安裝光盤即可開始安裝。?

  另外,你也可以直接插入第1張安裝光盤,定位到/RedHat/RPMS下的httpd-2.0.40-21.i386.rpm安裝包,然后在終端命令窗口運行以下命令即可開始安裝進程:?

  [root@ahpeng?RPMS]?rpm?-ivh?httpd-2.0.40-21.i386.rpm?

  安裝好Apache服務器,可以在終端命令窗口運行以下命令來啟動Apache服務:?

  [root@ahpeng?root]?/etc/rc.d/init.d/httpd?start?

  重新啟動Apache服務:?

  [root@ahpeng?root]?/etc/rc.d/init.d/httpd?restart?

  關閉Apache服務:?

 ?。踨oot@ahpeng?root]?/etc/rc.d/init.d/httpd?stop?

  確認Apache服務已經啟動后,我們可以在Web瀏覽器里輸入以下地址,如果可以看到默認的Apache首頁,則說明Apache服務器工作正常。?

  Htpp://WebServerAddress? (http;//192.168.1.XX/)

  此處的WebServerAddress指代Web服務器的IP地址或者域名。即是說WebServerAddress應該用實際的Web服務器的IP地址或者域名來代替。?

  2.配置httpd.conf文件?
  在早期Apache服務器版本里,其配置內容分散在httpd.conf、srm.conf、access.conf三個文件里。而新版本的 Apache服務器,則統一在httpd.conf里進行配置。對于默認安裝的Red?Hat?Linux來說,該配置文件位于 /etc/httpd/conf目錄下,如果安裝的是tar.gz版本,則該文件位于/usr/local/apache/conf目錄。?

  利用httpd.conf,我們可以對Apache服務器進行全局配置、主要或預設服務器的參數定義、虛擬主機的設置。httpd.conf是一個文本文件,我們可以用Vi、Kate等文本編輯工具進行修改。通過分析該httpd.conf配置文件,我們不難發現:?

  該配置文件分為若干個小節,例如Section?1:?Global?Environment(第一小節:全局環境);Section?2:?'Main'?server?configuration(第二小節:主服務器配置)等。?

  每個小節都有若干個配置參數,其表達形式為“配置參數名稱?具體值”,每個配置參數都有詳盡的英文解釋(用#號引導每一個注釋行)。?

  為了幫助大家理解,這里給出httpd.conf的最常用配置參數:?

  (1)DocumentRoot?

  該參數指定Apache服務器存放網頁的路徑,默認所有要求提供HTTP服務的連接,都以這個目錄為主目錄。以下為Apache的默認值:?

  DocumentRoot?"/var/www/html"?

(2)MaxClients?

  該參數限制Apache所能提供服務的最高數值,即同一時間連接的數目不能超過這個數值。一旦連接數目達到這個限制,Apache服務器則不再為別的連接提供服務,以免系統性能大幅度下降。本例假設最大連接數是150個:?

  MaxClients?150?

  (3)Port?

  該參數用來指定Apache服務器的監聽端口。一般來說,標準的HTTP服務默認端口號是80,一般不要更改這個數值。本例為80端口:?

  Port?80?

  (4)ServerName?

  該參數使得用戶可以自行設置主機名,以取代安裝Apache服務器主機的真實名字。此名字必須是已經在DNS服務器上注冊的主機名。如果當前主機沒有已注冊的名字,也可以指定IP地址。本例將服務器名設為Peter.vicp.net:?

  ServerName?Peter.vicp.net?

  (5)MaxKeepAliveRequests?

  當使用保持連接(Persistent?Connection)功能時,可以使用本參數決定每次連接所能發出的要求數目的上限。如果此數值為 0,則表示沒有限制。建議盡可能使用較高的數值,以充分發揮Apache的高性能,本例設置每次連接所能發出的要求數目上限為100:?

  MaxKeepAliveRequests?100?

  (6)MaxRequestsPerChild?

  該參數限制每個子進程(Child?Process)在結束前所能處理的請求數目,一旦達到該數目,這個子進程就會被中止,以避免長時間占據Apache(或者Apache服務器所采用的函數庫),防止造成內存或者其他系統資源的超負荷。?

  需要注意的是,該參數的數值并不包括保持連接所發出的請求數目。舉例說明,如果某個子進程負責某一個請求,該請求隨后帶來保持連接功能所需的10個請求,這時候對于該參數而言,Apache服務器會認為這個子進程只處理了1個要求,而非11個要求。?

  以下設置最多可以處理10個要求:?

  MaxRequestsPerChild?10?

  (7)MaxSpareServers?和MinSpareServers?

  提供Web服務的HTTP守護進程,其數目會隨連接的數目而變動。Apache服務器采用動態調整的方法,維持足夠的HTTP守護進程數目,以處理目前的負載,也就是同時保持一定的空閑HTTP守護進程來等候新的連接請求。?

  Apache會定期檢查有多少個HTTP守護進程正在等待連接請求,如果空閑的HTTP守護進程多于MaxSpareServers參數指定 的值,則Apache會終止某些空閑進程;如果空閑HTTP守護進程少于MinSpareServers參數指定的值,則Apache會產生新的HTTP 守護進程。本例將最高空閑守護進程設置為20個,將最低的空閑守護進程設置為5個:?

  MaxSpareServers?20?

  MinSpareServers?5?

  當然這只是Apache的一些基本設置項,大家可以根據自己的實際情況加以靈活的修改,以充分發揮Apache的潛能。如果修改配置文件之后沒能立即生效,可以重啟Apache服務。?

  注意:修改之前一定要先備份!?

  3.圖形化配置界面?
  圖形化配置直觀、簡單,足夠應付Apache服務器的日常管理維護工作。我們可以通過單擊“主菜單→系統設置→服務器設置→HTTP服務器” 菜單項,或者直接在“運行命令”對話框里輸入“apacheconf”命令并回車,來訪問“Apache配置”對話框??梢钥吹皆撆渲脤υ捒蚬灿?個標簽 頁。?

  (1)“主”標簽頁?

  在“服務器名”框中可以輸入服務器的名稱,等同于httpd.conf文件里的“ServerName”字段?!熬W主電子郵件地址”框中可以 輸入管理員的郵件地址,等同于httpd.conf文件里的“ServerAdmin”字段。單擊“可用地址”選項組中的“添加”(或者“編輯”)按鈕, 我們可以添加或者修改服務器的IP地址和端口。?

  (2)“虛擬主機”標簽頁?

  所謂的虛擬主機服務就是指將一臺計算機虛擬成多臺Web服務器。利用Apache服務器提供的“虛擬主機”服務,我們可以利用一臺計算機提供多個Web服務。?

  用Apache設置虛擬主機服務通常可以采用兩種方案:基于IP地址的虛擬主機和基于名字的虛擬主機。基于IP地址的虛擬主機的實現方法有一個嚴重的不足,每增加一個虛擬主機,就必須增加一個IP地址。所以這里介紹如何創建基于名字的虛擬主機。?

  假設一臺Apache服務器的IP地址是210.79.81.212,主機名稱為www.companyname.net,同時它擁有兩個別 名:sales.companyname.net、marketing.companyname.net。雖然這3個網站的IP地址相同,都指向 210.79.81.212,但是由于架設了基于名字的虛擬主機,所以可以指向不同的網頁。?

  設置時,請單擊“虛擬主機”標簽頁上的“添加”按鈕,在打開的配置對話框的“主機信息”下拉列表框里選中“基于名稱的虛擬主機”選項,然后輸入合適的數據IP地址、主機名稱等,記住,還要添加合適的別名,如圖2所示。?

 
[root@test root]# cd /usr/local/apache2/conf
[root@test root]# vi httpd.conf

ServerRoot "/usr/local/apache2"
# 最上層的 Apache 目錄!我們安裝的時候,以這個目錄來安裝的,他就是 ServerRoot 啰!
# 其實,也就是說,如果底下以『相對路徑』的方式寫的,那么就是相對于這個路徑!
# 當然,寫絕對路徑就沒有任何影響啦!

PidFile logs/httpd.pid
# 不要跟我說不曉得 PID 是什么?查看一下 Linux 基礎的資源管理去!
# 這個項目在設定 Apache 的 PID 記錄文件!可以用在重新讀取設定文件等等的功能!
# 如上面所言,因為寫了相對路徑,所以實際的目錄為 /usr/local/apache2/logs/httpd.pid
# 通常我也喜歡將他移動到 /var/log/httpd 底下去,統一管理較方便!
# 我喜歡將這行改變為PidFile /var/log/httpd/httpd.pid

Timeout 300?
# 這是用來設定連接到你這部主機的客戶端,當超過 300 秒客戶端還沒有?
# 辦法連上你的主機時,就予以斷線處理!?

KeepAlive On
# 是否允許持續性聯機,亦即一個聯機有多個要求!這里通常設定為 On 比較好,
# 就鳥哥的經驗來看,設定為 Off 似乎會產生很多 Time_Wait 的封包!粉怪!

MaxKeepAliveRequests 100
# 在持續性的聯機當中,最多允許的聯機數目!如果不要限制,可以設定為 0 ,
# 當然,官方網站上面說,要有較佳的效能,最好設定大一點,所以我都將他改為 200 以上。

KeepAliveTimeout 15
# 同一個聯機的 Client 下次的需求沒有在 15 秒內送出,那么該聯機會被視同斷線喔!

<IfModule prefork.c>
StartServers???????? 5
MinSpareServers???? 5
MaxSpareServers??? 10
MaxClients??????? 150
MaxRequestsPerChild? 0
</IfModule>
<IfModule worker.c>
StartServers???????? 2
MaxClients???????? 150
MinSpareThreads???? 25
MaxSpareThreads???? 75
ThreadsPerChild???? 25
MaxRequestsPerChild? 0
</IfModule>
# 這兩段主要是與系統的效能較有關系!如果不需要效能設定的話,那么使用默認值就很夠了!
# 1. MinSpareServers 與 MaxSpareServers 是開啟 httpd 服務數目的地方,當你執行
#??? /usr/local/apache/bin/apachectl start 之后, 在 shell 下執行?
#??? ps -aux|grep http 就可以看到 http 的數量, 通常這與你的 RAM 有關。
#??? 如果是小站的話,可以設小一點, 例如最小設 3 最大設 5 即可!
# 2. 而 StartServers 則設與 Min 相同即可!
# 3. 至于 MaxClients 則可以設小一點,因為設定太大很耗系統資源,
#??? 而太小則無法讓很多人連上來!所以可以設成例如 100

Listen 80
# 設定監聽的 port ,如果你要更改 WWW 的 port number ,可以在這里修改,例如 8080

User nobody
Group nogroup
# 這個是設定 apache 所產生的,就是剛剛我們上頭所設定的 MinSpareServers ,之后會產生
# 一些 process ,那么這些 processes 的擁有者與擁有群組 ( owerner & group ) 是誰!
# 這個與未來的『 PID 權限及 Linux 權限設定』有關!通常如果是 RPM 安裝的話,
# 大致上都會是 apache ,而如果是 Tarball 安裝,通常是 nobody 與 nogroup 吧!
# 是否有該 user 還要查看 /etc/passwd 及 /etc/group 喔!不能設錯!否則無法啟動 apache

ServerAdmin root@localhost
# 這個是設定你的機器的 httpd 管理員賬號!設成你的e-mail吧!例如我都設定為:
# 我的機器上:ServerAdmin? test@localhost

#ServerName new.host.name:80
# 設定主機名稱的地方,若有需要的話才設定,否則可以將他 mark 掉也沒關系!
# 但如果你需要讓 Apache 自動幫你將其它名稱連過來的主機名稱修改時(下一個設定),
# 那么這里就需要填寫啰!此外的此外,需要了解的是,有時,例如 Openlinux server 3.1.1?
# 如果沒有設定這個的話,那么你的 WWW 將無法啟動!另外,如果設定錯誤,同樣無法啟用!
# 因此,沒有特別要求的話,那么這個就暫時不要設定吧!免得自找麻煩~

UseCanonicalName Off
# 主機的別名啦!例如你的主機有三個名稱時,那么這個 Off 的設定,會讓 Client 端
# 可以分別使用三個名稱顯示在他們的瀏覽器上面,如果是 On 的話,那么將以上面的
# ServerName 內容來顯示在他們的瀏覽器上面,而不是原來他們寫的主機名稱喔!
# 說是這樣說,但是我試不出來這個功能~~ @_@

AddDefaultCharset ISO-8859-1
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
# Apache 的預設顯示語言編碼!請特別留意,因為這里的設定并不適合臺灣的繁體中文,
# 呵呵!所以底下請『務必』修改成這樣!否則您的網頁總是無法顯示中文喔!
# 這兩行大概在 httpd.conf 的 750 ~ 800 行之間!請以搜尋的方式找一下!
AddDefaultCharset Big5
LanguagePriority tw en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv

HostnameLookups Off
# 在記錄檔案的時候,登錄檔的內容,來捉取我們數據的主機是以 IP 還是主機名稱來顯示?
# 當然是 IP 來顯示比較快喔!所以,這里通常設定為 Off ,不需要轉譯 IP 成為主機名!

 
  • 目錄路徑設定:

  •  
    [root@test root]# cd /usr/local/apache2/conf
    [root@test root]# vi httpd.conf

    DocumentRoot "/usr/local/apache2/htdocs"
    # 將 /usr/local/apache2/htdocs 設定為 Apache 的根目錄!
    # 這個就是主機的主網頁啦!你可以將他移到任何你高興的地方!
    # 不過,比較重要的限制是,最好這個目錄底下不要包含重要的信息,例如你不要將根目錄 /?
    # 設定為這個 DocumentRoot 吧! ^_^ 否則你的主機下的任何數據,不就任何人都可以使用?
    # 瀏覽器來查看?豈不是很危險!

    <Directory />
    ??? Options FollowSymLinks
    ??? AllowOverride None
    </Directory>
    # 這個是設定根目錄,亦即是 /usr/local/apache2/htdocs 這咚咚的屬性啦!
    # 使用 Options 來設定相關屬性,相關的屬性還有底下幾個ㄋㄟ!
    ExecCGI  :使該目錄底下的 CGI 具有可以執行的能力!重要項目!如果您要您的
           某個目錄可以執行 CGI 的程序時,那么請將該目錄多加 ExecCGI 這個屬性!
    FollowSymLinks?。鹤屇? link 的目錄或檔案,雖然在其它的目錄下,仍然可以連接出去!
             舉個例子來說,目前我的主頁是 /usr/local/apache2/htdocs ,但我想
             連接到 /home/vbird/testing 底下,然而我又不想多加一個 directory?
             的設定值在 httpd.conf 內,那么我可以在 /usr/local/apache2/htdocs?
             使用 ln 連結一個名為 vbird 使他指向 /home/vbird/testing ,那么
             當我網址輸入 http://localhost/vbird 時,就可以到
             /home/vbird/testing 了!
             如果沒有設定這個屬性,那么就無法連接出去喔!
    Includes ?。涸? Server 端的工作可進行!
    Indexes   :如果在該目錄底下找不到 index.html 時,就顯示整個目錄下的文件名稱!
           粉危險吧! ^_^ 所以啰,盡量不要包含 Indexes 這個項目啦!
    MultiViews?。哼@個東西有點類似多國語言支持啦!你可在同一目錄下的同一個檔案,
           編寫多個不同語言的檔案,并且以一個 *.var 的檔案來規范不同編碼!
           有興趣的話,請自行參考自己的 /usr/local/apache2/htdpc/index.html.var
    All :全部的屬性都啟動啦!但是不包含 MultiViews !

    <Directory "/usr/local/apache2/htdocs">
    ??? Options Indexes FollowSymLinks
    ??? AllowOverride None
    ??? Order allow,deny
    ??? Allow from all
    </Directory>
    # 1. 這段主要在設定 / 的屬性啦!可以看到預設的情況中有 indexes 喔!所以趕緊將他拿掉
    # 2. 至于 AllowOverride 主要與認證網頁的設定有關啦!亦即 .htaccess 檔案!意思是說,
    #??? httpd.conf 在與 .htaccess 相同目錄下的設定中,哪些設定會用來取代 .htaccess 的
    #??? 設定內容?當然啦, .htaccess 這個檔案設定較為靈活,所以當然設定為 None 啰!
    #??? 仍然是以 .htaccess 的設定為主啦!
    # 3. Order allow,deny 注意喔,那個 allow,deny 中間是以 , 隔開,并沒有空格!不要
    #??? 設定錯了!這個東西與底下的 Allow 在設定『權限』的啦!我們后面會再詳談!

    UserDir public_html
    # 這玩意兒在設定個人家目錄下的首頁在何處啦!這里預設是 public_html ,舉例來說,
    # 我的家目錄是 /home/test ,那么這個使用者的首頁目錄在 /home/test/public_html !
    # 當然,這個目錄是可變的!就看你要怎么設定啰! ^_^
    # 例如很多人都喜歡將這個目錄設定為 www ㄋㄟ!呵呵!也順道去修改一下 /etc/skel 的內容

    DirectoryIndex index.html index.html.var
    # 這個就是當我們輸入 http://192.168.1.2 時,那么 Apache 將會去搜尋該目錄底下的文件名!# 預設只有兩個,太少了!如果我們使用 php 之類的,哇!那可就糗了!所以,這里可以改成
    DirectoryIndex index.html index.htm index.php index.cgi index.php3 index.html.var
    # 如果還有喜歡的預設檔名,將他加進去吧!這就是首頁的網頁名稱啰! ^_^

    Alias /icons/ "/usr/local/apache2/icons/"
    <Directory "/usr/local/apache2/icons">
    ??? Options Indexes MultiViews
    ??? AllowOverride None
    ??? Order allow,deny
    ??? Allow from all
    </Directory>
    # Aliase 之設定主要也是在簡化一些繁復的連結內容啦!舉上面的例子來說,我們的 Apache
    # 根目錄在 /usr/local/apache2/htdocs 里面,那么輸入網址 http://localhost 則到該目錄
    # 在上面的設定中,則輸入 http://localhost/icons 會跑到 /usr/local/apache2/icons?
    # 的意思!如此一來,設定上較為簡便了!

    Alias /manual "/usr/local/apache2/manual"
    <Directory "/usr/local/apache2/manual">
    ??? Options Indexes FollowSymLinks MultiViews IncludesNoExec
    ??? AddOutputFilter Includes html
    ??? AllowOverride None
    ??? Order allow,deny
    ??? Allow from all
    </Directory>
    # 這個與上面的設定相同!所以,未來只要輸入 http://localhost/manual 即可到達自己的
    # 主機上面的說明文件喔!很簡易吧! ^_^

    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
    <Directory "/usr/local/apache2/cgi-bin">
    ??? AllowOverride None
    ??? Options None
    ??? Order allow,deny
    ??? Allow from all
    </Directory>
    # ScriptAlias 這部份則大概專屬于 CGI 之類的可執行程序吧!呵呵!要了解一下,
    # 我們預設都是將 http://localhost/cgi-bin 設定為可執行的 CGI 程序放置區!
    # 那么 CGI 程序要開放的權限有哪些!呵呵!就上面設定的啰!


?

  “Apache配置”對話框的其他兩個標簽頁的設置內容基本等同于前面所介紹的httpd.conf參數配置,這里就不再介紹了。