第十周博客作业

1、Centos系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式
2、简述request报文请求方法和状态响应码
3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

1、Centos系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式

(1)什么是MPM

Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率。Apache 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性。

Apache 2.0 扩展此模块化设计到最基本的 web 服务器功能。 它提供了可以选择的多处理模块(MPM),用来绑定到网络端口上,接受请求, 以及调度子进程处理请求。

扩展到这一级别的服务器模块化设计,带来两个重要的好处:

  • Apache 能更优雅,更高效率的支持不同的平台。尤其是 Apache 的 Windows 版本现在更有效率了,因为 mpm_winnt 能使用原生网络特性取代在 Apache 1.3 中使用的 POSIX 层。它也可以扩展到其它平台 来使用专用的 MPM。
  • Apache 能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即 workerevent; 需要可靠性或者与旧软件兼容的站点可以使用 prefork

在用户看来,MPM 很像其它 Apache 模块。主要是区别是,在任何时间, 必须有一个,而且只有一个 MPM 加载到服务器中。

(2)MPM的三个模型:

prefork:多进程模型,一个进程响应一个请求;(两级进程模型,父进程管理子进程,每一个子进程相应一个请求)。

优点:稳定可靠、执行效率高,任何一个进程的崩溃不会影响其它请求.

缺点:在大并发的时候对服务器资源消耗严重.

3

worker:多进程多线程模型,一个线程响应一个请求;(三级进程模型,父进程管理子进程,子进程通过线程响应用户请求;每个线程处理一个用户请求);

优点:在高并发的情况下,对服务器的资源消耗相对prefork模型要小很多.

缺点:执行效率、稳定性都不如prefork模型.linux不是个原生支持线程的操作系统,经测试发现worker模型在linux上面的综合表现不如prefork模型.。

4

event:事件驱动模型,一个进程响应n个请求;(两级线程模型,父进程管理子进程,子进程通过event-drivern机制直接响应n个请求)。

5

(3)httpd-2.2的安装

[root@bogon ~]# yum install httpd -y     #CentOS6 yum源安装httpd-2.2.15

http://www.178linux.com/97967              #参见以前博客CentOS7 编译安装httpd-2.4.27

安装后启动:

[root@bogon ~]# service iptables stop      # CentOS6关闭防火墙

[root@bogon ~]# vim /etc/selinux/config   #   CentOS6关闭SELINUX

SELINUX=disabled

[root@bogon ~]# service httpd  start        #CentOS6启动httpd服务

[root@localhost ~]# systemctl stop firewalld      #CentOS7关闭防火墙  

[root@bogon ~]# vim /etc/selinux/config   #   CentOS7关闭SELINUX

SELINUX=disabled

[root@localhost ~]# systemctl start httpd           # CentOS7启动httpd服务

 

(4)实现prefork工作方式

CentOS6 :配置方法

安装完成后,httpd的默认运行模式为prefork,查看其运行模式为:

[root@bogon ~]#httpd -M | grep mpm

10

在查看或修改其对应prefork配置:

[root@bogon ~]# vim /etc/httpd/conf/httpd.conf

12

启动httpd服务并查看相关的进程状态:

[root@bogon ~]# ps aux | grep httpd

33

查看其中已经启动了八个子进程

使用ab工具对相应的URL进行压力测试并观察进程的状况:

[root@bogon ~]# ab -n 100000 -c 10 http://172.16.15.12/index.html

3

 

 

(5)实现worker工作方式

CentOS6 :配置方法

[root@bogon ~]# vim /etc/sysconfig/httpd  #编辑配置文件

37

 

在查看或修改其对应worker配置:

[root@bogon ~]# vim /etc/httpd/conf/httpd.conf 

38

启动httpd服务并查看相关的进程状态:

[root@bogon ~]# service httpd restart

[root@bogon ~]# ps aux | grep httpd

6

查看其中已经启动了3个进程

