CentOS7的鏡像中已經提供了httpd-2.4的rpm包,httpd-2.4相對于httpd2.2有較大的改進,在CentOS6下只能通過Apache官方網站提供的源碼包編譯安裝。
有時候,我們需要應用http-2.4的某些特性,但是因為當前的發行版沒有支持,所以我們需要自己編譯安裝。
httpd-2.4新特性介紹
(1) MPM支持運行為DSO機制;以模塊形式按需加載;
(2) event MPM生產環境可用;
(3) 異步讀寫機制;
(4) 支持每模塊及每目錄的單獨日志級別定義;
(5) 每請求相關的專用配置;
(6) 增強版的表達式分析式;
(7) 毫秒級持久連接時長定義;
(8) 基于FQDN的虛擬主機也不再需要NameVirutalHost指令;
(9) 新指令,AllowOverrideList;只能將那些文件放在,htaccess文件中;
(10) 支持用戶自定義變量;
(11) 更低的內存消耗;
引入新模塊:
(1) mod_proxy_fcgi :httpd-2.2沒有被整合進httpd,需要自己裝載
(2) mod_proxy_scgi :反向代理模塊
(3) mod_remoteip :基于IP的訪問控制機制被改變
一、提供開發環境
1.開發環境包組:Development Tools, Server Platform Development
2.開發程序包:pcre-devel 需要手動安裝
# yum groupinstall -y "Development tools" "Server platfrom Development" # yum install -y pcre-devel
二、獲取源碼包
可從官網獲取www.apache.org,此處在ftp服務器上獲取
lftp 172.18.0.1 > cd pub/Sources/sources/httpd/ > mget apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 > mget httpd-2.4.10.tar.bz2
三、解決apr的依賴關系
apr簡介:
apache portable runtime(Apache可移植運行環境) ,Apache是一個跨平臺的web服務器,為了避免在跨平臺是需要重復寫代碼來調用API來驅動運行環境 故apache的開發者開發福一個類似于虛擬機的東西,來實現一個運行Apache的統一接口,此即為apr.
因為CentOS 6 默認的apr是apr-1.3.9, apr-util-1.3.9 ;但是httpd-2.4依賴于apr-1.4+, apr-util-1.4+, [apr-iconv]故我們需要先解決apr的依賴關系。
注意:因為apr-util 依賴于apr,故先安裝被依賴的程序包apr-1.4+。
(1) apr-1.4+
# tar -xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 # ./configure --prefix=/usr/local/apr 指明安裝目錄卸載時,只需刪除此目錄 # make && make install
(2) apr-util-1.4+
# tar -xf apr-util-1.5.3.tar.bz2 # cd apr-util-1.5.3 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make -j 2 && make install
注意:一定要指明所依賴包的路徑否則其會去/usr路徑查找,找不到就會報錯
四、編譯安裝 httpd-2.4
# yum install -y openssl-devel (編譯過程提示mod_ssl版本太低) # tar -xf httpd-2.4.10.tar.bz2 # cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache24 安裝路徑 --sysconfdir=/etc/httpd24 配置文件路徑 --enable-so 支持dso機制 --enable-ssl --enable-cgi --enable-rewrite 支持url重寫 --with-zlib 依賴zlib環境,其提供壓縮庫,實現頁面文件壓縮后的發送接收 --with-pcre 支持perl擴展的正則表達式模式 --with-apr=/usr/local/apr 不指明其會到/usr默認路徑查找 --with-apr-util=/usr/local/apr-util --enable-modules=most 啟用那些模塊,有列表此處most大多數模塊 --enable-mpms-shared=all 需要將那些mpm編譯成共享模塊 --with-mpm=prefork 將哪個mpm當作默認的mpm機制配置 # make && make install
五、啟動http-2.4
1)使用自帶的服務控制腳本啟動
apachectl,編譯安裝不在PATH路勁中,我們需要自行導入,注意:編譯安裝需要絕對路徑啟動
# /usr/local/apache24/bin/apachectl
2)導入PATH環境變量中
# vim /etc/profile.d/apache24.sh export PATH=/usr/local/apache24/bin:$PATH # . /etc/profile.d/apache24.sh # apachectl stop # hash 可用hash命令查看此命令是從哪里啟動的。 hits command 1 /usr/local/apache24/bin/apachectl
3)輸出頭文件
# ln -sv /usr/local/apache24/include/ /usr/include/httpd
4)導出庫文件
# ldconfig -p 查看已加載的庫文件 # vim /etc/ld.so.conf.d/httpd.conf /usr/local/apache24/lib # ldconfig -v 重新加載庫文件
(5)提供一個服務腳本文件(修改原有的服務腳本文件)
# cd /etc/rc.d/init.d/ # cp httpd httpd24 # vim httpd24
修改以下項為:
apachectl=/usr/local/apache24/bin/apachectl httpd=${HTTPD-/usr/local/apache24/bin/httpd} pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
(6)手動將此配置文件加入服務控制列表
# chkconfig --add httpd24 # service httpd24 start
(7)切換mpm機制
編輯httpd.conf確保mpm相關指令開啟
# vim /etc/httpd24/httpd.conf Include /etc/httpd24/extra/httpd-mpm.conf 去掉注釋,確保能加載extra/httpd-mpm.conf文件 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 裝載選用的mpm機制此處為prefork # service httpd24 restart # httpd -M|grep mpm
補充:
所有的配置文件在安裝路徑/usr/local/apache24/下
編譯安裝步驟可在/usr/local/apache24/build/config.nice查看
#less /usr/local/apache24/build/config.nice #! /bin/sh # # Created by configure "./configure" \ "--prefix=/usr/local/apache24" \ "--sysconfdir=/etc/httpd24" \ "--enable-so" \ "--enable-ssl" \ "--enable-cgi" \ "--enable-rewrite" \ "--with-zlib" \ "--with-pcre" \ "--with-apr=/usr/local/apr" \ "--with-apr-util=/usr/local/apr-util" \ "--enable-modules=most" \ "--enable-mpms-shared=all" \ "--with-mpm=prefork" \ "$@" /usr/local/apache24/build/config.nice (END)
好了,http-2.4現在已經啟動完成,我們可以查看端口80是否已經處于監聽狀態來進行驗證。
原創文章,作者:MyBlog,如若轉載,請注明出處:http://www.www58058.com/26414