zoukankan      html  css  js  c++  java
  • Apache系列:Apache的全局配置


    配置文件组成:
    整个配置文件由3段组成:
    
    (1)全局配置:对主服务器或虚拟机都有效,且有些功能是服务器自身工作属性;
    
    (2)主服务器:主站属性;
    
    (3)虚拟主机:虚拟主机及属性定义
    
    注:第二段和第三段(即主机和虚拟主机)不能同时使用;
    

     

    全局配置

    一、配置监听的地址和端口

    Listen  [IP:]PORT    //Listen可重复使用多次
    默认监听80端口,不加ip,默认监听服务器上的多个ip地址上的80端口,你可以配置多个网卡,在不同的网卡上配置不同的IP,不管从哪个ip访问都能被监听
    
    Listen 192.168.1.22:80:只监听这个ip地址的80端口
    

      

    二、DSO与MPM

    Apache DSO

    apache是一个模块化设计的服务,核心只包含主要功能,扩展功能通过模块实现。
    不同的模块的功能和特性都是独立分开的,这样扩展性更好,模块之间依赖性小,利于维护升级和扩展。
    不同模块可以被静态的编译进程序,也可以动态加载。
    模块的动态加载通过DSO(Dysnamic Shared Object)实现。

    httpd -l :用于查看核心模块(静态编译入程序的模块)

    httpd -M:用于查看当前apache安装的模块

    MPM(Multi Process Modules)

    意为多路处理模块,也就是我们所说的apache的工作模式。

    MPM负责实现网络监听,请求的处理等功能、MPM有很多种,目的是为了在不同平台下实现最优化的性能及稳定性。

    共有3种工作模式

    prefork:一个主进程产生多个子进程,一个子进程响应一个请求;
    worker:一个进程生成多个线程,一个线程响应一个请求;
    event:基于事件驱动;
    

      

    不同系统下可以使用的MPM:

    说明

    event在apache2.4版本之前是以测试状态提供,网上并没有太多的资料,在更新至2.4版本之后正式上线。
    
    先来说prefork:当httpd启动起来之后,会生成一个主进程,它负责监听用户的请求,一旦请求进来后,它不负责自己响应,而是让其生成的子进程来响应,而主进程继续监听请求。
    prefork是非线程,预生成进程型MPM、prefork会预先启动一些子进程,每个子进程一个时间点只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。
    通过子进程对外提供服务,处理请求,但是每个子进程在同时间内只能处理一个任务,这个可以在配置文件中设置。
    如果有更多的请求,会自动生成更多的子进程来处理。
    
    worker是线程化,多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求。
    优点:节省资源,每多一个子进程就会多占用系统资源,使用线程处理请求。
    
    apache默认prefork:现在的计算机系统资源还是比较够用的,使用prefork效率更高,但是如果要修改为 worker,则要重新静态编译模块。
    
    需要考虑的是:刚启动服务的时候需要创建几个空闲进程,太多不好太少也不好。最少保证有几个空闲进程来响应请求进来,这是必须的。 最多设定多少个空闲进程,多余的空闲进程需要回收回来。
    所以其有如下几个关键作用:
    (1)启动服务时绑定特权端口:Linux系统中,只有管理员有权限使用小于1024的特权端口;但运行一些公共可用的服务,一定不能以管理员身份运行
    (2)派发或回收子进程
    (3)读取分析主配置文件
    (4)监听每个用户请求并且派发子进程
    View Code

    配置prefork模型

    apache服务默认就是以Prefork模式启动,无须更改启动模式。

    参数说明:

    <IfModule prefork.c>            #如果存在这个模块,那么提供以下属性
    StartServers           8        #刚启动web服务时启动几个空闲子进程
    MinSpareServers        5        #最少空闲进程数
    MaxSpareServers        20       #最大空闲进程数
    ServerLimit            256      #限定最多允许并发进来的活动用户连接个数
    MaxClients 256 #服务器所允许同时所连接进来的链接数,一般来说与上面保持一致,或者大于上面的数。 
    MaxRequestsPerChild 4000 #一个服务器进程最多可以处理多少个进程,一旦超出请求后无论如何将进程结束并新启动新进程
     </IfModule> #最后以IfModule结尾



    注意:为什么不能一直用子进程处理去处理请求?
    为什么不能一直用这个子进程处理请求?
    1.担心子进程有内存泄漏,长期工作下会出现bug等问题,持续工作会一直吃系统资源
    2.子进程假死状态,不能正常处理请求
    为了保险起见,为了让apache更稳定,更安全的运行
    View Code

    配置worker模型

    更改apache当前工作模式为worker模式

    编辑文件/etc/sysconfig/httpd,将以下参数的注释信息去掉:
    
    HTTPD=/usr/sbin/httpd.worker
    更改模式后必须重新启动服务
    
    [root@Centos ~]# service httpd restart
    启动完毕后,查看其进程状态:
    
    [root@Centos ~]# ps -ef | grep http
    root      1667    1  0 23:43 ?        00:00:00 /usr/sbin/httpd.worker              #以root用户身份生成的父进程(用于派发工作进程)
    apache    1671 1667  0 23:44 ?        00:00:00 /usr/sbin/httpd.worker              #以apache用户身份运行的工作进程(该工作进程派发线程)
    apache    1672 1667  0 23:44 ?        00:00:00 /usr/sbin/httpd.worker
    apache    1673 1667  0 23:44 ?        00:00:00 /usr/sbin/httpd.worker
    apache    1676 1667  0 23:44 ?        00:00:00 /usr/sbin/httpd.worker

    参数说明:

    <IfModuleworker.c>
    StartServers           4        #配置启动多少个用于监听的服务,注意:这里并不是服务器进程,而是线程
    MaxClients             300      #最大支持的用户连接数
    MinSpareThreads        25       #最小的空闲线程数
    MaxSpareThreads        75       #最大的空闲线程数
    ThreadsPerChild        25       #允许每个进程最多生成多少个线程
    MaxRequestsPerChild    0        #设置一个独立的子进程将能处理的请求数量
    </IfModule>
    

      

    3、配置服务器支持keep-alived

    KeepAlive {On|Off} :启用之后支持一次连接可以发多个请求(对于非常繁忙的服务器建议off
    KeepAliveTimeout  15 : 15秒之后断开长连接
    MaxKeepAliveRequests 50:一次长连接之内最多允许50个请求
    

      

    4、配置加载的模块

    #LoadModule指令  模块名称   模块所在的路径(相对于ServerRoot的路径)
    LoadModule foo_module modules/mod_foo.so
    

     

    5、其他常用配置

    ServerTokens OS:返回服务器页脚信息的详细程度,尽量选择小信息量(full、major)
    ServerRoot "/etc/httpd":服务器的配置文件所在
    PidFile run/httpd.pid :服务器主进程pid的保存位置
    Timeout 60:超时设置,设置短一点好
    Include conf.d/*.conf:默认加载模块的配置文件
    

      

  • 相关阅读:
    USACO 2008 Mar Silver 3.River Crossing 动态规划水题
    常见经验总结
    Ikki's Story IV
    洛谷P1993 小K的农场_差分约束_dfs跑SPFA
    洛谷P3275 [SCOI2011]糖果_差分约束_判负环
    Integer Intervals POJ
    洛谷 P2365 任务安排_代价提前计算 + 好题
    [NOI2005]瑰丽华尔兹 动态规划 + 单调队列
    Shoot the Bullet ZOJ
    background-clip 和 background-origin
  • 原文地址:https://www.cnblogs.com/-wenli/p/10519354.html
Copyright © 2011-2022 走看看