httpd安装.md

httpd

简介

httpd是由apache软件基金会开发的一款著名的web服务器软件。因为其开放源代码,而且拥有跨平台、功能强大、安全稳定等特性,而被普遍使用。早期httpd是在修修补补的基础上成长起来的,因此早期也叫做a pachey server,因为开发httpd的组织叫做apache,所以httpd也被称做apache。httpd有三个长线维护版本,分别是httpd2.0、httpd2.2和httpd2.4。使用最为普遍的仍是2.2和2.4的版本,虽然两个版本看起来数字相差不大,可是这两个版本改变仍是挺大。
httpd支持许多特性,大部分特性都是经过编译模块实现,所以httpd是以核心加模块组成的方式工做。httpd的模块分两种,一种叫做动态可装载模块(DSO),另外一种叫做多道处理模块(MPM)。DSO动态可装模块每一个模块对应httpd的某项功能,也就是咱们普遍意义上理解的功能模块。可是,MPM多道处理模块和DSO不同,它并非指一种模块,它表明的是httpd的一种工做特性,经常使用的MPM有,prefork、worker、event。html

工做模式

  • prefork:多进程,每一个请求用一个进程响应,这个过程会用到select机制来通知。web

  • worker:多线程,一个进程能够生成多个线程,每一个线程响应一个请求,但通知机制仍是select不过能够接受更多的请求。数据库

  • event:基于异步I/O模型,一个进程或线程,每一个进程或线程响应多个用户请求,它是基于事件驱动(也就是epoll机制)实现的apache

prefork的工做原理

若是不用“--with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式也是 Apache1.3中采用的模式。prefork自己并无使用到线程,2.0版使用它是为了与1.3版保持兼容性;另外一方面,prefork用单独的子进程来处理不一样的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。centos

worker的工做原理

相对于prefork,worker是2.0版中全新的支持多线程和多进程混合模型的MPM。因为使用线程来处理,因此能够处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。可是,worker也使用了多进程,每一个进程又生成多个线程,以得到基于进程服务器的稳定性,这种MPM的工做方 式将是Apache2.0的发展趋势。api

event 基于事件机制的特性

一个进程响应多个用户请求,利用callback机制,让套接字复用,请求过来后进程并不处理请求,而是直接交由其余机制来处理,经过epoll机制来通知请求是否完成;在这个过程当中,进程自己一直处于空闲状态,能够一直接收用户请求。能够实现一个进程程响应多个用户请求。支持持海量并发链接数,消耗更少的资源。浏览器

安装

yum安装

CentOS 6

在经过yum安装httpd时在CentOS 6 中默认的是httpd-2.2版本。而CentOS 7中默认安装的是httpd-2.4。建议若是没有什么特殊的版本需求在安装中尽可能使用yum安装这样很容易维护,同时也很方便。缓存

# yum install -y httpd httpd-devel
  • 配置文件安全

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
  • 服务脚本服务器

/etc/rc.d/init.d/httpd
  • 脚本配置文件

/etc/sysconfig/httpd
  • 主程序文件

/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
  • 日志文件

