Apache 17年
A Patchy Server = apache 一个充满补丁的服务器
FSF:GNU, GFL
ASF: Apache Software Foundation
Web: httpd
Tomcat
Hadoop
HTTPD:
2.2, 2.4,2.0
配置有着巨大的差别
Httpd特性:
1.事先创建进程;
请求来了,就分配以创建的进程给请求,如果再有请求来,再
创建新的进程;按需维持适当的进程。
2.模块化设计
核心比较小,各种功能(包括php)都通过模块添加,读通过运行时启用
支持运行时配置,支持单独编译模块
支持多种方式的虚拟主机配置
Socket =IP+Port
虚拟主机:
基于IP的虚拟主机
基于端口的虚拟主机
基于域名的虚拟主机(常用)
请求报文: methodurl version
Header
body
GET /download/linux.tar.gz HTTP/1.0
HOST: www.magedu.com
支持https协议(mod_ssl)
支持用户认证
支持基于IP或者主机名的ACL
支持每目录的访问控制
支持URL重写,/image/a.jpeg
RetHat(httpd):
Rpm包
源码编译
Httpd受SELinux控制,所以要确保SELinux处在禁用的状态,否则
很多服务都不能正常运行的。
查看SELinux的状态;
当前生效:Gettenforce
永久有效:
Vim /etc/sysconfig/selinux
#SELINX=permissive ---禁用
!yum
Httpd-devel.rpm
Httpd:
/usr/sbin/httpd(MPM,prefork)
实先启动线程
有一个master线程属于root组,这个由系统启用
Httpd:root, root(master process)
http:apache, apache(worker process)
port(80/tcp),ssl(443/tcp)
/etc/httpd: 工作根目录,相当于安装目录
主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/modules: 模块目录(实际不在这里)
/etc/httpd/logs --->/var/log/httpd: 目录日志
日志文件有两类:访问日志access_log,错误日志:err_log
/var/www:
Html:
Cgi-bin: Common GatewayInterface,处理动态内容,通用网关
接口。
Clent -->httpd(index.cig)-->spawnfrocess(index.cgi)-->httpd-->client
可以开发网页的CGI语言:
Perl,python,java(servlet,JSP),php
Fast cgi: 事先在动态服务器创建线程,httpd把动态请求
发给动态服务器线程,这样就可以把web服务器和
动态服务器分开。
程序:指令和数据
数据:数据库服务
事先创建进程
按需维持
Httpd安装:
#yum –y install httpd --安装
#Rpm –ql httpd –查看安装生成的文件
/usr/bin/ab --------压力测试
#service httpd start -----启动服务
#ps aur | grep httpd
如果/www/http/下没有东西,则会默认
访问./conf.d/底下的webcome.conf
Httpd.conf配置说明:
Grep “Section” httpd.conf
###Section1:Global Envirenment -- 全局环境段
###Section2:’Main’ server configuration – 主服务器
###Section3:Virtual Hosts—虚拟主机
Section2和section3只能有一个生效。
由指令和指令的值组成,指令不区分大小写的,
参数路径(指令的值)是区分大小写的
#ServerTokens OS --------定制信息显示程度的
#yum –y install httped-manual ---安装manual包
可以查看配置说明
ServerRoot “/etc/httpd” -- 服务器的根目录,不要乱改
FidFile run/httpd.pid –每个服务都有一个pid号
Timeout 120 --超时时间,跟TCP有关
KeepAlive off ----是否使用长连接
MaxKeepAliveRequest 100 ---一次连接打开最大的长连接数,超过重新排队;0表示无限
KeepAliveTimeout 15: --一次长连接的断开时间,如果长连接只请求一个资源后,再也没申请其它资源,所以要断开;可以降低到5秒,对非常繁忙的服务器非常有效。
没有一配置就万能的参数,要测试的,LoadRunner就是很好的测试工具
MPM: 多道处理模块,用于定义apache处理用户请求的工作模型
Mpm_winnt: Windows专用的
Prefork: 预先生成进程,一个请求用一个进程相应
Worker: 一个请求用一个线程相应(启动多个进程,每个进程生成多个线程,每个请求用一个线程响应),如果要修改资源,会枷锁,性能下降,在Linux上的表现不然prefork,所以Linux默认用prefork
Event: 一个进程处理多个请求,基于事件驱动(http2.4才支持,默认,最强大)
#http –l ---查看支持哪些模型
core.c ---- 核心,包括反向代理,缓存
prefork.c ----
http_code.c ---- 是core的补充
mod_so.c ----
启用worker模型:
#Rpm –ql httpd | grep bin
/usr/sbin/httpd.worker
如果要启动worker模型,修改/etc/httpd/conf,启用就可以了。
StartServers 8 ---启动多个空闲进程
MinSpareServers 5 ---最少空闲进程
MaxSpareServers 20 ---最大空闲进程
ServerLimit 256 ---MaxClients的上限值
MaxClients 256 ---最大客户端数
MaxRequestsPerChild 4000 ---一个进程最多响应的请求数
StartServers 2 ---启动多个进程
MaxClients 150 ---最大客户端数
MinSpareServers 25 ---最少空闲线程
MaxSpareServers 75 ---最大空闲线程
ThreadsPerChild 25 ---一个线程可以生成多少线程
MaxRequestsPerChild 0 ---每个一个进程可以响应多少个请求,这是由线程相应,所以不做限定
#监听端口,可以监听多个
Listen 80
Listen 8080
#LoadModule
Include conf.d/*.conf
User apache ---使用apache对象
Group apache ---使用apache 组