使用ab工具对相应的URL进行压力测试并观察进程的状况:

(6)实现event工作方式

http-2.2的event模式还处于测试阶段,因此不建议在生产环境上运行,httpd-2.4的event模式为正式版可在生产环境上部署。

CentOS6 :配置方法

[root@bogon ~]# vim /etc/sysconfig/httpd  #编辑配置文件

10

在查看添加其对应event配置:

[root@bogon ~]# vim /etc/httpd/conf/httpd.conf

13

StartServers: 默认启动的工作进程数;

MinSpareThreads:最小线程数;

MaxSpareThreads: 最大线程数;

ThreadsPerChild:每个子进程可生成的线程数;

MaxRequestsPerChild: 单个子进程累计最多处理到少个请求,默认0,不限制的意思,可能会导致内存泄露,超过该值则退出重启apach

启动httpd服务并查看相关的进程状态:

[root@bogon ~]# service httpd restart

[root@bogon ~]# ps aux | grep httpd

11

查看其中已经启动了3个进程

使用ab工具对相应的URL进行压力测试并观察进程的状况:

1

(7)在Centos 7上设置mpm三个模式: 
httpd-2.4 修改mpm 
[root@ns1 ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf

31

2、简述request报文请求方法和状态响应码

(1)http事物

http事务有请求(request)和响应(response)

报文语法格式:

 

request报文   : <method><request-URL><version>

                                               <headers>

                                              <entity-body>

 

response报文  : <version><status><reason-phrase>     # 版本信息 ;  #  三位数字,如200,301, 302, 404, 502; 标记请求处理过程中发生的情况; #状态码所标记的状态的简要描述;

                                          < headers>                                       #  每个请求或响应报文可包含任意个首部;每个首部都有首部名称,后面跟一个冒号,而后跟上一个可选空格,接着是一个值,即Name:Value;

                                           <entity-body>                                 #请求时附加的数据或响应时附加的数据;

(2)http请求步骤

1)、建立或处理连接,web浏览器和web服务器建立相应的TCP连接。
2)、发送请求:web浏览器向web服务器发送http请求,如:GET/sample/hello.jsp HTTP/1.1。
3)、处理请求:用于对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;
4)、访问资源,访问获取请求报文中请求的资源;
5)、构建响应报文;
6)、发送响应报文;
7)、记录请求日志;

 (3)request报文请求方法

method(方法):

GET:从服务器获取一个资源;

HEAD:只从服务器获取文档的响应首部;

POST:向服务器发送要处理的数据;

PUT:将请求的主体部分存储在服务器上;

DELETE:请求删除服务器上指定的文档;

TRACE:追踪请求到达服务器中间经过的代理服务器;

OPTIONS:请求服务器返回对指定资源支持使用的请求方法;

注意:DELETE非常危险

协议查看或分析的工具:

tcpdump, tshark, wireshark

(4) 状态响应码

status(状态码):

1xx:100-101, 信息提示;

2xx:200-206, 成功

3xx:300-305, 重定向

4xx:400-415, 错误类信息,客户端错误

5xx:500-505, 错误类信息,服务器端错误

 

常用的状态响应码:

200:成功,请求的所有数据通过响应报文的entity-body部分发送;OK

301:请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently

302:与301相似,但在响应报文中通过Location指明资源现在所处临时新位置; Found

304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified

401:需要输入账号和密码认证方能访问资源;Unauthorized

403:请求被禁止;Forbidden

404:服务器无法找到客户端请求的资源;Not Found

500:服务器内部错误;Internal Server Error

502:代理服务器从后端服务器收到了一条伪响应;Bad Gateway

3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

(1)http服务器的配置文件

   httpd服务的主配置文件通常为httpd根目录下的conf/httpd.conf文件,通过yum安装的httpd服务的主配置路径通常如下:

