Apache HTTP Server

      

Apache 常用路徑

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.comwww.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.comwww.mepo.cc 就會都讀取 /www 目錄底下的網頁,成為同一個網站。

Refereces

ApacheBench 官方使用說明:http://httpd.apache.org/docs/2.2/programs/ab.html

Apache HTTP Server的論壇文章
[ 發表文章 ]
Backup and Transfer a LAMP(LAPP) System: Linux/Apache2/PostgreSQL/PHP mepoadm2013/08/09
Apache URL Rewriting: 讓網址簡化改為靜態(HTML)的設定(httpd.conf) Hsinping2010/11/19
Re: Fedora R12 + IE = "無法顯示 XML 網頁" hjchen2010/08/11
Re: Fedora R12 + IE = "無法顯示 XML 網頁" HP2010/08/10
Fedora R12 + IE = "無法顯示 XML 網頁" hjchen2010/08/10
提升 Apache (prefork) 負載量:修改設定與效能限制 (performance tuning) HP2010/04/24
建立HTTPS (SSL) 網站的方法:1. 簽發憑證(CA)、2. 修改 httpd.conf 設定 HP2010/04/08
Virtual Host: 如何在同一個 IP (伺服器)上以不同的 Domain Name 架設多個網站 HP2009/10/20
[HOW TO] Start, Restart, and Stop an Apache Web Server (3 Ways for Red Hat, Ubuntu, Debian, and SUSE) HP2009/07/11
有關 Apache HTTP Server 系統限制與設定的討論 HP2009/03/04
Apache 內建的Web壓力測試工具 ApacheBench (ab, ab2) HP2009/03/03
[ 瀏覽文章 ]

Apache HTTP Server的分類地圖


Views: 9,930