一、apache簡介:
1、Apache是最流行的web伺服器,它開放源代碼,支援挂平台應用(linux、Unix、windows)。
2、Apache的優點:
(1)功能強大,apache自帶了很多功能子產品,可根據要求編譯所需的子產品
(2)配置簡單,/usr/local/apache/conf/httpd.conf
(3)速度快,apache處理靜态頁面檔案效率高
(4)性能穩定,apache在高負荷請求下性能表現卓越
3、apache的缺點:
(1)隻支援靜态網頁,對于jsp、php等動态網頁不支援
(2)apache是以程序為基礎的結構,程序要比線程消耗更多的系統資源,不适合多處理器環境;是以在一個Apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。
二、apache安裝
tar zxvf httpd-2.2.9.tar.gz
cd http-2.2.9
./configure
--prefix=/usr/local/apache配置apache的安裝目錄
--enable-so 讓apache核心裝載DSO
--enable-modules=all将所有子產品編譯到httpd檔案中
--enable-mods-shared=all動态加載所有子產品
--enable-rewrite 使apache支援位址重寫
--enable-cgi 啟用cgi
--enable-expires添加檔案過期限制,緩存在用戶端有效時間内不會再去通路伺服器
--enable-headers 檔案頭資訊改寫,網頁壓縮功能需要
--enable-deflate網頁壓縮,可達40%,節省帶寬,但對cpu有一定壓力
make
make install
三、apache的目錄結構
1、bin:apache服務程式目錄(腳本)
2、lib:庫檔案目錄
3、conf:配置檔案目錄
4、logs:日志檔案目錄
5、htdocs:預設網頁根目錄
6、cgi-bin:預設cgi目錄
7、modules:動态加載子產品目錄
8、manual:apache使用文檔目錄
9、man:幫助文檔目錄
10、error:預設錯誤應答檔案目錄
11、include:頭檔案目錄
12、icons:apache圖示檔案目錄
四、apache配置檔案
1、/usr/local/apache/conf/httpd.conf
Apache主配置檔案,配置對整個apache生效
2、/usr/local/apache/bin/apachectl start/restart/stop
Apache管理腳本,它自動檢測httpd.conf的設定,配置錯誤會導緻啟動錯誤
3、/usr/local/apache/bin/httpd
httpd是一個啟動apache的二進制檔案
4、/usr/local/apache/modules/
Apache是子產品化的web伺服器,所有編譯的子產品都會放在此目錄,然後在httpd.conf檔案中指定加載的子產品和子產品的位置
5、/usr/local/apache/logs/access_log
Apache通路日志
6、/usr/local/apache/logs/error_log
Apache錯誤日志
7、/usr/local/apache/logs/httpd.pid
Apache守護程序号檔案
五、httpd.conf配置
1、全局變量
(1)ServerRoot "/usr/local/apache"
ServerRoot用于指定守護程序httpd的運作目錄
(2)PidFile logs/httpd.pid
PidFile指定的檔案将記錄httpd守護程序的程序号,由于httpd能自動複制,是以apache啟動後系統會有多個httpd程序,但隻有一個程序為最初的啟動程序,它為其他程序的父程序,對父程序發送信号将影響所有的httpd程序。如果不指定PidFile,将把此檔案預設放在logs/httpd.pid
(3)Timeout 300
Timeout用來定義用戶端和伺服器程式連接配接的逾時間隔,機關為秒;超過這個時間,伺服器将斷開與用戶端的連結
(4)KeepAlive on
Keepalive用于定義是否允許使用者建立永久連接配接,on允許,off拒絕。當要打開一個含有很多圖檔頁面,完全可以建立一個tcp連接配接将所有資訊從伺服器傳到用戶端,而沒必要對每個圖檔都建立一個tcp連接配接,Keepalive建議設為on
(5)MaxKeepAliveRequests 100
MaxKeeoAliveRequests用來定義一個tcp連接配接可以進行http請求的最大次數,0為無限制。當KeepAlive設定為on時,此項才生效。
(6)KeepAliveTimeout 5
KeepAliveTimeout用來限定一次連接配接中最後一次請求完成後延時等待的時間,超過這個時間,伺服器就斷開連接配接
(7)Listen 80
Apache的監聽端口,可以更改
2、配置主伺服器
(1)User nobody
Group nobody
定義httpd的使用者群組,預設由nobody啟動apache
(2)ServerAdmin [email protected]
ServerAdmin設定網站管理者的郵件位址,當apache出現問題時會發郵件到此位址
(3)ServerName www.example.com:80
ServerName指定系統的主機名,如果沒有制定則會以hostname為依據,設定的主機名一定能與ip對應起來(/etc/hosts設定)
(4)UseCanonicalName off
UseCanonicalName用來設定是否使用标準的主機名,如果設定為on,則以ServerName指定的主機名為主,如果web主機有多個主機名,則應設為off(預設設為off)
(5)DocumentRoot /usr/local/apache/htdocs/
DocumentRoot設定網頁的根目錄,此目錄可以是一個連結
(6)<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
上面這段是對DocumentRoot指定目錄的權限設定
(a)<Directory />指定的就是DocumentRoot
(b)Options表示在這個目錄内能夠執行的操作:
l Indexes:此參數表示如果在DocumentRoot指定的目錄下找不到以index大頭的檔案,就将此目錄下所有的檔案列出來。這個參數高危,不使用
l FollowSymLinks:表示在DocumentRoot指定目錄下允許符号連結到其他目錄
l ExecCGI:表示允許在DocumentRoot指定的目錄下執行CGI操作
l Includes:準許SSI操作
l MultiViews:不常用,根據語言的不同顯示不同的資訊提示
(c)AllowOverride,通過設定AllowOverride的值決定是否讀取目錄中的.htaccess檔案,來改變原來所設定的權限,參數All:可以讀取.htaccess檔案來修改原有的的權限;None:表示不可以讀取.htaccess檔案,權限統一控制
(d)Order,用來控制目錄和檔案的通路授權
l Deny,Allow:表示先檢查禁止的設定,再檢查允許的設定
l Allow,Deny:表示先檢查允許的設定,再檢查禁止的設定
Order用來控制通路規則Allow與Deny的生效順序
例:apache.org域中所有主機,除了foo.apache.org子域包含的主機被拒絕以外,其他都允許通路。而所有不在apache.org域中的主機都不允許通路,因為預設狀态是拒絕對伺服器的通路。
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
另一方面,如果上個例子中的Order指令改變為"Deny,Allow",将允許所有主機的通路。這是因為,不管配置檔案中指令的實際順序如何,"Allow from apache.org"指令會最後被評估到并覆寫之前的"Deny from foo.apache.org"。所有不在apache.org域中的主機也允許通路是因為預設狀态被改變到了允許。
(7)DirectoryIndex index.html index.htm index.php index.jsp
對apache預設首頁的設定,參數的先後順序就是網頁打開的先後順序
(8)UserDir public_html
UserDir用于設定使用者個人首頁存放的目錄,預設為public_html,例netadmin的個人首頁/home/netadmin/ public_html
(9)AccessFileName .htaccess
定義每個使用者目錄下的通路控制檔案的檔案名,預設為.htaccess
(10)TypesConfig conf/mime.types
TypesConfig定義在哪裡查詢mime.types檔案
(11)HostnameLookups off
HostnameLookups用來指定apache日志記錄通路端位址是ip還是域名,off—ip,on—域名,建議設為off
(12)ErrorLog logs/error_log
指定錯誤日志的位置
(13)CustomLog logs/access_log common
指定apache通路日志檔案的位置和記錄日志的模式
(14)ServerTokens Full
ServerTokens定義在HTTP回應頭中的資訊類型,預設為Full,顯示所有資訊,可設為Full/OS/Minor/Minimal/Major/Prod,Prod顯示的資訊最少
(15)ServerSignature on
ServerSignature有三個參數,on表示在apache的出錯頁面會顯示apache的版本以及加載子產品的資訊,email與on相同,但還會多出一個郵件位址連結,off則不顯示任何資訊。
(16)ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin">
Options None
Order allow,deny
Allow from all
預設在/usr/local/apache2/cgi-bin目錄下具有CGI的腳本執行權限。
3、虛拟主機的設定
(1)NameVirtualHost *
表示啟用虛拟主機,如果開啟虛拟主機則DocumentRoot指令則失效,以虛拟主機指定的DocumentRoot為主
(2)<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
l ServerAdmin:虛拟主機管理者的email
l DocumentRoot:指定虛拟主機的網頁根目錄
l ServerName:虛拟主機的域名
l ServerAlias:虛拟主機名稱
l ErrorLog:指定虛拟主機錯誤日志的位置
l CustomLog:指定虛拟主機通路日志的位置和格式
六、提示
由于apache的版本不同,是以不同版本的apache在安裝和配置上會有所不同;舊版本的apache的配置大多在httpd.conf上,而新版本的httpd.conf被簡化了,很多的配置都放在了conf/extra相應的檔案中