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路径