http2.2和http2.4主配置文件路径:/etc/httpd/conf/httpd.conf

 主配置文件的格式大体分为三部分:     

                            ### Section 1: Global Environment                #全局配置段

                            ### Section 2: ‘Main’ server configuration             #主服务器配置

                            ### Section 3: Virtual Hosts           #虚拟主机配置

在httpd-2.4版本中删除了相应的描述,不过大体与httpd-2.2相同。

另外除了主配置文件之外,也存在着其他的配置目录路径,通常在主配置文件中会使用Include conf.d/*.confInclude conf.modules.d/*.conf(httpd-2.4)类似的语句去调用对应的目录下的配置文件,其路径格式为相对路径,根目录由主配置文件中的Serverroot决定。

(2)httpd服务的基础配置

1、修改监听的IP和PORT

格式: Listen  [IP:]PORT

1)省略IP表示为0.0.0.0;

2) Listen指令可重复出现多次;例如:  Listen  80  、  Listen  8080

3) 修改监听socket,重启服务进程方可生效;

4)若限制其必须通过ssl通信时,protocol需定义为https;

编辑配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

添加监听端口

30

重启服务并查看端口:

[root@localhost ~]# systemctl restart httpd

[root@localhost ~]# ss -tnl

32

2、使用长连接

1)首先http是无状态的,持久连接是tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;

2) 使用数量限制和时间限制来断开连接控制;

3) 当对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应,较好的解决方案是设置使用较短的持久连接时长,以及较少的请求数量;

创建配置文件:

[root@localhost ~]# vim  /etc/httpd/conf/conf.d/keepalive.conf

            KeepAlive on                    #启用长连接

        KeepAliveTimeout 15           # 持续时长15秒

        MaxKeepAliveRequests 100             #最大请求数量100个资源

1

[root@localhost ~]#  httpd –t               #  检查语法错误

 

 

3、定义中心服务器’Main’ server的文档页面路径

文档路径映射:  DoucmentRoot指向的路径为URL路径的起始位置,其相当于站点URL的根路径;

   (服务器文件系统路径) /web/host1/index.html  ——映射——>  (网页)  /index.html   

在httpd服务的主配置文件中,默认情况下DocumentRoot "/var/www/html"定义了默认web站点目录的路径。

如需自定义默认的目录,需要找如下格式进行添加:

httpd-2.2配置:
<Directory “/PATH/TO/FILE”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

httpd-2.4配置:
<Directory “/PATH/TO/FILE”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

               

创建主站数据目录:[root@ns1 ~]# mkdir /data/web/www -pv

                                       mkdir: 已创建目录 “/data”

                                       mkdir: 已创建目录 “/data/web”

                                       mkdir: 已创建目录 “/data/web/www”       

                                   [root@ns1 ~]# vim /data/web/www/test.html    #编辑测试页

                                                       <html>
                                                                 <head>
                                                                           test.page
                                                                 </head>
                                                           <body>
                                                                 <h1>test.page</h1>

                                                          </body>
                                                      </html>

                              [root@ns1 ~]# vim /etc/httpd/conf/httpd.conf       #配置文件

5

[root@localhost ~]# httpd -t                                  #检查语法
Syntax OK
[root@localhost ~]# systemctl restart httpd        #重启服务

测试网页:

6

 

 

(3)httpd的访问控制

1) 可基于两种机制指明对哪些资源进行何种访问控制

基于系统路径控制:

基于文件使用控制:

基于URL路径控制: <location “”>…

2)基于Directory中的访问控制

  • options 包括以下可选参数:

  • AllowOverride选项用于定义每个目录下.htaccess文件中的指令类型,但通常设置None。

基于来源地址的访问控制

Httpd-2.2控制页面资源允许所有来源的主机可访问

1

只允许172.16.15网段的主机访问

2

Httpd-2.4控制页面资源拒绝所有来源的主机可访问

基于ip可控制:

基于主机名控制

(4)基于用户的访问控制

(5)虚拟主机

基于IP的虚拟主机示例:

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/99402

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code