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>

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

                        用户认证

                        访问日志

                        错误日志

                        别名

                        脚本别名

                    

Day19-apache的更多相关文章

  1. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  2. Apache Ignite之集群应用测试

    集群发现机制 在Ignite中的集群号称是无中心的,而且支持命令行启动和嵌入应用启动,所以按理说很简单.而且集群有自动发现机制感觉对于懒人开发来说太好了,抱着试一试的心态测试一下吧. 在Apache ...

  3. Apache Ignite高性能分布式网格框架-初探

    Apache Ignite初步认识 今年4月开始倒腾openfire,过程中经历了许多,更学到了许多.特别是在集群方面有了很多的认识,真正开始认识到集群的概念及应用方法. 在openfire中使用的集 ...

  4. Apache 与 php的环境搭建

    Apache和PHP的版本分别为: httpd-2.4.9-win64-VC11.zip php-5.6.9-Win32-VC11-x64.zip 下载地址: php-5.6.9-Win32-VC11 ...

  5. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

    学习架构探险,从零开始写Java Web框架时,在学习到springAOP时遇到一个异常: "C:\Program Files\Java\jdk1.7.0_40\bin\java" ...

  6. 【开发软件】 在Mac下配置php开发环境:Apache+php+MySql

    本文地址 原文地址   本文提纲: 1. 启动Apache 2. 运行PHP 3. 配置Mysql 4. 使用PHPMyAdmin 5. 附录   有问题请先 看最后的附录   摘要: 系统OS X ...

  7. Apache Cordova开发Android应用程序——番外篇

    很多天之前就安装了visual studio community 2015,今天闲着么事想试一下Apache Cordova,用它来开发跨平台App.在这之前需要配置N多东西,这里找到了一篇MS官方文 ...

  8. java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE

    Android发出HTTP请求时出现了这个错误: java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INST ...

  9. Ubuntu下配置apache开启https

    一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那ht ...

  10. 使用apache自带日志分割模块rotatelogs,分割日志

    rotatelogs 是 Apache 2.2 中自带的管道日志程序,参数如下(参见:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/rotat ...

随机推荐

  1. CSS盒子模型以及外边框合并的问题

    盒子模型 我们把布局里面的所有东西都可以想象成一个盒子,盒子里面又装着小盒子,小盒子里面又装着小小盒子......所以布局的万物基于盒子.即使一个小小的元素p,也可以把它抽象成为一个盒子.你现在心里有 ...

  2. 前端每日实战:152# 视频演示如何用纯 CSS 创作一个圆点错觉效果

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gBwzKR 可交互视频 此视频是可 ...

  3. 【Geek议题】当年那些风骚的跨域操作

    前言 现在cross-origin resource sharing(跨域资源共享,下简称CORS)已经十分普及,算上IE8的不标准兼容(XDomainRequest),各大浏览器基本都已支持,当年为 ...

  4. 一步步去阅读koa源码,整体架构分析

    阅读好的框架的源码有很多好处,从大神的视角去理解整个框架的设计思想.大到架构设计,小到可取的命名风格,还有设计模式.实现某类功能使用到的数据结构和算法等等. 使用koa 其实某个框架阅读源码的时候,首 ...

  5. 在windows上极简安装GPU版AI框架(Tensorflow、Pytorch)

    在windows上极简安装GPU版AI框架 如果我们想在windows系统上安装GPU版本的AI框架,比如GPU版本的tesnorflow,通常我们会看到类似下面的安装教程 官方版本 安装CUDA 安 ...

  6. 【原创】(四)Linux进程调度-组调度及带宽控制

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  7. vue的插件使用

    插件通常是为Vue添加全局功能,vue的官网介绍了5中添加插件的方法. vue的插件有个公开方法install.第一个参数是Vue构造器,第二个参数是一个可选的选项对象. 在plugin.js中可以这 ...

  8. 浅谈静态布局、流式布局,rem布局,弹性布局、响应式布局

    静态布局: 特点:没有兼容性问题 PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分:移动设备:另外建立移动网站,单独 ...

  9. 曹工说mini-dubbo(1)--为了实践动态代理,我写了个简单的rpc框架

    相关背景及资源: 之前本来一直在写spring源码解析这块,如下,aop部分刚好写完.以前零散看过一些文章,知道rpc调用基本就是使用动态代理,比如rmi,dubbo,feign调用等.自己也就想着试 ...

  10. DataFrame简介(一)

    1. DataFrame 本片将介绍Spark RDD的限制以及DataFrame(DF)如何克服这些限制,从如何创建DataFrame,到DF的各种特性,以及如何优化执行计划.最后还会介绍DF有哪些 ...