- A+
记CentOS7的httpd源码包安装的实验过程
注:以下纯属本人(小白)见解,如有错误请求各位大佬帮忙指正。新人写博有啥错误也麻烦各位大佬给个指点。
作者:lonely-sail
相关下载:
httpd依赖包:apr、apr-util(官网下载:http://apr.apache.org/)、pcre(官网下载:http://pcre.org/)
软件包:httpd
官网下载:http://httpd.apache.org/
链接:https://pan.baidu.com/s/1kjp345efsq-N9FyPDVFKSw
提取码:wdgs
apr推荐用:apr-util-1.6.1和 apr-1.7.0
pcre推荐用:pcre-8.39
任务:在CentOS7安装apache(版本httpd-2.4.39)
实验开始:
前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc
rpm -qa | grep “gcc”---检测是否安装了编译器
步骤一
下载好安装包并上传到root的桌面
步骤二
在/usr/local这个目录创建一个安装目录
我创建了一个名为java的目录作为安装依赖包和软件包的路径
步骤三
tar -zxf apr-1.7.0.tar.gz -C /usr/local/java ---解压缩apr-1.7.0
./configure --prefix=/usr/local/java/apr ---执行configure并指定安装路径
make ---编译
make install ---安装
步骤四
tar -zxf apr-util-1.6.1.tar.gz -C /usr/local/java ---解压缩apr-util-1.6.1
使用./configure --prefix=/usr/local/java/apr-util时
这里报错:意思是要求用--with-apr 参数指明apr的安装路径
/configure -help | grep apr 可通过帮助命令查看--with-apr的作用
再用./configure --prefix=/usr/local/java/apr-util --with-apr=/usr/local/java/apr就成功了
make时又出现新错误
上网查看是因为缺少的expat库要进行安装
由于自带的网络yum源没用我自己去阿里整了阿里的centos7的yum源
首先备份系统的yum源文件
阿里镜像源:https://developer.aliyun.com/mirror/?spm=a2c6h.25603864.0.0.66127e091uICjn
yum install -y expat-devel
再make就成功了
make install
步骤五
tar -zxf pcre-8.39.tar.gz -C /usr/local/java ---解压缩pcre-8.39
遇到这种情况我是重新上传就成功解压缩了
./configure --prefix=/usr/local/java/pcre
make
make install
步骤六
tar -jxf httpd-2.4.39.tar.bz2 -C /usr/local/java
虽然用 ./configure --prefix=/usr/local/apache24 --with-apr=/usr/local/java/apr --with-apr-util=/usr/local/java/apr-util --with-pcre=/usr/local/java/pcre成功执行了./configure
但用make编译时出现了错误
上网查看了collect2: error: ld returned 1 exit status 错误分析
当在不同文件中有相同函数定义时候会出现collect2: error: ld returned 1 exit status 错误。
有人觉得是apr-util的版本兼容问题,用降低apr-util的版本解决了此问题。
但我觉得这样不是按错误分析的结论解决的方法,于是经过我查找,发现可以用--with-included-apr的一个参数选项解决的办法
阅读httpd-2.4.39的INSTALL文件里有说明
下载apr和apr-Util的源码压缩包并解压后放到:httpd源码目录/srclib/apr与 和 httpd源码目录/srclib/apr-util (命名中不要带版本号),并且执行./configure时使用: --with-included-apr
--with-included-apr 同时作用于apr和apr-util
于是我先make clean清理下
再把解压缩的apr-1.7.0和apr-util-1.6.1放到了httpd-2.4.39的srclib并重命名为apr和apr-util
我觉得应该是分开编译过的apr和apr-util有相同函数定义,于是我打算让编译httpd时一同编译apr和apr-util应该就不会出现这个问题
可能是apr1.7.0和apr-util-1.6.1有相同函数定义,我看别人降低到apr-util-1.3.11就不会,网盘里有。
于是乎我就只用--with-pcre指明pcre的安装路径,apr和apr-util我就不用指明了,使用 .configure --with-included-apr参数选项就行
./configure --with-included-apr --prefix=/usr/local/java/apache24 --with-pcre=/usr/local/java/pcre
再make就成功了
make install
安装成功
启动服务
cd apache24/bin/
./apachectl start 启动服务
查看端口号是否开启
ss -antpl | grep 80
可以看到已经处于监听状态
再用127.0.0.1访问一下自己看看是否会出现It works!
实验结束!