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,安装apr包

[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

注意: APR 1.6.2版本有变更,进行了加密设置,进行编译时需要使用如下命令(否则在安装Apache是无法调用该库文件):

[root@dl-001 httpd-2.4.29]# CC="gcc -m64" ./configure --prefix=/usr/local/apr

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

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
排查错误

在源码编译安装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

说明:缺少了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

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

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         
tcp6       0      0 :::80                   :::*                    LISTEN      8090/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      1181/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1790/master         
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值