1)卸載系統自帶的httpd
Centos可能自帶了httpd,但是版本可能會較低,執行下面的命令檢測是否已經安裝了httpd
rpm -qa | grep httpd
如果檢測已經安裝了二進制的httpd,則使用下面的命令卸載,防止現在的二進制httpd對你之后安裝的源碼httpd干擾
可能已經安裝,但是版本相當於官網較低,為防止干擾,所以先卸載自帶httpd
yum -y remove httpd
2) 下載httpd源碼包
wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.35.tar.gz
此處還下載兩個httpd在生產環境下兩個很重要的包,apr和apr-util(具體想了解這兩個包,可以度娘一下)
wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
3)解壓apr以及apr-util源碼包
tar xf apr-1.6.3.tar.gz -C /usr/local/src tar xf apr-util-1.6.1.tar.gz -C /usr/local/src tar xf httpd-2.4.34.tar.gz -C /usr/local/src
下載的源碼包最好都放在/usr/local/src下,當然如果你不放在這里也不影響功能的使用
安裝apr
cd /usr/local/src/apr-1.6.3 ./configure --prefix=/usr/local/apr
--prefix是指定安裝目錄
如果是第一次安裝源碼包,可能會出現以下問題
這個錯誤是因為你缺少解碼編譯器,進行如下操作即可
yum -y install gcc gcc-c++ make
安裝完成后,再次進行安裝apr
./configure --prefix=/usr/local/apr make && make install
&&的意思是前一條命令執行成功才會執行下一條命令
安裝apr-util
cd ../apr-util-1.6.1/ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make
可能會出現如下報錯
缺少依賴關系,安裝expat-devel:
yum -y install expat-devel
然后
make && make install
安裝httpd
cd ../httpd-2.4.34 ./configure \ --prefix=/usr/local/apache \ --enable-so \ --enable-ssl \ --enable-rewrite \ --enable-cgi \ --enable-cgid \ --enable-modules=most \ --enable-mods-shared=most \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util
這是我選擇了一些配置的功能,你可以根據自己的需要改變,如果只是簡單的安裝httpd,直接./configure --prefix=/usr/local/apache
可能會出現如下的報錯
yum -y install pcre-devel
yum -y install mod_ssl openssl-devel
重新httpd的安裝./configure,然后
make
此時可能出現如下問題
yum -y install libtool-ltdl-devel
然后重新編譯一下apr-util 然后重新安裝http,步驟和之前安裝apr-util步驟一致,然后在回到httpd的目錄中進行如下操作即可安裝完成
make && make install
安裝完成后,可通過如下如下命令查詢你http的版本
/usr/local/apache/bin/apachectl -v Server version: Apache/2.4.34 (Unix) Server built: Aug 10 2018 21:47:10
注:
在安裝httpd時如果不確定哪一步是否正確執行,可以使用echo $?判斷命令是否執行成功
為了方便以后使用apache可以將執行路徑添加的PATH中,這樣下次執行命令時,就不需要使用路徑
echo PATH=$PATH:/usr/local/apache/bin/apachectl >> /etc/profile source /etc/profile //加載配置文件 apachectl start //啟動apache ss -antp | grep :80 //判斷apache是否啟動成功
如果在啟動服務時發生如下錯誤
需要修改httpd的配置文件 /usr/local/apache/conf/httpd.conf
將ServerName www.example.com:80這一行的注釋去掉,修改完成之后重啟apache服務
/usr/local/apache/bin/apachectl restart //未添加PATH apachectl restart //添加了PATH路徑