3.4 httpd

1. httpd版本

本文主要介绍httpd的两大版本,httpd-2.2和httpd-2.4。

  • CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包
  • CentOS7系列的版本默认提供的是httpd-2.4版本的rpm包
  • httpd:擅长处理动态资源,ajp协议(专门用来连接Tomcat服务)

1.1 httpd的特性

httpd有很多特性,下面就分别来说说httpd-2.2版本和httpd-2.4版本各自的特性。

版本 特性
2.2 事先创建进程
按需维持适当的进程
模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
支持https协议(通过mod_ssl模块实现)
支持用户认证
支持基于IP或域名的ACL访问控制机制
支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
支持URL重写
支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)
2.4 httpd-2.4的新特性:
MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
支持event MPM,eventMPM模块生产环境可用
支持异步读写
支持每个模块及每个目录分别使用各自的日志级别
每个请求相关的专业配置,使用来配置
增强版的表达式分析器
支持毫秒级的keepalive timeout
基于FQDN的虚拟主机不再需要NameVirtualHost指令
支持用户自定义变量
支持新的指令(AllowOverrideList)
降低对内存的消耗
工作模型 工作方式
prefork 多进程模型,预先生成进程,一个请求用一个进程响应
一个主进程负责生成n个子进程,子进程也称为工作进程
每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
worker 基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
event 基于事件的驱动,一个进程处理多个请求

1.2 httpd-2.4新增的模块

httpd-2.4在之前的版本基础上新增了几大模块,下面就几个常用的来介绍一下。

模块 功能
mod_proxy_fcgi 反向代理时支持apache服务器后端协议的模块
mod_ratelimit 提供速率限制功能的模块
mod_remoteip 基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制

2.httpd基础

2.1 httpd自带的工具程序

工具 功能
htpasswd basic认证基于文件实现时,用到的帐号密码生成工具
apachectl httpd自带的服务控制脚本,支持start,stop,restart
apxs 由httpd-devel包提供的,扩展httpd使用第三方模块的工具
rotatelogs 日志滚动工具
suexec 访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
ab apache benchmark,httpd的压力测试工具

2.2 rpm包安装的httpd程序环境

文件/目录 对应的功能
/var/log/httpd/access.log 访问日志
/var/log/httpd/error_log 错误日志
/var/www/html/ 站点文档目录
/usr/lib64/httpd/modules/ 模块文件路径
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.modules.d/*.conf 模块配置文件
/etc/httpd/conf.d/*.conf 辅助配置文件

mpm:以DSO机制提供,配置文件为/etc/httpd/conf.modules.d/00-mpm.conf

3.编译安装httpd

httpd依赖于apr-1.4+,apr-util-1.4+,[apr-icon]

//安装开发环境
[root@localhost ~]# yum groups mark install "Development Tools"
[root@localhost ~]# groupadd -r apache
[root@localhost ~]# useradd -r -g apache apache

//安装依赖环境
[root@localhost ~]# yum -y install openssl-devel pcre-devel expat-devel libtool

//下载并安装apr-1.4+和apr-util-1.4+
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz
[root@localhost src]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz

[root@localhost src]# ls
apr-1.6.5.tar.gz  apr-util-1.6.1.tar.gz  debug  kernels
[root@localhost src]# tar xf apr-1.6.5.tar.gz
[root@localhost src]# tar xf apr-util-1.6.1.tar.gz
[root@localhost src]# ls
apr-1.6.5  apr-1.6.5.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  debug  kernels

[root@localhost src]# cd apr-1.6.5
[root@localhost apr-1.6.5]# vim configure
    cfgfile="${ofile}T"
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
    # $RM "$cfgfile"        //将此行加上注释,或者删除此行

//设置配置
[root@localhost apr-1.6.5]# ./configure --prefix=/usr/local/apr
//编译安装
[root@localhost apr-1.6.5]# make && make install  

//设置配置
[root@localhost apr-1.6.5]# cd /usr/src/apr-util-1.6.1
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
//编译安装
[root@localhost apr-util-1.6.1]# make && make install

//下载httpd
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.38.tar.gz  

[root@localhost ~]# ls
httpd-2.4.38.tar.gz
[root@localhost ~]# tar xf httpd-2.4.38.tar.gz
[root@localhost ~]# cd httpd-2.4.38
//设置配置
[root@localhost httpd-2.4.38]# ./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@localhost httpd-2.4.38]# make && make install

//配置环境变量
[root@localhost httpd-2.4.38]# echo 'export PATH=$path/apache/bin:$PATH' >/etc/profile.d/httpd.sh
[root@localhost httpd-2.4.38]# . /etc/profile.d/httpd.sh

升级编译安装程序httpd

//1.查看现有httpd版本号
[root@yusyang ~]# httpd -v
Server version: Apache/2.4.38 (Unix)
Server built:   Nov 11 2019 10:03:06

//2.下载新版本
[root@yusyang ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.41.tar.gz

//3.停止旧版本服务,并备份旧版本程序和配置文件
[root@yusyang ~]# cp /opt/httpd /opt/httpd-24.38
[root@yusyang ~]# cp /etc/httpd24/httpd.conf /opt/httpd-24.38/

//4.编译新版本,但新版本不执行安装操作(make install)操作
[root@yusyang ~]# ./configure --prefix=/opt/httpd/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/opt/httpd/apr \
--with-apr-util=/opt/httpd/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@yusyang ~]# make

//5.将编译后的目录下的新版本主程序httpd复制到旧版本目录.../apache/bin/下
[root@yusyang httpd-2.4.41]# cp httpd /opt/httpd/apache/bin/.

//6.重新执行环境变量
[root@yusyang ~]# . /etc/profile.d/httpd.sh

//7.查看安装后程序版本号,升级版本成功
[root@yusyang ~]# httpd -v
Server version: Apache/2.4.41 (Unix)
Server built:   Nov 11 2019 10:03:06
发布了50 篇原创文章 · 获赞 8 · 访问量 1892

猜你喜欢

转载自blog.csdn.net/Yusyang_/article/details/102962382
3.4
今日推荐