一、前言:
httpd-2.2與 httpd-2.4版本相比增加了許多新特性:
1、MPM支持運行時裝載
2、支持event
3、支持異步讀寫
4、支持每模塊每目錄使用不同的日志級別
5、每請求配置<IF>
6、增強版的表達式分析器
7、支持毫秒級的keeplive timeout
8、基于主機名的虛擬主機不在需要NameVirtaulHost
9、支持用戶自定義變量
10、新增一些模塊:mod_proxy,fcgi,mod_ratelimit,mod_request,mode_remoteip
11、修改了一些配置機制,不在使用order,allow,deny來實現基于ip的訪問控制
一次web請求響應的交換過程:
1、建立連接:接收客戶端連接請求
2、接收請求:從來自于網絡的請求報文中讀取一次特定的資源請求
3、處理請求:對請求報文進行解析,獲取請求的資源等信息;根據請求報文的首部來判斷用戶請求的資料
4、訪問資源:獲取報文指定請求的資源,web服務器及web資源服務器,負責發送預先創建好的或動態生成的內容,這些的存放位置是docroot
5、構建相應報文:
6、發送相應報文:有長連接和短連接模式
7、記錄日志
并發響應模型:
單進程web服務器:啟動一個進程接收請求,而且一次只能處理一個請求,當當前請求處理結束后再接收并處理后續的請求;
多進程web服務器:進程尺(線程池);啟動多個進程,每個進程處理一個請求,預生成模式,事先生成過個進程(線程池);
復用的I/0的web服務器:一個進程響應多個請求,基于事件驅動
復用的I/0多線程web服務器:一個進程響應n個請求,啟動m個進程:
Apache的工作模式:
prefork:多進程模型,每個進程響應一個請求;穩定性好,但并發能力有限;預先生成多個空閑進程;(selec()調用,最大1024個)
worker:多進程模型,每個進程可生成多個線程,每個線程響應一個請求,預先生成多個空閑線程
event:一個進程直接響應n個請求,可同時啟動多個進程,(httpd-2.2中測試使用,httpd-2.4可生產使用)
二、Apache編譯安裝過程
安裝編譯環境:Development Toos 和 Server Platform Development
1、編譯安裝apr
解壓
# tar xf apr-1.5.2.tar.gz -C /usr/src
# cd /usr/src/apr-1.5.2/
執行安裝目錄
# ./configure –prefix=/usr/local/lamp/apr
編譯安裝
# make && make install
2、編譯安裝呢apr-util
解壓
# tar xf apr-util-1.5.4.tar.gz -C /usr/src/
# cd /usr/src/apr-util-1.5.4/
指定安裝路徑,指明apr安裝路徑
# ./configure –prefix=/usr/local/lamp/apr-util –with-apr=/usr/local/lamp/apr/
編譯安裝
# make && make install
3、編譯安裝httpd
(1)解壓
# tar xf httpd-2.4.12.tar.bz2 -C /usr/src
# cd /usr/src/httpd-2.4.12/
(2)配置編譯選項(可使用./configure –help查看所需要的選項)
# ./configure –prefix=/usr/local/lamp/apache –enable-so –enable-ssl –sysconfdir=/etc/apache/ –enable-modules=most –enable-mods-shared=all –enable-expires –enable-remoteip –enable-proxy –enable-mpms-shared=all –enable-cgi –enable-rewrite –with-pcre –with-libxml2 –with-mpm=worker –with-apr=/usr/local/lamp/apr –with-apr-util=/usr/local/lamp/apr-util/
選項解釋:
–prefix:指定安裝路徑
–enable-so:啟用動模塊的動態裝卸載功能,及啟用DSO
–eanble-ssl:啟用ssl加密模塊
–sysconfdir:指定配置文件路徑
–enable-moudles: 啟用那些模塊
–enable-mods-shared: 啟動那些共享模塊
–enable-expires: 啟用exprires標題控制
–enable-remoteip:作用將http頭部中的客戶端ip修改為代理服務器或者負載均衡服務器的ip
–with-pcre: 兼容性正則表達式模塊
–enable-proxy:啟用代理模塊
–enable-mpms-sahred:啟用那些動態裝卸載模塊
–enable-cgi:啟動cgi模塊
–enable-rewrite:啟動重寫模塊
–enable-libxml2:啟用xml解釋器模塊
–with-mpm:設定默認工作模式
–with-apr:指明arp位置
–with-apr-util: 指明arp-util的安裝位置
(3)編譯安裝
# make && make install
(4)提取httpd的二進制文件,在/etc/profile.d/目錄中創建http.sh,添加內容如下:
(5)重新讀取配置文件
(6)驗證頭文件信息
4、啟動httpd服務,有兩種方法:
第一種方法:使用編譯安裝時,httpd自帶的啟動服務腳本啟動
(1)確認編譯安裝完成后自帶服務啟動腳本
(2)使用此腳本啟動服務:
(3)查看啟動是否成功,如果沒有成功,查看日志,分析原因
(4)根據錯誤提示,編輯httpd的配置文件,檢查錯誤日志提到的模塊信息
(5)在此運行腳本,啟動httpd服務
(6)使用瀏覽器測試是否可以正常訪問
第二種方法:如果已安裝了rpm格式的httpd,可以修改httpd服務,讓其可以控制編譯安裝的httpd
(1)確認系統已經安裝rpm格式的httpd
(2) 修改rpm格式的httpd啟動腳本,修改內容如下
(3)啟動httpd服務
(4)使用瀏覽器測試訪問
三、虛擬主機配置
編輯/etc/apache/httpd.conf文件,注釋掉主服務器的文檔目錄,啟動虛擬主機的配置文件目錄,監聽在多個端口
1、配置虛擬主機
(1)基于端口的虛擬主機
①編輯/etc/apache/extra/httpd-vhosts.conf,添加虛擬主機
②創建/var/www/{a.com,b.com},并在其目錄下創建index.html默認文件
③重新啟動httpd服務
④測試基于端口的虛擬主機是否可以成功訪問
⑤訪問被拒絕,解決辦法,編輯/etc/apache/extra/httpd-vhosts.conf,添加授權信息
⑥重新載入httpd配置文件,重新訪問
(2)配置基于IP地址的虛擬主機
①編輯/etc/apache/extra/httpd-vhosts.conf,修改內容如下
②給主機配置多個ip地址
③重啟httpd服務器,用不同的ip訪問web服務
(3)配置基于主機名的虛擬主機
①編輯/etc/apache/extra/httpd-vhosts.conf,修改虛擬主機配置文件
②修改本地主機的host文件,添加以下信息
③重啟httpd服務,使用主機名進行訪問
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/4900