实验环境:RHEL7.5(最小化安装) ip:192.168.10.205
一、安装相关依赖包
[root@node5 ~]# yum install libxml2-devel openssl-devel expat-devel pcre-devel gcc -y
二、编译安装apr、apr-util
httpd2.4版本之后需要依赖apr、apr-util,所以在编译安装httpd之前,必须先编译安装apr、apr-util
1、下载、编译安装apr1.6.3
[root@node5 ~]# curl -O http://mirrors.hust.edu.cn/apache/apr/apr-1.6.3.tar.gz
[root@node5 ~]# tar xf apr-1.6.3.tar.gz
[root@node5 ~]# cd apr-1.6.3
[root@node5 apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@node5 apr-1.6.3]# make && make install
2、下载、编译安装apr-util-1.6.1
[root@node5 ~]# curl -O http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[root@node5 ~]# tar xf apr-util-1.6.1.tar.gz
[root@node5 ~]# cd apr-util-1.6.1
[root@node5 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@node5 apr-util-1.6.1]# make && make install
三、编译安装httpd2.4.33
1、下载httpd2.4.33
[root@node5 ~]# curl -O http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.33.tar.gz
2、解压、编译、安装httpd2.4.33
[root@node5 ~]# tar xf httpd-2.4.33.tar.gz
[root@node5 ~]# cd httpd-2.4.33
[root@node5 httpd-2.4.33]#./configure --prefix=/usr/local/apache\
--sysconfdir=/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
[root@node5 httpd-2.4.33]# make && make install
参数解析:
--prefix=/usr/local/apache 指定安装目录
--sysconfdir=/etc/httpd24 指定配置文件路径
--enable-so 启动模块动态装卸载
--enable-ssl 编译ssl模块
--enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
--enable-rewrite 支持url重写
--with-zlib 支持数据包压缩
--with-pcre 支持正则表达式
--with-apr=/usr/local/apr 指明依赖的apr所在目录
--with-apr-util=/usr/local/apr-util/ 指明依赖的apr-util所在的目录
--enable-modules=most 启用的模块
--enable-mpms-shared=all 以共享方式编译的模块
--with-mpm=prefork 指明httpd的工作方式为prefork,工作模式有:prefork、event、worker等
httpd常见3种工作模式:
prefork:多进程模型,每个进程响应一个请求。一个主进程负责生产n个子进程(称为工作进程),每个子进程处理一个用户请求;即便没有用户请求,也会预先生产多个空闲进程(最多不超过1024个)。
worker:多线程模型,一个进程生产多个线程,一个线程响应一个请求。
event:事件驱动模型,一个线程响应多个请求。
3、配置httpd服务脚本
httpd源码包解压后build/rpm目录下httpd.init文件就是服务脚本。将此文件复制到/etc/rc.d/init.d/目录下,并且重命名为httpd,然后修改httpd、CONFFILE这两项内容。
httpd: httpd二进制程序所在路径,因为httpd编译安装在/usr/local/apache/目录中,所以二进制文件放在其/bin目录中,如下所示:
[root@node5 ~]# ls /usr/local/apache/bin/
ab apxs dbmmanage envvars-std htcacheclean htdigest httpd logresolve
apachectl checkgid envvars fcgistarter htdbm htpasswd httxt2dbm rotatelogs
[root@node5 ~]#
所以httpd设置为:httpd=${HTTPD-/usr/local/apache/bin/httpd}
因为httpd的配置文件是:/etc/httpd24/httpd.conf
所以CONFFILE设置为:CONFFILE=/etc/httpd24/httpd.conf
/etc/rc.d/init.d/httpd配置修改如下:
[root@node5 httpd-2.4.33]# cp build/rpm/httpd.init /etc/rc.d/init.d/httpd
[root@node5 httpd-2.4.33]# vim /etc/rc.d/init.d/httpd
...
httpd=${HTTPD-/usr/local/apache/bin/httpd}
...
CONFFILE=/etc/httpd24/httpd.conf
4、将httpd添加可执行权限,并且添加到系统服务
[root@node5 httpd-2.4.33]# chmod +x /etc/rc.d/init.d/httpd
[root@node5 httpd-2.4.33]# chkconfig --add httpd
5、修改httpd配置文件中的ServerName,以及pidfile
/etc/rc.d/init.d/httpd文件中pidfile=${PIDFILE-/var/run/${prog}.pid}
所以,httpd的配置文件(/etc/httpd24/httpd.conf)中的PidFile设为/var/run/httpd.pid。设置如下:
[root@node5 ~]# vim /etc/httpd24/httpd.conf
ServerName www.example.com:80
PidFile /var/run/httpd.pid
6、清空防火墙规则
[root@node5 ~]#[root@node5 ~]# iptables -F
7、测试
打开浏览,输入:192.168.10.205,下图:
Ok,正常,httpd编译安装成功。