1 概述

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。20世纪90年代初,国家超级计算机应用中心NCSA开发,1995年开源社区发布apache(a patchy server)

2 httpd特性:

.高度模块化:core + modules

.DSO: Dynamic Shared Object动态加/卸载

.MPM:multi-processing

module多路处理模块

3 httpd功能特性

.虚拟主机:基于IP、Port、FQDN来创建虚拟主机,可以在一台物理服务器上搭建多个网站

.CGI:Common

Gateway Interface,通用网关接口

网关解决了不同的网络或者不同的协议之间的通信,相当于是翻译的作用,这里是一个通用的概念

正向代理:为客户端访问外部网络提供服务,主要是提供了缓存,同时也可以进行用户行为控制

反向代理:起到了调度的作用,同时也可以做行为控制,nginx可以作为反向代理服务器,haproxy是专业的反向代理服务器

.负载均衡:根据用户的访问量来控制将请求分发到哪一台服务器上

.路径别名

.丰富的用户认证机制:如打开页面后弹出用户名和密码,一般不用web提供的,都是公司自己定制实现

basic

digest

.支持第三方模块

4 Httpd安装

.版本

CentOS6: 2.2

CentOS7: 2.4

.安装方式:

rpm:centos发行版,稳定,建议使用

编译:定制或特殊需求,如软件版本有漏洞,要通过源码编译安装实现,或者定制自己的特定需求功能

.CentOS 6程序环境:httpd-2.2

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

/etc/httpd/conf/httpd.conf配置了Include

conf.d/*.conf这句话,表示模块可以单独写在/etc/httpd/conf.d/这个路径下,写出独立的配置文件,也可以加载出模块这里也可以看出,如果要额外添加配置,增加功能,可以直接写在/etc/httpd/conf.d/这个路径下的模块,这样要删除也比较好删。当主配置文件和子配置文件都有相同的配置是,如果同一字段的配置有冲突,默认是以主配置文件生效的,原因是在主配置文件中include的子配置文件这句配置在配置DocmentRoot"/app/website"之前,默认是后面的配置生效,所以DocmentRoot"/app/website"这行配置比子配置优先,覆盖了前面的配置

检查配置语法:

httpd –t

service httpd  configtest

5 httpd自带的工具程序

.httpd自带的工具程序

htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具

apachectl:httpd自带的服务控制脚本,支持start和stop

这个工具类似dns的rndc这个工具

apachectl这是一个脚本

apxs:httpd-devel包提供,扩展httpd使用第三方模块工具

rotatelogs:日志滚动工具

access.log -->access.log,access.1.log -->access.log, acccess.1.log, access.2.log依次增加log,最新的log放在文件access.log里,旧的log会依次备份

suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户身份运行

6 httpd的压力测试工具

.httpd的压力测试工具.ab来自httpd-tools服务包

.ab, webbench, http_load, seige

.Jmeter开源

.Loadrunner商业,有相关认证

.tcpcopy:网易,复制生产环境中的真实请求,并将之保存

.ab [OPTIONS] URL

来自httpd-tools包

ab测试的是最大性能,所以实际情况下,可能不是最大性能在处理http请求

-n:总请求数

-c:模拟的并行数

-k:以持久连接模式测试

ulimit  –n  # 调整能打开的并发文件数,例子ulimit -n  2048 调整为2048.ulimit -a可以查看所有参数

7 CentOS 6 httpd程序环境

.服务脚本:/etc/rc.d/init.d/httpd

脚本配置文件:/etc/sysconfig/httpd

.服务控制和启动:

chkconfighttpdon|off

service{start|stop|restart|status|configtest|reload}httpd

端口号默认是80

.站点网页文档根目录:

/var/www/html

.模块文件路径:其中/etc/httpd下的modules是软链接的关系

modules ->../../usr/lib/httpd/modules

/etc/httpd/modules

/usr/lib64/httpd/modules

CentOS 6 httpd程序环境

.主程序文件:

/usr/sbin/httpd,默认用的是httpd

/usr/sbin/httpd.worker

/usr/sbin/httpd.event

.主进程文件:

/etc/httpd/run/httpd.pid

这个是服务启动的时候才会生成,服务器停止的时候就删掉,如果已经存在同名文件,启动时候就会覆盖掉这个进程

.日志文件目录:

/var/log/httpd

access_log:访问日志

error_log:错误日志

.帮助文档包:

httpd-额外的文档包,建议要安装,否则要到官网上才能看到

yum install httpd-manual,然后要重启服务或者重新加载配置才能使用

service httpd reload然后在自己搭建的apache就可以直接访问,如  http://172.18.50.75/manual/