在CentOS 6上利用yum安装的httpd为2.2版本,而CentOS 7本身就支持httpd-2.4,所以这里以CentOS 6为例.
由于httpd服务依赖于apr,apr-util包。CentOS 6上的这两个包的版本是1.3.9版本的,而httpd-2.4所依赖的这两个包的版本必须是1.4及以上的,所以必须下载、编译安装这两个包.
apr下载地址:http://mirror.bit.edu.cn/apache//apr/apr-1.6.2.tar.gz
apr-util下载地址:http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.0.tar.gz
编译安装apr,apr-util
[root@ling ~]#ls
anaconda-ks.cfg apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz install.log
apr-1.5.2 apr-util-1.5.4 httpd-2.4.25.tar.bz2 install.log.syslog
apr
[root@ling ~]#tar xf apr-1.5.2.tar.gz
[root@ling ~]#cd apr-1.5.2
[root@ling apr-1.5.2]#./configure --prefix=/usr/local/apr
[root@ling apr-1.5.2]#make && make install
apr-util
由于apr-util依赖于apr,所以要使用–with-apr=/path/to/apr
[root@ling ~]#tar xf apr-util-1.5.4.tar.gz
[root@ling ~]#cd apr-util-1.5.4
[root@ling apr-util-1.5.4]#./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr-util
[root@ling apr-util-1.5.4]#make && make install
创建apche的属组与属主,由于是系统用户与系统组,所以要使用-r选项
[root@ling ~]#groupadd -r apache
[root@ling ~]#useradd -r -g apache apache
解压
[root@ling ~]#tar xf httpd-2.4.25.tar.bz2
[root@ling ~]#cd httpd-2.4.25
编译
[root@ling httpd-2.4.25]#./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
–enable:所有的–enable后面都是模块,这里表示编译时启动这些模块。
–enable-so: 支持动态模块加载机制
–enable-ssl: 支持加密协议
–enable-cgi,表示启用cgi模块,就是当客户端访问一个动态资源时,httpd与后端的php或者perl或者python进行交互时用到的的一个模块,httpd-2.4支持fastcgi,不过要自己配置启用这个模块
–enable-rewrite: 支持URL重写功能
–with-zlip: zlib是一个压缩库,里面包含了很多压缩格式的算法,这里表示传输时支持zlib库中的压缩格式
按照以上方式进行安装时会报错
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
原因是缺少pcre的安装包,安装此包即可
[root@ling httpd-2.4.25]#yum -y install pcre-devel
如果发生其他模块没有启动或者模块没有找到等问题,大部分都是没有安装开发包与开发环境,安装方式如下:
[root@ling httpd-2.4.25]#yum -y install "Development Tools" "Server Platform Development"
再编译一次即可,编译完成之后,进行安装
[root@ling httpd-2.4.25]#make && make install
(1) 使用 ss 命令查看80端口是否被监听,如果被监听可能是在之前安装过httpd-2.2版本,使用命令service httpd stop关闭httpd服务
[root@ling ~] service httpd stop
也可以使用kill命令,更加暴力直接
[root@ling ~] killall httpd
(2) 启动httpd-2.4服务程序
[root@ling ~]/usr/local/apache/bin/apachectl start
如果不想使用这么麻烦的方式启动,那么可以配置环境变量,配置方法如下:
[root@ling ~] vim /etc/profile.d/httpd.sh
添加如下语句:
exprot PATH=/usr/local/apche/bin:$PATH
重读配置文件:
[root@ling ~] source /etc/profile.d/httpd.sh
查看环境变量,看/usr/local/apache/bin是否位于环境变量中的第一个
[root@ling ~] echo $PATH
/usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
查看apachectl命令的路径,看是否位于httpd-2.4的安装路径下
[root@ling ~]#which apachectl
/usr/local/apache/bin/apachectl
启动服务
[root@ling ~]#apchectl start
检查web服务是否正常
可以通过客户端浏览器输入主机的ip地址进行访问,也可以通过另外一台虚拟linux主机通过 curl 命令进行访问,如果显示It works!则表示正常工作
(1) 如果通过yum命令安装过httpd-2.2,则将httpd-2.2的服务脚本复制修改一下即可
[root@ling ~]#cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
[root@ling ~]#vim /etc/rc.d/init.d/httpd24
修改其中的某些参数:
apachectl=/usr/local/apache/bin/apachectl #服务所在位置
httpd=/usr/local/apache/bin/httpd #默认程序所在位置
prog=httpd
pidfile=${PIDFILE-/var/run/httpd/httpd24.pid} #httpd-2.4运行时pid所在的文件位置
lockfile=${LOCKFILE-/var/lock/subsys/httpd24} #httpd-2.4进程锁所在的位置
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}
(2) 让httpd-2.4能够开机自启
[root@ling ~]# chkconfig --add httpd24
[root@ling ~]#chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd24 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@ling ~]# chkconfig --level 3 httpd24 on
(3) 启动服务
[root@ling ~]# service httpd24 restart