CentOS6 編譯安裝httpd-2.4

   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

(0)
MyBlogMyBlog
上一篇 2016-07-27
下一篇 2016-07-28

相關推薦

  • 進程管理

    進程管理 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能 用戶模式(空間),內核模式(空間) Process(進程):運行中的程序的一個副本         存在生命周期 task struct:內核的結構體 Linux內內核存儲進程信息的固定格式:tas…

    Linux干貨 2016-09-10
  • N25 – Week6 作業

    春節過去了,我們又開學了,又可以寫博客,做作業了,好開心. 下面是第6周的博客作業: 請詳細總結vim編輯器的使用并完成以下練習題: 1. 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc/sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@dhcp-10-129-6-166 ~]# …

    Linux干貨 2017-02-13
  • 文件權限

    一、文件權限        linux系統中文件眾多,針對不同的文件面向的對象不同,因此對其設置的權限各不相同,那么我們來對文件設置權限呢?               …

    Linux干貨 2016-08-08
  • 馬哥教育網絡班22期+第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel/ /home/tuser1/ ~]# chmod 700 /home/tuser1/ -R 2、編輯/e…

    Linux干貨 2016-09-06
  • 第十四周作業

    系統的INPUT和OUTPUT默認策略為DROP; [root@CentOS7 ~]# iptables -P INPUT DROP [root@CentOS7 ~]# iptables -P OUTPUT DROP 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服…

    Linux干貨 2017-08-13
欧美性久久久久