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 15:15
下一篇 2016-07-28 21:51

相關推薦

  • linux下邏輯卷管理LVM

    LVM:邏輯卷管理 LVM這個技術就是把底層的存儲設備組成一個卷組,底層存儲設備的存儲空間會變成一個個PE(盤區,大小為2的n次方),這個卷組里就是一個個的PE,然后,這個卷組會重新分區,這些分區就為邏輯卷,這些邏輯卷都是由卷組里分配的PE組成。 關于LVM里的命令: pv的命令: pvcreate pvs pvdisplay pvscan pvremove…

    Linux干貨 2015-08-04
  • nginx的模塊應用

    1.location的定義 (1)當location中午定義時,默認使用server中的相關定義。 (2)當locating中有了相關定義,此時則啟用location中的定義的內容。 nginx -t檢查配置文件是否有語法錯誤 nginx -s reload重載nginx (3)即使server中的root中的目錄下有了/admin的目錄,但是同時又在loc…

    Linux干貨 2016-10-30
  • 系統管理之作業管理與計劃任務

    作業管理: Linux的作業控制(job )     前臺作業:通過終端啟動,且啟動后一直占據終端;     后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端) 如何讓作業運行于后臺?     (1) 運行中的…

    Linux干貨 2016-09-13
  • N25-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@node1 ~]# who | cut -d" " -f1 | uniq (unknown) root 2、取出最后登錄到當前系統的用戶的相關信息…

    Linux干貨 2016-12-17
  • corosync v2 + pacemaker + crmsh 實現mariadb高可用

    高可用mariadb拓撲圖 一、設計前提     1、時間同步 # ntpdate 172.16.0.1 或者 # chronyc sources     2、所有的主機對應的IP地址解析可以正常工作, 主機名要與命令#uname -n 所得的結果一致   &…

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