/var/log/httpd/*.log
  • 站点文档

/var/www/html
  • 模块文件路径

/usr/lib64/httpd/modules
  • 服务控制和启动

chkconfig  httpd  on|off
service  httpd {start|stop|restart|status|configtest|reload}

CentOS 7

  • 配置文件

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
  • 模块相关的配置文件

/etc/httpd/conf.modules.d/*.conf
  • systemd unit file

/usr/lib/systemd/system/httpd.service
  • 主程序文件

/usr/sbin/httpd
  • 日志文件

/var/log/httpd/*.log
  • 站点文档

/var/www/html
  • 模块文件路径

/usr/lib64/httpd/modules
  • 服务控制

systemctl  enable|disable  httpd.service
systemctl  {start|stop|restart|status}  httpd.service

编译安装

Apache拥有4层结构,从核心到外层的module。而外层的module能够用经过静态和动态两种方式与Apache共同工做。这也就引入下文的“动态”和“静态”两种编译安装方式:

  • 静态编译: 编译的时候,全部的模块本身编译进 httpd 这个文件中 ,启动Apache的时候这些模块就已经加载进来了,能够直接来使用,而不用再 httpd.conf 中在 LoadModule 来加载,只要在 中来配置就能够了。

  • 动态编译: 编译的时候,使用enable-MODULE=shared 或者enable-mods-shared=MODULE来动态编译。 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个 module.so文件。若是使用,就在httpd.conf中使用 loadmodule 这个语法来加载,这个模块才有效。

区别是:
静态的模块一般在http.conf中用 来配置,动态的要先loadmoule来加载,而后再配置。

编译安装httpd-2.4

在安装httpd-2.4以前须要在系统中安装apr-1.4+和apr-util-1.4+,在CentOS7中的版本符合要求,可是在CentOS 6中并不符合要求须要专门源码安装apr和apr-util。

  • 安装apr

# ./configure  --prefix=/usr/local/apr
# make && make install
  • 安装apr-util

# ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
# make && make install
  • 安装httpd

# yum install -y openssl-devel pcre-devel zlib-devel
# ./configure --prefix=/usr/local/apache24 --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=all
# make && make install

编译总结

  • 编译时默认是以动态编译的模式把模块加载进去,若是想要用静态编译则须要用--enable-mods-static=MODULE-LIST 来编译。

  • 编译最好使用动态编译也是默认的编译方式进行,这么使用能够灵活的添加使用的模块。

  • httpd-2.4中默认的mpm模式是event,若是想要使用prefork或者worker模式则须要在编译的时候指定编译全部的mpm模块并指定其中一个为默认的。

  • 本身测试使用动态编译和静态编译混合使用容易出现问题,因此仍是不建议混合使用编译。

  • 本身编译测试中若是指定mpm模块是event则编译为静态模块,若是编译三个mpm模块并切默认的mpm模块不是event则这三个模块默认编译成动态的 .so 模块。

httpd模块

模块列表:
基本(B)模块默认包含,必须明确禁用;扩展(E)/实验(X)模块默认不包含,必须明确启用

模块名称 状态 简要描述
mod_actions (B) 基于媒体类型或请求方法,为执行CGI脚本而提供
mod_alias (B) 提供从文件系统的不一样部分到文档树的映射和URL重定向
mod_asis (B) 发送本身包含HTTP头内容的文件
mod_auth_basic (B) 使用基本认证
mod_authn_default (B) 在未正确配置认证模块的状况下简单拒绝一切认证信息
mod_authn_file (B) 使用纯文本文件为认证提供支持
mod_authz_default (B) 在未正确配置受权支持模块的状况下简单拒绝一切受权请求
mod_authz_groupfile (B) 使用纯文本文件为组提供受权支持
mod_authz_host (B) 供基于主机名、IP地址、请求特征的访问控制
mod_authz_user (B) 基于每一个用户提供受权支持
mod_autoindex (B) 自动对目录中的内容生成列表,相似于"ls"或"dir"命令
mod_cgi (B) 在非线程型MPM(prefork)上提供对CGI脚本执行的支持
mod_cgid (B) 在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本
mod_dir (B) 指定目录索引文件以及为目录提供"尾斜杠"重定向
mod_env (B) 容许Apache修改或清除传送到CGI脚本和SSI页面的环境变量
mod_filter (B) 根据上下文实际状况对输出过滤器进行动态配置
mod_imagemap (B) 处理服务器端图像映射
mod_include (B) 实现服务端包含文档(SSI)处理
mod_isapi (B) 仅限于在Windows平台上实现ISAPI扩展
mod_log_config (B) 容许记录日志和定制日志文件格式
mod_mime (B) 根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)
mod_negotiation (B) 提供内容协商支持
mod_nw_ssl (B) 仅限于在NetWare平台上实现SSL加密支持
mod_setenvif (B) 根据客户端请求头字段设置环境变量
mod_status (B) 生成描述服务器状态的Web页面
mod_userdir (B) 容许用户从本身的主目录中提供页面(使用"/~username")
mod_auth_digest (X) 使用MD5摘要认证(更安全,可是只有最新的浏览器才支持)
mod_authn_alias (E) 基于实际认证支持者建立扩展的认证支持者,并为它起一个别名以便于引用
mod_authn_anon (E) 提供匿名用户认证支持
mod_authn_dbd (E) 使用SQL数据库为认证提供支持
mod_authn_dbm (E) 使用DBM数据库为认证提供支持
mod_authnz_ldap (E) 容许使用一个LDAP目录存储用户名和密码数据库来执行基本认证和受权
mod_authz_dbm (E) 使用DBM数据库文件为组提供受权支持
mod_authz_owner (E) 基于文件的全部者进行受权
mod_cache (E) 基于URI键的内容动态缓冲(内存或磁盘)
mod_cern_meta (E) 容许Apache使用CERN httpd元文件,从而能够在发送文件时对头进行修改
mod_charset_lite (X) 容许对页面进行字符集转换
mod_dav (E) 容许Apache提供DAV协议支持
mod_dav_fs (E) 为mod_dav访问服务器上的文件系统提供支持
mod_dav_lock (E) 为mod_dav锁定服务器上的文件提供支持
mod_dbd (E) 管理SQL数据库链接,为须要数据库功能的模块提供支持
mod_deflate (E) 压缩发送给客户端的内容
mod_disk_cache (E) 基于磁盘的缓冲管理器
mod_dumpio (E) 将全部I/O操做转储到错误日志中
mod_echo (X) 一个很简单的协议演示模块
mod_example (X) 一个很简单的Apache模块API演示模块
mod_expires (E) 容许经过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容
mod_ext_filter (E) 使用外部程序做为过滤器
mod_file_cache (X) 提供文件描述符缓存支持,从而提升Apache性能
mod_headers (E) 容许经过配置文件控制任意的HTTP请求和应答头信息
mod_ident (E) 实现RFC1413规定的ident查找
mod_info (E) 生成Apache配置状况的Web页面
mod_ldap (E) 为其它LDAP模块提供LDAP链接池和结果缓冲服务
mod_log_forensic (E) 实现"对比日志",即在请求被处理以前和处理完成以后进行两次记录
mod_logio (E) 对每一个请求的输入/输出字节数以及HTTP头进行日志记录
mod_mem_cache (E) 基于内存的缓冲管理器
mod_mime_magic (E) 经过读取部分文件内容自动猜想文件的MIME类型
mod_proxy (E) 提供HTTP/1.1的代理/网关功能支持
mod_proxy_ajp (E) mod_proxy的扩展,提供Apache JServ Protocol支持
mod_proxy_balancer (E) mod_proxy的扩展,提供负载平衡支持
mod_proxy_connect (E) mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
mod_proxy_ftp (E) mod_proxy的FTP支持模块
mod_proxy_http (E) mod_proxy的HTTP支持模块
mod_rewrite (E) 一个基于必定规则的实时重写URL请求的引擎
mod_so (E) 容许运行时加载DSO模块
mod_speling (E) 自动纠正URL中的拼写错误
mod_ssl (E) 使用安全套接字层(SSL)和传输层安全(TLS)协议实现高强度加密传输
mod_suexec (E) 使用与调用web服务器的用户不一样的用户身份来运行CGI和SSI程序
mod_unique_id (E) 为每一个请求生成惟一的标识以便跟踪
mod_usertrack (E) 使用Session跟踪用户(会发送不少Cookie),以记录用户的点击流
mod_version (E) 提供基于版本的配置段支持
mod_vhost_alias (E) 提供大批量虚拟主机的动态配置支持

说明:以上模块信息可能会不许因此请以官网为准。

相关文章
相关标签/搜索