Apache: Httpd安装与配置

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服务器和

动态服务器分开。

Apache: Httpd安装与配置_第1张图片


程序:指令和数据

  数据:数据库服务

 

事先创建进程

   按需维持

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 组



你可能感兴趣的:(Apache)