A Patchy Server = apache 美国武装直升机

ASF:阿帕奇软件基金会 

        Tomcat    

        Hadoop :可以将数千台电脑组合起来完成一个任务

www.apache.org 

apache是由httpd优化而来

httpd:

    Web Server, 开源

    版本:2.2 ,2.4,2.0,1.3

apache特性:

  事先创建进程

  按需维护创建适当的进程

  模块化设计,核心比较小,各种功能都模块添加(包括PHP)

         支持运行配置,支持单独编译模块

  支持多种方式的虚拟主机配置

虚拟主机:

     物理服务器只有一个

     Web程序也只有一个

     却可以服务多个不同的站点

虚拟主机:

     基于IP的虚拟主机

     基于端口的虚拟主机

     基于域名的虚拟主机

#############################

支持https协议

支持用户认证

支持基于IP或主机名的ACL

支持每目录的访问控制

支持URL重写

##############################

安装: 源码编译安装必须掌握

   rpm包

   源码编译

1、httpd:SELinux(事先让其让其处于permssive,disabled)

     方法:getenforce 看返回值  如果是inforcing

         执行setenforce 0 进行暂时关闭

        或:

         执行vim /etc/sysconfig/selinux =disabled永久关闭

2、只需要装httpd 

         进程在:

            /usr/sbin/httpd(MPM:prefork)

         服务脚本:

            /etc/rc.d/init.d/httpd

             port:(80/tcp),(ssl:443/tcp)

         工作根目录:相当于程序安装目录

             /etc/httpd 

         主配置文件:

            /etc/httpd/conf/httpd.conf

                  /etc/http/conf.d/*.conf 

         模块目录:

            /etc/httpd/modules

         日志目录:

            /etc/httpd/logs ---> /var/log/httpd 

         日志文件有两类,访问日志access_log,错误日志:err_log

         响应用户访问的页面储存在::

            /var/www/

                 html:静态页面

                 cgi-bin:动态页面

                 

                cgi:能够让web服务器在必要的时候,启动另外一个应用程序去处理动态内容

                 客户端 --> httpd (index.cgi) --> 发起一个跟cgi程序语言相关的进程处理index.cgi --> httpd --> 客户端 


         客户端向服务器请求一个动态内容的时候,httpd发起一个跟cgi程序语言相关的进程处理index.cgi;然后再发给httpd ,httpd形成报文再发给客户端


   但是如何解决高并发多个用户去访问多个动态页面:

         让web服务器和动态应用程序服务器进程结合;他俩都创建很多空闲子进程;当有人发起动态请求的时候,web服务器只需要将请求交给一个空闲子进程去执行。这种机制叫fastcgi,这个进程再也不需要web服务器去启动和销毁了。它工作在套接字上。这样web服务器和动态服务器进程可以放在不同的主机上

       用户请求的是静态内容 web服务器直接返回。如果是动态页面,web通过tcp/IP发给另一台主机上的动态服务器进程。

#################################################################

动态服务器进程 和数据库 都是CPU密集型

程序=指令+数据

    数据:数据库服务器

用过数据很少,在本地创建一个文件就可以。如果很多就再专门准备一台数据库服务器。

数据库层|应用程序层|web服务器层

    |        |          |

   MySQL      PHP        Apache

      \        |          /

             LAMP 

    放在同一台服务器上也可以

                |

Hadoop 几千台机器协同工作,实现效率最大化

                |

如何让计算能力更高效,一定要榨干榨尽自己的CPU

################################################

安装httpd

1、yum -y install httpd

2、rpm -ql httpd 看看安装了哪些

     /etc/httpd/conf/httpd.conf主配置文件

     /etc/httpd/conf/magic 定义如何解析非纯文本文档

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

                    /etc/rc.d/init.d/httpd 服务脚本的配置文件

     /usr/bin/ab 服务器压力性能测试

     /var/www 网页文件的存放路径 

3、service httpd start 启动

4、nststat -tnlp | grep :80

5、ps -aux | grep httpd 发现已经有很多空闲进程

6、在网页上搜索自己虚拟机的IP会看到redhat设置的欢迎页面

7、欢迎页面的配置文件在/etc/httpd/conf.d/welcome.conf

8、默认网页路径在/var/www/html 路径下

9、在8目录下创建a.html

10、<html>

        <title>Hello world</title>

         <hl>haha</hl>

          Welcome to our website

    </html>

11、不需要重启

12、咱们去看看httpd的配置文件,首先复制一份,防止改错

13、cp /etc/httpd/conf/httpd.conf  httpd.conf.bak

14、这个配置文件分为三个段:

            Section 1 :全局环境

            Section 2 :主服务器配置

            Section 3 :虚拟主机   

        第二和第三不能同时生效。默认2

警号后面的都是注释信息,警号后面没有加空格的都是可以启用的选项

指令不区分大小写,参数和路径严格区分大小写

15、这个文件中的ServiceTokens OS 用于管理:当搜索不存在的页面,返回主机的信息等相关信息

16、我们要将OS改为ServiceTokens Major

17、安装httpd-manual这个包会自动生成一个配置文件

                /etc/httpd/conf.d/menu.conf

                重启服务

18、搜索192.168.9.247/manual/即可查看帮助信息

19、继续看配置文件:ServiceRoot服务器的根目录

20、PidFile run/httpd.pid pid号的存放路径

21、TimeOut 超时时间 根TCP相关

22、KeepAlive 是否使用长链接 如果访问量不是特别大,就打开。不用每个链接都三次握手

23、MaxKeepAliveRequests 长链接没有超时,但是限制你请求100个超过100个重新排队。

24、KeepAliveTimeout 15 不做其他请求15秒自动断开,对于繁忙的服务器可以改低一点儿

25、LoadRunner这个工具可以真是测试服务器运行情况

26、继续:MPM 多道处理模块;定义apache在相应多个用户请求时候所工作的模型

              常见:

                    mpm_vinnt(window专业)

                    worker(一个进程下使用多个线程来响应用户请求)2.2资源消耗量非常的多,而且会有大量的进程切换;

                    event (一个进程直接处理多个用户请求)2.4版本以后支持,这是最强大的

                    prefork(Linux上预先建立进程):让进程直接去处理用户请求                  

       面试问:web服务器集中模型的区别                    

27、httpd -l   列出当前服务器支持的模型 

28、显示没有装worker模型但是rpm -ql httpd | grep bin 可以看到/usr/sbin/httpd.worker有

29、如果我们要使用worker这个模型要vim /etc/sysconfig/httpd  把路径改一改

30、2.4版本再用event模型

31、继续配置文件:

            <Module prefork.c>

              StartServers   8 服务器一启动就要启动多少个空闲进程

              MinSpareServers 5 最少空闲5个进程 

              MaxSpareServers 20 最大空闲进程

              ServerLimit    256 为MaxClients指定一个上限值 (前提把服务器关掉)

              MaxClients     256 最大客户端数;最多允许多少个用户同时连进来

              MaxRequestsPerChild 4000 每一个子进程最多响应多少次的用户请求

            </IfModule>

      ########################################

             <IfModule worker.c>

               StartServers    2  默认启动多少个进程

               MaxClients     150 最多允许多少个用户请求连进来

               MinSpareThreads 25  最小空闲线程

               MaxSpareThreads 75  最大空闲线程

               ThreadsPerChild 25  一个进程最多生成多少个线程

               MaxRequestsPerChild 0 每一个进程最多响应多少个请求    

哪一个数值最适合你的模型需要测试

Listen 80监听

32、LoadModule :哪个模块不需要就注释掉

33、Include conf.d/*.conf    conf.d下所有的文件都是主配置文件的组成部分

       再往下讲主服务段,和虚拟主机段