一、系統環境
系統版本:Aliyun Linux release 5.7
內核版本:2.6.18-274.el5
apr版本:apr-1.4.8
apr-util版本:apr-util-1.5.2
pcre版本:pcre-8.33
Apache版本:Apache/2.4.6 (Unix)
二、Apache簡介
Apache 作為歷史最悠久的web服務器,一直是web應用系統的首選,是世界上被廣泛應用的web 服務器軟件,它可以運行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的web服務器端軟件之一,也是流行架構LAMP的重要組成部分。
三、Apache特點
- 支持最新的HTTP/1.1通信協議。Apache是最先使用HTTP/1.1協議的Web服務器之一,它完全兼容HTTP/1.1協議並與HTTP/1.0協議向后兼容。Apache已為新協議所提供的全部內容做好了必要的准備。
- 支持多計算機平台。Apache幾乎可以在所有的計算機操作系統上運行,包括主流的UNIX、Linux及Windows操作系統。
- 配置文件簡單,易操作。用戶可以通過直接修改Apache的配置文件信息來修改Apache,操作起來十分方便。
- 支持實時監視服務器狀態和定制服務器日志。Apache在記錄日志和監視服務器自身運行狀態方面提供了很大的靈活性,可以通過Web瀏覽器來監視服務器的狀態,也可以根據自己的需要來定制日志。
- 支持多種方式的HTTP認證。
- 支持Web目錄修改。用戶可以使用特定的目錄作為Web目錄。
- 支持CGI腳本,如Perl、PHP等。
- 支持服務器端包含指令(SSI)。
- 支持安全Socket層(SSL)。
- 支持FastCGI。
- 支持虛擬主機。即通過在一台服務器上使用不同的主機名來提供多個HTTP服務。Apache支持基於IP、主機名和端口號三種類型的虛擬主機服務。
- 跟蹤用戶會話。當用戶瀏覽基於Apache的Web站點時,可以通過Apache的mod_usertrack模塊對其進行跟蹤。
- 支持動態共享對象。Apache的模塊可在運行時動態加載,這就意味着這些模塊可以被裝入服務器進程空間,從而減少系統的內存開銷。
- 支持多進程。當負載增加時,服務器會快速生成子進程來處理,從而提高系統的響應能力。
- 支持第三方軟件開發商提供的功能模塊。比如Apache加載mod_jserv模塊后可以支持Java Servlet,這樣就可以運行Java應用程序了。
- 支持多線程和多進程混合模型的MPM。 當MPM類型指定為worker時,由於是使用線程來處理,所以可以處理海量的請求,而系統資源的開銷要小於基於進程的服務器。
四、Apache2.4新特性
1、MPM支持在運行時裝載
--enable-mpms-shared=all --with-mpm=event 啟用默認的event
2、支持event
3、異步讀寫
4、在每模塊及每目錄上指定日志級別
5、每請求配置:<If> <Elseif>
6、增強版的表達式分析器
7、毫秒級的keepalive timeout
8、支持主機名的虛擬主機不在需要NameVirtualHost指令
9、支持使用自定義變量
10、新增一些模塊:mod_proxy_fcgi,mod_ratelimit,mod_request,mod_remoteip
11、對於基於IP的訪問做了修改,不在使用order,allow,deny這些機制;而是統一使用require進行
五、安裝前准備
1、安裝Apache可移植運行庫(apr:Apache portable runtime)
# tar -zxvf apr-1.4.8.tar.gz
# cd apr-1.4.8
# ./configure --prefix=/usr/local/apr
# make && make install
2、安裝Apache可移植運行庫工具包
# tar -zxvf apr-util-1.5.2.tar.gz
# cd apr-util-1.5.2
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make && make install
3、安裝PCRE(Perl Compatible Regular Expressions)Perl庫文件
# tar -zxvf pcre-8.33.tar.gz
# cd pcre-8.33
# ./configure --prefix=/usr/local/pcre
# make && make install
六、安裝Apache服務器
# tar -zxvf httpd-2.4.6.tar.gz
# cd httpd-2.4.6
# ./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre/ --enable-ssl --enable-deflate --enable-expires --with-mpm=event
# make && make install
參數簡單說明:
--prefix=/usr/local/apache:apache安裝路徑
--enable-rewrite:支持網站地址重寫
--enable-so:支持動態加載模塊
--with-apr=/usr/local/apr:apache可移植庫的路徑
--enable-ssl:支持ssl加密
--enable-deflate:支持傳輸前進行壓縮
--enable-expires:支持設置頁面緩存時間
--with-mpm=prefork:指定Apache的運行模式(本人的默認是event)
--enable-modeles=most(常用的模塊)
注:
- 如果源碼安裝與rpm包安裝方式共存需要進行的配置:
1、導出頭文件
# ln -sv /usr/local/apache/include /usr/include/httpd
2、導出庫文件
# ldconfig
# ldconfig -p
3、導出man手冊
# vim /etc/man.config加入
MANPATH /usr/local/apache/man
新版httpd的man幫助文件
# man -M /usr/local/apache/man httpd
4、輸出二進制程序
# vim /etc/profile.d/httpd.sh加入
export PATH=/usr/local/apache/bin:$PATH
. /etc/profile
啟動httpd服務:apachectl start
- event MPM對於老的CPU可能是不支持的
- 本人編譯的只添加了這些模塊,如果有需要可以在編譯過程中進行添加,或者重新編譯
- 編譯前通過修改源碼文件隱藏Apache服務器名稱及版本號,然后再通過httpd-default.conf配置文件即可將版本信息隱藏
# vim include/ap_release.h
服務器供應商名稱Apache軟件基金會
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
服務的項目名稱
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
服務的產品名稱
#define AP_SERVER_BASEPRODUCT "Apache"
#define AP_SERVER_MAJORVERSION_NUMBER 2 主版本號
#define AP_SERVER_MINORVERSION_NUMBER 4 次版本號
#define AP_SERVER_PATCHLEVEL_NUMBER 6 修正號