• Day19-apache


    HTTPD(俗称apache)

      简介:目前来说,Linuxweb服务器主要用apache与nginx。

         1.web服务器的输入/输出结构:

            单线程I/O结构

            多线程I/O结构

            复用的I/O结构,单个线程相应多个请求。

            复用的多线程I/O结构:多个线程,每个线程相应多个请求

         2.apache组成:core(核心)+modules(模块)。http是高度模块化的。由核心与跟多模块组成,你可以装在模块,也可以设置让着这个                                   模块是否启用

         3.多道处理模块,针对于上面的服务器结构有不同模块。(非一个模块,而是针对下面模块的统称。)

            (1)prefork:一个进程一个请求。一个线程一个请求。

                工作模式:进来一个请求,创建一个进程,同时维护一部分进程为常用进程。可以设置最小空闲进程数目(节约时间),设置最大进程数(防止太多请求处理不过来,卡死。)

                特性:这种模式是基于I/O模型为select(事件分离器)来工作的,这个文件描述符最大只能1024个。所有这种模式最多1024个。

                实现web模式:多线程I/O结构

            (2)worker:一个进程,多个线程。一个线程,一个请求。

                工作模式:一个进程多个线程,但是一个线程还是只能处理一个请求,性能上与prefork差不多。

                实现web模式:多线程I/O结构

            (3)event:单线程,相应多个请求。而且基于事件驱动。

                event-driven(事件驱动):主要目的在于实现单线程,响应多个请求。

                实现web模式:复用的多线程I/O结构。

      httpd的功能特性:

            1.alias(路径别名)

            2.authentication(用户认证)

            3.virtual host(虚拟主机)

            4.反向代理

              负载均衡

            5.用户站点

            6.CGI(通用网络接口)

      httpd安装及目录:

          yum安装:#yum -y install httpd

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

          运行目录:/etc/httpd

          配置文件:

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

              扩展配置文件:/etc/httpd/conf.d/*.conf

          socket:80/tcp  443/tcp

          站点根目录:/var/www/html

                CGI目录:/var/www/cgi-bin

          日志切割:/etc/logritate.d/httpd

      配置文件:

          /etc/httpd/conf/http.cof

          解析:配置参数  值

            1.配置指令不区分字符大小写

            2.值有可能区分大小写

            3.有的指令可以出现多次

          配置文件格式:

             1.全局配置

             2.主机配置:用于仅提供一个站点时

             3.虚拟主机:用于提供多个站点时,不能与主机配置同时出现。

          配置文件测试语法:service httpd configtest /httpd -t

          常见配置段:

                1.httpd 工作进程目录 

                    sever root  ServerRoot "/etc/httpd"

                2.Listen [IP:]port

                  例如:Listen 80

                     Listeen 192.168.247.111:8080

                     

                 3.配置使用keep alive(长连接)

                      KeepAlive   {on|off}  开启|关闭长连接

                      keepalivetimeout  2   长连接超时时间

                      maxkeepaliverequests  50  最大长连接时间

                        

                 4.MPM(多道处理模块)

                       1.查看支持的模块:#httpd -l

                        

                      2.模块设置特性): 

                        prefork :                 

                          <IfModule prefork.c>#:容器标签
                          StartServers 8#默认启动的工作进程数
                          MinSpareServers 5#最小空闲进程数
                          MaxSpareServers 20#最大空闲进程数
                          ServerLimit 256#最大活动进程
                          MaxClients 256#并发请求最大数
                          MaxRequestsPerChild 4000#每个子进程在生命周期内所能服务的最多请求个数
                          </IfModule>

                        worker:worker模型是由root启动一个主进程,然后可以启动多个子进程,子进程有可以启动多个线程,一个线程只能处理一个请求。    

                          <IfModule worker.c>
                          StartServers 4#启动的子进程个数
                          MaxClients 300#并发请求的最大数
                          MinSpareThreads 25#最小空闲线程数
                          MaxSpareThreads 75#最大空闲线程数
                          ThreadsPerChild 25#每个子进程可以生成的线程数
                          MaxRequestsPerChild 0#每个子进程在生命周期内所能服务的最大请求数(0表示不足限定)
                          </IfModule>

                      3.配置使用模块:系统默认使用httpd模块,如果要用其他模块需要更改配置:/etc/sysconfig/httpd.

                             

                      5.DSO(动态记载模块)

                        格式:LoadModule    模块名称  模块路径 

                         

                         查看已装载的模块。#httpd -M

                        

                     6.设置站点根目录

                        DocumentRoot   /path/

                        

                      7.配置页面访问属性 

                               

                        <Directory />
                        Options:

                            Indexes:缺少页面时,允许将目录及所有文件列出

                            FollowSymLinks:允许跟随符号链接所指向的原始文件

                            None:全部禁用

                            All:全部启用

                            ExecCGI:允许使用mod_cgi模块指向CGI脚本

                            Includes:允许使用mod_include模块实现服务器包含(SSI)

                            MultiViews:允许使用mod-negotiation实现内容协商

                            SyLinksIFOwnerMatch:链接文件属主属组与原始文件属主属组相同时,允许连接符号所指向的原始文件 

                        </Directory>

                        <Directory>

                          Options

                          AllowOverride None (None表示下面的规则生效)

                          Order  Allow,Deny(次序是先看Allow规则,在看Deny规则)

                          Allow(允许的IP)

                          Deny(拒绝的IP)

                        </Directory>                                

                     8.定义默认主页面

                        DirectoryIndex index.html  index.php home.html

                    9.用户目录

                        UserDir  disablied:一般禁止

                    10.配置日志功能

                        /var/log/httpd

                          access.log:访问日志

                          error.log:错误日志

                        访问日志:

                            CustomLog "文件位置" 别名

                            LogFormat   格式定义字符串   别名

                              %h:客户端地址

                              %l:远程登录名,通常为-

                              %u:认证时的远程用户名,没有认证时为-

                               %t:收到请求的时间

                               %r:请求报文的起始行

                                %>s:相应状态码

                               %b:相应报文长度,单位为字节

                               %{Header_Name}i:记录指定请求报文首部的内容(value)

                          错误日志:

                                ErrorLog

                      11.路径别名:

                        格式:Alias  一个url  一个文档目录(当访问某个url的时候就是访问这个文档目录中的内容)

                        www/alias/   "/path"

                        注意:这里代表的是,当访问www/alias的时候,alias里面的内容来自,/path里面

                      12.设定默认字符集

                        AddDefaultCharset  UTF-8

                      13.CGI脚本路径别名。

                        什么是CGI:Common  gateway  Interface (通用网关接口,就是当web服务器需要返回的内容需要执行的时候,就调用CGI执行后返回)

                        ScriptAlias /url   /phth 

                          这里,当用户访问这个url的时候,相对应的目录(path)中的所有文件都能够通过CGI协议,执行后返回给用户。

                          

                          注意:这里系统是有默认url跟path的,一般不要更改

                      14.基于用户的访问控制

                        虚拟用户:这里访问文档的时候需要输入用户密码,但是不是服务器的用户名和密码,而仅仅是为了获取某个特定资源的认证虚拟用户。

                        用户密码文件放置位置:①/etc/httpd/conf/.htpasswd

                                     注意:这里默认是没有这个文件的,但是创建这个密码文件可以通过htpasswd命令来创建。

                                       命令格式:htpasswd 【参数】

                                              -c:创建密码文件

                                              -m:使用MD5把密码加密后存放   

                                                      -b:批量创建  

                                                                          -D:删掉某些用户   

                                       实例:创建密码文件及zrq用户

                                         

                                       注意:第一次创建用户的时候,由于没有密码文件,所有要加-c选项 创建密码文件。

                           

                                   ②放置在SQL中  

                        认证类型(auth):

                          basic:基本认证,账号密码明文发送。

                          digest:摘要认证,hash编码后发送认证。

                         认证提供者(authentication provider):账号密码保存的位置。

                         授权机制(authorization):根据什么进行认证

                        案例:基于文件,做基本认证,根据用户和组进行授权.

                            第一步:更改配置文件:

                              

                               注意:这里要先保证/var/www/html能够访问。

                            第二步:创建配置文件及目录:

                              #htpasswd -c -m username

                            第三部:如果要基于组认证

                              1.把AuthUserFile 后加一行,AuthGroupFile

                              2.并把Require group Groupname

                              3.创建组文件:

                                  组名:用户1 用户2 用户3

                     15.虚拟主机

                        解析:一个物理服务器提供多个站点服务(注意:只用虚拟主机,要先关掉中心主机,就是注释掉DocumentRoot)

                        web服务器:Socket(IP,port)

                        第一种:基于不同的IP实现不同的虚拟主机

                            变化IP

                        第二种:基于端口实现不同的虚拟主机

                            变化port

                        第三种:基于不同的主机名实现不同虚拟主机

                            变化SeverName

                                      注意:这里,当用户请求域名的时候要先做dns解析,所以服务器应该在收到请求后通过http首部的host来判断用户请求的是哪个虚拟主机。

                          <virtualhost IP:port>

                            SeverName

                            DocumentRoot  ""

                            <Directory>

                               Options

                            </Directory>

                            SeverAlias

                            SeverAdmin

                          </virtualhost>

                          虚拟主机都可以单独配置各种配置:

                            用户认证

                            访问日志

                            错误日志

                            别名

                            脚本别名

                        

  • 相关阅读:
    [书目20130415]改变:28天让自己内心强大
    [引]软件著作权登记申请所需文件
    [转]动软代码生成器之模板功能介绍
    [转]C# 冒泡排序你还会吗?
    [转]细说ASP.NET Forms身份认证
    [转]listview加载性能优化ViewHolder
    [转]App for Android (2) —— Python篇
    [转]sqlserver 创建分区表
    [转]c# 四舍五入、上取整、下取整
    常用 Java 静态代码分析工具的分析与比较
  • 原文地址:https://www.cnblogs.com/kevinzr/p/12053888.html
Copyright © 2020-2023  润新知