Apache HTTP ServerApache 常用路徑Virtual Host 路徑:/etc/apache/vhosts.d Modules 設定檔:/etc/sysconfig/apache2 Apache 常用小知識Apache 的主要設定檔是 httpd.conf ,其他的設定檔都是被 Include 進來的; Apache 的首頁目錄以 DocumentRoot 決定,首頁檔案則以 DirectoryIndex 決定; Apache 可以透過虛擬主機的設定以指定不同主機名稱到不同的 DocumentRoot 下; Apache 是多執行緒的軟體,可以啟動多個程序來負責 WWW。主要的模組有 prefork 及 worker, 最大可連線的數量以 MaxClients 來決定。 若要正確的讓瀏覽器顯示網頁的編碼格式,最好在網頁上宣告語系,並將 Apache 的設定檔 httpd.conf 內的 AddDefaultCharset 設定值取消; 在 Apache 可瀏覽的目錄權限設定上 (Options 參數),最好將 Indexes拿掉; 透過 AllowOverride 與 .htaccess 可讓使用者在自己管理的目錄下制訂自己的風格; Apache 本身提供一個 apachectl (RedHat/CentOS) / rcapache (SUSE等) 的 script 讓使用者得以快速管理其 apache 的服務; HTTP 使用的是明碼傳送,目前 WWW 可利用 SSL 等機制來進行資料加密的傳輸。資料如果比較重要時,務必以 SSL 或者是保護目錄來保護。 Apache2 Server 的啟用/重啟對於不同的 Linux Distributions,Apache 啟用的方式略有不同,主要有三種(apachectl, httpd, apache2):
1.
Shell>> /usr/local/apache2/bin/apachectl -k start (Red Hat) 2.
Shell>> /usr/local/apache2/bin/httpd -k start (when you don't have apachectl in Red Hat) 3.
Shell>> /etc/init.d/apache2 start (Ubuntu, Debian, SUSE) apachetcl和httpd的路徑可能因安裝方式而有不同,請注意。但在某些情況下不用輸入路徑。 以下介紹「壓力測試工具:ApacheBench(ab, ab2)」與「虛擬網頁伺服器 (Name-based Virtual Host)」。 壓力測試工具:ApacheBench(ab, ab2)簡易說明: ApacheBench 的使用很簡單,基本上有裝 Apahce 就會有,直接以 ab 或 ab2 作為指令使用就可以了。(注意有些 Linux 版本的指令是 ab2) 情況設想:公司(或指導教授)要測試網站能否達到「首頁同時1,000人連線,平圴反應時間 5 秒以下。」 此時使用以下指令即可: Shell> ab -k -c 1000 -n 1000 http://yoursite.com 參數: -k 是 HTTP 2.0 的 Keep Alive,在短時間的測試下 connection 有無 Keep Alive 差別不是很大。 -c 是指 concurrent,顧名思義其後的數字是「同時連線」的 connection 數。 -n 是指整個 test 的 request number,此處設為和 -c 一樣是指同時1000個人連線測完一次就中止。 底下是範例結果,「粗黑體」的數字 (1687 ms) 就是「平均反應時間」。這邊是 1.687 秒的意思。基本上如果是「純 HTML」的頁面,伺服器又不會太爛,concurrency 1000 的反應時間都不會太久(也許就像此處的 2 秒以下)。 當然,要注意「同時1000個連線」這件事理論上是很難模擬的,此處只是「盡力」。1~2 秒間能送出 1,000 個 requests 就很厲害了。
Connection Times (ms) min mean[+/-sd] median max Connect: 353 375 16.1 386 391 Processing: 1240 1312 52.1 1339 1369 Waiting: 449 472 16.2 476 499 Total: 1593 1687 67.7 1730 1756 在同一個 IP (同一個主機)上架多個 Domain Name 的網站 (Name-based Virtual Host)「多個網站或 Domain 架在同一個 IP 上」在 Apache 的術語中稱作「虛擬網頁伺服器」(Name-based Virtual Host)。另外還有 IP-based Virtual Host,不過比較不常用,Name-based Virtual Host 也才是本文的介紹主題 (Name-based 顧名思義即指 Domain Name)。 作法很簡單,若假設 Apache Server 已經正常地運作了,只需修改 httpd.conf 檔案中間的幾個部份。 以下以將 mepopedia.com 與 www.mepo.cc 二個不同的網站架在同一個 Apache Server 底下的設定作為例子。 --
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/mepopedia ServerName mepopedia.com # Other directives here / 可於此加入其他所需目錄,例如 CGI Script 的目錄 </VirtualHost> <VirtualHost *:80> DocumentRoot /www/mepo ServerName www.mepo.cc # Other directives here </VirtualHost> -- 若進來的 HTTP Request 的 ServerName 不是上述二者,以置於前的 mepopedia.com 為主。 另請注意:不同的 Linux Distribution 的 Apahce 設定方式略有不同,例如 openSUSE 的設定主要是在 /etc/apache2/default-server.conf(需在檔中(最後)加入 NameVirtualHost *:80), 同時 Virtual Host 的設定是在 /etc/apache2/vhosts.d/*.conf (需在該目錄新增 .conf 檔,加上上述之 Script)。因此,不同的 Linux Distribution 請注意其中可能的差別,但其原理相同。 不同的 Domain Name 指向同一個網站承上主題,如果是「同一個網站(網站目錄)使用不同的 Domain Name」,則使用 ServerAlias 即可。例如: DocumentRoot /www ServerName mepopedia.com ServerAlias www.mepo.cc 如此 mepopedia.com 和 www.mepo.cc 就會都讀取 /www 目錄底下的網頁,成為同一個網站。 ReferecesApache2 的啟用/重啟:http://mepopedia.com/forum/read.php?146,922 ApacheBench 官方使用說明:http://httpd.apache.org/docs/2.2/programs/ab.html VirtualHost Examples: http://httpd.apache.org/docs/2.0/vhosts/examples.html Name-based Virtual Host Support: http://httpd.apache.org/docs/2.0/vhosts/name-based.html ServerAlias: Apache - Alias Configuration with ServerAlias Apache HTTP Server的論壇文章 [ 發表文章 ] [ 瀏覽文章 ] Apache HTTP Server的分類地圖 Developed by MEPO Humanity Technology - http://mepo.cc
|