1. 程式人生 > >HTTP 之 編譯安裝HTTPD2.4

HTTP 之 編譯安裝HTTPD2.4

編譯安裝 httpd2.4

1 概述

目前CENTOS7默認安裝是HTTPD2.4,但是CENTOS6上默認是安裝HTTPD2.2,CENTOS6如果要安裝HTTPD2.4,需要通過編譯安裝實現,一般情況下,centOS7默認是安裝httpd2.4,除非要自己編譯特殊的模塊,否則建議見用yum進行安裝httpd2.4的服務包就可以。

編譯安裝HTTPD2.4需要涉及APR,本文將介紹一下APR基本概念,同時介紹兩種在centos6上編譯HTTPD2.4方法,以及在centos7上編譯安裝HTTPD2.4

2 APR概念

apache的項目,apache支持跨平臺,但是window和linux的系統調用機制不一樣

APR就會去處理不同系統間的問題,應用開發人員面對的是APR的接口,而不是操作系統接口開發

APR針對的是apache的項目軟件

.APR(Apache portable Run-time

libraries,Apache可移植運行庫)主要為上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。在早期的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,並針

對不同的平臺調用不同的處理函數

.隨著Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來並發展成為一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用APR而已。目前APR主要還是由Apache使用,由於APR的較好的移植性,因此一些需要進行移植的C程序也開始使用APR,開源項目比如用於服務器壓力測試的Flood loader tester,該項目不僅僅適用於Apache,http://httpd.apache.org/test/flood

3 centos6上編譯HTTPD2.4

方法一

環境: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 創建賬號
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執行文件路徑導入PATH變量
vim /etc/profile.d/httpd24.sh
PATH=/app/httpd24/bin:$PATH
#保存後執行 
 . /etc/profile.d/httpd24.sh
#9 拷貝其他機器的httpd腳本進行相關修改
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}
#保存後,執行如下的語句
chkconfig --add httpd24
chkconfig httpd24 on
service httpd24 start
#這樣就可以用service 來查看啟動服務,7上啟動腳本是二進制,不能通過用戶自己編寫shell服務啟動腳本實現,
#這個是6和7的區別,因為在7上執行service httpd restart的時候,會被重定向另一個語句, 
# Redirecting to /bin/systemctl restart  httpd.service而執行chkconfig httpd on ,
# 會被重定向另一個語句執行,Note: Forwarding request to ‘systemctl enable httpd.service‘。 
# 並不是通過httpd的啟動腳本執行的。所以在7上如果要開機啟動,編譯安裝的話,
# 就要在/etc/rc.d/rc.local裏寫入 /app/httpd24/bin/apachectl  start
#這個語句,實現開機啟動。同時編譯安裝的http24,在7上由於沒有httpd這個腳本,
#所以必須通過apachectl來控制httpd24這個服務。
#10 創建主站點文件
mkdir /app/website
echo "I am sunny in cent65E under /app/website" > /app/website/index.html
#11 測試
#啟動服務
service httpd24 restart
#或者 
apachectl start
#在瀏覽器輸入該http鏈接,如 http://172.18.50.65/


方法2

不用獨立編譯apr 和apr-util,將這個包放到/usr/local/httpd-2.4.27/srclib路徑下,並將服務包目錄改名為apr 和apr-util,編譯時關鍵參數是--with-included-apr,進行統一編譯

即方法一中的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已經是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 創建賬號
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執行文件路徑導入PATH變量
vim /etc/profile.d/httpd24.sh
PATH=/app/httpd24/bin:$PATH
#保存後執行  ". /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不一樣,不能自己創建httpd文件,所以,只能通過apachectl這個工具來控制httpd
#8 測試
#啟動服務
apachectl -k start
#這裏和centOS6語法不同,需要加選項-k
#在瀏覽器輸入該http鏈接,如 http://172.18.50.65/


本文出自 “陽光運維” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1970607

HTTP 之 編譯安裝HTTPD2.4