LAMP架構——Apache(httpd)-2.4.29源碼安裝

      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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章