1 概述
目前CENTOS7默認安裝是HTTPD2.4,但是CENTOS6上默認是安裝HTTPD2.2部蛇,CENTOS6如果要安裝HTTPD2.4摊唇,需要通過編譯安裝實現(xiàn),一般情況下涯鲁,centOS7默認是安裝httpd2.4,除非要自己編譯特殊的模塊巷查,否則建議見用yum進行安裝httpd2.4的服務(wù)包就可以。
編譯安裝HTTPD2.4需要涉及APR,本文將介紹一下APR基本概念抹腿,同時介紹兩種在centos6上編譯HTTPD2.4方法岛请,以及在centos7上編譯安裝HTTPD2.4
2? APR概念
apache的項目,apache支持跨平臺警绩,但是window和linux的系統(tǒng)調(diào)用機制不一樣
APR就會去處理不同系統(tǒng)間的問題崇败,應(yīng)用開發(fā)人員面對的是APR的接口,而不是操作系統(tǒng)接口開發(fā)
APR針對的是apache的項目軟件
.APR(Apache portable Run-time
libraries肩祥,Apache可移植運行庫)主要為上層的應(yīng)用程序提供一個可以跨越多操作系統(tǒng)平臺使用的底層支持接口庫后室。在早期的Apache版本中,應(yīng)用程序本身必須能夠處理各種具體操作系統(tǒng)平臺的細節(jié)混狠,并針
對不同的平臺調(diào)用不同的處理函數(shù)
.隨著Apache的進一步開發(fā)岸霹,Apache組織決定將這些通用的函數(shù)獨立出來并發(fā)展成為一個新的項目。這樣将饺,APR的開發(fā)就從Apache中獨立出來贡避,Apache僅僅是使用APR而已。目前APR主要還是由Apache使用予弧,由于APR的較好的移植性刮吧,因此一些需要進行移植的C程序也開始使用APR,開源項目比如用于服務(wù)器壓力測試的Flood loader tester掖蛤,該項目不僅僅適用于Apache皇筛,http://httpd.apache.org/test/flood
3 centos6上編譯HTTPD2.4
方法一
環(huán)境:centos6.9 apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz? ?httpd-2.4.27.tar.bz2
apr的版本需要是1.4以上
#1 安裝包組
yum -y groupinstall "Development tools"
yum -y install openssl-devel pcre-devel expat-devel
#2 創(chuàng)建賬號
mkdir? /app/website
useradd -r -d? /app/website -s /sbin/nologin apache
#3 解壓安裝包
tar xvf apr-1.6.2.tar.gz -C /usr/local
tar xvf? apr-util-1.6.0.tar.gz? ?-C /usr/local
tar xvf? httpd-2.4.27.tar.bz2? ?-C /usr/local
#4 編譯apr
cd /usr/local/apr-1.6.2
./configure --prefix=/usr/local/apr
make & make install
#5 編譯apr-util
cd /usr/local/apr-util-1.6.2
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make & make install
#6 編譯httpd24
cd /usr/local/httpd-2.4.27
./configure --prefix=/app/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
make & make install
#7 修改配置文件
vim? /app/httpd24/conf/httpd.conf
user apache
group apache
Documentroot /app/website
<directory /app/website>
#8 將編譯的httpd24執(zhí)行文件路徑導(dǎo)入PATH變量
vim /etc/profile.d/httpd24.sh
PATH=/app/httpd24/bin:$PATH
#保存后執(zhí)行
. /etc/profile.d/httpd24.sh
#9 拷貝其他機器的httpd腳本進行相關(guān)修改
scp 172.18.50.61:/etc/init.d/httpd /etc/init.d/httpd24
vim /etc/init.d/httpd24
apachectl=/app/httpd24/bin/apachectl
httpd=${HTTPD-/app/httpd24/bin/httpd}
pidfile=${PIDFILE-/app/httpd24/logs/httpd24.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
#保存后,執(zhí)行如下的語句
chkconfig --add httpd24
chkconfig httpd24 on
service httpd24 start
#這樣就可以用service 來查看啟動服務(wù)坠七,7上啟動腳本是二進制水醋,不能通過用戶自己編寫shell服務(wù)啟動腳本實現(xiàn),
#這個是6和7的區(qū)別彪置,因為在7上執(zhí)行service httpd restart的時候拄踪,會被重定向另一個語句,
#?Redirecting to /bin/systemctl restart? httpd.service而執(zhí)行chkconfig httpd on 拳魁,
#?會被重定向另一個語句執(zhí)行惶桐,Note: Forwarding request to 'systemctl enable httpd.service'。
#?并不是通過httpd的啟動腳本執(zhí)行的。所以在7上如果要開機啟動姚糊,編譯安裝的話贿衍,
#?就要在/etc/rc.d/rc.local里寫入 /app/httpd24/bin/apachectl? start
#這個語句,實現(xiàn)開機啟動救恨。同時編譯安裝的http24,在7上由于沒有httpd這個腳本贸辈,
#所以必須通過apachectl來控制httpd24這個服務(wù)。
#10 創(chuàng)建主站點文件
mkdir /app/website
echo "I am sunny in cent65E under /app/website" > /app/website/index.html
#11 測試
#啟動服務(wù)
service httpd24 restart
#或者
apachectl start
#在瀏覽器輸入該http鏈接肠槽,如 http://172.18.50.65/
方法2
不用獨立編譯apr 和apr-util擎淤,將這個包放到/usr/local/httpd-2.4.27/srclib路徑下,并將服務(wù)包目錄改名為apr 和apr-util秸仙,編譯時關(guān)鍵參數(shù)是--with-included-apr嘴拢,進行統(tǒng)一編譯
即方法一中的4,5,6三步合成如下這個操作,其他步驟不變
cp -r /usr/local/apr-1.6.2 /usr/local/httpd-2.4.27/srclib/apr
cp -r /usr/local/apr-util-1.6.0 /usr/local/httpd-2.4.27/srclib/apr-util
cd? /usr/local/httpd-2.4.27/srclib/apr
./configure --prefix=/app/httpd24? --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
4 centos7源碼編譯httpd2.4
如果centOS7上的apr和apr-util已經(jīng)是1.4版本以上寂纪,就不要在編譯apr和apr-util了席吴,如果機器上沒有apr和apr-util或者版本較低,參照centOS6的方法編譯安裝apr和apr-util
#1 安裝編譯包組
yum groupinstall "development tools"
yum -y install apr-devel apr-util-devel openssl-devel pcre-devel
#2 創(chuàng)建賬號
mkdir? /app/website
useradd -r -d? /app/website -s /sbin/nologin apache
#3 解壓安裝包
tar xvf apr-1.6.2.tar.gz -C /usr/local
tar xvf? apr-util-1.6.0.tar.gz? ?-C /usr/local
tar xvf? httpd-2.4.27.tar.bz2? ?-C /usr/local
#4? 編譯安裝
cd? /usr/local/src/httpd-2.4.27/
./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre? --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make? && make install
#5 修改配置文件
vim /app/httpd24/conf/httpd.conf
User apache
Group apache
#6 將編譯的httpd24執(zhí)行文件路徑導(dǎo)入PATH變量
vim /etc/profile.d/httpd24.sh
PATH=/app/httpd24/bin:$PATH
#保存后執(zhí)行? ". /etc/profile.d/httpd24.sh"
#7 vim /etc/rc.d/rc.local
/app/httpd24/bin/apachectl start
chmod +x? ?/etc/rc.d/rc.local
#注意捞蛋,這里和centos6不一樣抢腐,不能自己創(chuàng)建httpd文件,所以襟交,只能通過apachectl這個工具來控制httpd
#8 測試
#啟動服務(wù)
apachectl -k start
#這里和centOS6語法不同,需要加選項-k
#在瀏覽器輸入該http鏈接伤靠,如 http://172.18.50.65/