pache是一個基金會的名字,httpd纔是我們要安裝的軟件包,早期它的名字就叫apache,Apache官網www.apache.org
由於httpd2.2和httpd2.4所所使用的Apr庫不同,而且centos7系統自帶的Apr與之不匹配,所以需要使用yum安裝Apr庫文件。
[root@dl-001 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.29.tar.gz //2.4源碼包
[root@dl-001 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz //apr-1.6.3r包
[root@dl-001 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz //apr-util-1.6.1包
- 1
- 2
- 3
- 4
- 5
說明:下載並解壓,以下操作需要進入。
<h3 id="1安裝apr包"><a name="t0"></a>1,安裝apr包</h3>
[root@dl-001 src]# cd apr-1.6.3
配置:
[root@dl-001 apr-1.6.3]# ./configure --prefix=/usr/local/apr
報錯:
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
//說明:缺少C語言相關的編譯器。
解決辦法:
[root@dl-001 apr-1.6.3]# yum install -y gcc* //安裝gcc編譯器。
[root@dl-001 apr-1.6.3]# ./configure --prefix=/usr/local/apr
// 配置成功!
編譯和安裝:
[root@dl-001 apr-1.6.3]# make
報錯:
xml/apr_xml.c:35:19: 致命錯誤:expat.h:沒有那個文件或目錄
#include <expat.h>
^
編譯中斷。
make[1]: *** [xml/apr_xml.lo] 錯誤 1
make[1]: 離開目錄“/usr/local/src/apr-util-1.6.0”
make: *** [all-recursive] 錯誤 1
解決辦法:
[root@dl-001 apr-1.6.3]# yum -y install expat-devel
[root@dl-001 apr-1.6.3]# make && make install
[root@dl-001 apr-1.6.3]# echo $?
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
注意: APR 1.6.2版本有變更,進行了加密設置,進行編譯時需要使用如下命令(否則在安裝Apache是無法調用該庫文件):
[root@dl-001 httpd-2.4.29]# CC="gcc -m64" ./configure --prefix=/usr/local/apr
- 1
2,安裝Apr-util包
[root@dl-001 src]# cd apr-util-1.6.1
[root@dl-001 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@dl-001 apr-util-1.6.1]# echo $?
0
編譯和安裝:
[root@dl-001 apr-util-1.6.1]# make && make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3,安裝httpd
[root@dl-001 src]# cd httpd-2.4.29
[root@dl-001 httpd-2.4.29]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
報錯:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
說明:需要安裝庫文件pcre
解決辦法:
[root@dl-001 httpd-2.4.29]# yum list |grep pcre //查看相關的包
請根據搜索的結果安裝下面的包:
[root@dl-001 httpd-2.4.29]# yum install -y pcre-devel
[root@dl-001 httpd--2.4.29]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
[root@dl-001 httpd-2.4.29]# echo $?
0
//編譯和安裝
[root@dl-001 httpd-2.4.29]# make
[root@dl-001 httpd-2.4.29]# make install
[root@dl-001 httpd-2.4.29]# echo $?
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
排查錯誤
在源碼編譯安裝httpd時,./configure執行無錯誤,到make時就報錯
錯誤如下:
...
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] 錯誤 1
make[2]: 離開目錄“/usr/local/src/httpd-2.4.28/support”
make[1]: *** [all-recursive] 錯誤 1
make[1]: 離開目錄“/usr/local/src/httpd-2.4.28/support”
make: *** [all-recursive] 錯誤 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
說明:缺少了xml相關的庫,需要安裝libxml2-devel包。直接安裝並不能解決問題,因爲httpd調用的apr-util已經安裝好了,但是apr-util並沒有libxml2-devel包支持
1.安裝libxml2-devel包
[root@dl-001 ~]# yum install -y libxml2-devel
2.刪除apr-util安裝目錄,並重新編譯安裝
[root@dl-001 ~]# rm -rf /usr/local/apr-util
[root@dl-001 ~]# cd /usr/local/src/apr-util-1.6.1
# 這一步很重要,必須清除之前配置時的緩存
[root@dl-001 apr-util-1.6.1]# make clean
# 源碼安裝三步走
[root@dl-001 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@dl-001 apr-util-1.6.1]# make
[root@dl-001 apr-util-1.6.1]# make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
3.重新編譯安裝httpd
# 同樣要清理之前的緩存十分重要
[root@dl-001 src]# cd /usr/local/src/httpd-2.4.28
[root@dl-001 httpd-2.4.29]# make clean
[root@dl-001 httpd-2.4.29]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
[root@dl-001 httpd-2.4.29]# make
# 這時make沒報錯了
[root@dl-001 httpd-2.4.29]# make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.啓動服務
[root@dl-001 httpd-2.4.29]# cd /usr/local/apache2.4 //切換至Apache2.4目錄
[root@dl-001 apache2.4]# ls
bin build cgi-bin conf error htdocs icons include logs man manual modules
注:較常用目錄bin(可執行文件存放目錄)、conf(配置文件所在目錄)、htdocs(存放一個訪問頁)、logs(日誌文件存放目錄)、modules(存放擴展模塊)。
查看Apache所加載的模塊:
[root@dl-001 apache2.4]# /usr/local/apache2.4/bin/httpd -M
或者
[root@dl-001 apache2.4]# /usr/local/apache2.4/bin/apachectl -M
啓動:
[root@dl-001 apache2.4]# /usr/local/apache2.4/bin/apachectl start
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using fe80::65d2:adc:20d3:8c74. Set the ‘ServerName’ directive globally to suppress this message
#此處錯誤提示沒影響。
檢測狀態:
[root@dl-001 apache2.4]# ps aux |grep httpd
root 8090 0.0 0.2 144572 2720 ? Ss 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 8091 0.0 0.1 144572 1996 ? S 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 8092 0.0 0.1 144572 1996 ? S 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 8093 0.0 0.1 144572 1996 ? S 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 8094 0.0 0.1 144572 1996 ? S 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
daemon 8095 0.0 0.1 144572 1996 ? S 23:36 0:00 /usr/local/apache2.4/bin/httpd -k start
root 8116 0.0 0.0 112680 972 pts/4 S+ 23:38 0:00 grep –color=auto httpd
[root@dl-001 apache2.4]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1181/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1790/master