实验环境: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编译安装成功。

分类: Linux服务架构