zoukankan      html  css  js  c++  java
  • apache服务介绍

    一、服务简介

    Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache Httpd被开放源代码团体的成员不断的发展和加强。Apache Http网站服务器拥有牢靠可信的美誉,已经在全球超过半数的网站中被使用-特别是几乎所有最热门和访问量最大的网站。比方说,维基百科网站服务器就是使用Apache的。
    刚开始发展时,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择之一。慢慢地,它开始在功能和速度超越其他基于Unix的HTTP服务器。到了Apache 2.x的时代,实际效率又比Apache 1.x更快,2.x比1.x能同时服务更多的网页连线数。
    1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行,到了2005年7月这个比例上升到了69%。在2005年11月最风光的时候达到接近70%的市占率,不过在部分拥有大量域名的主机域名商转换为微软IIS平台后,Apache市占率近年来呈现些微下滑。同时搜索引擎巨擘Google自己的网页服务器平台GWS推出后(也可说是一种修改版的Apache),再加上nginx、Lighttpd等轻量化网页服务器软件在市场上有一些能见度,这些因素都反应在整体网页服务器市占率的消长,Apache的市占率就随之滑落。
    根据Netcraft在2009年12月的最新统计数据,Apache的市占率已经降为53.67%,IIS降为18.26%,谷歌网页服务器13.53%,nginx 8.75%。尽管如此,Apache及其各种分支版本仍旧是当前互联网市场上,市占率最高的网页服务器软件。

    二、apache工作模式

    Apache一共有3种稳定的MPM模式(MPM:多进程处理模块),它们分别是 prefork、worker、event。

    • prefork 工作模式
      Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创 建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
      优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
      缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求。

    • worker 工作模式
      使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下, 因为比起prefork有更多的可用线程,表现会更优秀一些。
      优点:占据更少的内存,高并发下表现更优秀。
      缺点:必须考虑线程安全的问题。

    • event 工作模式
      它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题。event 工作模式下,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。 HTTP采用keepalive方式减少TCP连接数量,但是由于需要与服务器线程或进程进行绑定,导致一个繁忙的服务器会消耗完所有的线程。event 工作模式是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限制,此时event 工作模式这种方式是最有效的,但不能在HTTPS访问下工作。

    三、相关文件位置

    源码包编译安装
    1) 配置文件位置:
        PREFIX/etc/httpd.conf(主配置文件)      
        PREFIX/etc/extra/*.conf(子配置文件)
    2) 网页文件位置:
        PREFIX/htdocs/
    3) 日志文件位置:  
        PREFIX/logs/ 
    
    rpm包安装
    1) 配置文件位置:
        /etc/httpd/conf/httpd.conf 
    2) 网页文件位置:
        /var/www/html/
    3) 日志文件位置:  
        /var/log/httpd/
    

    四、配置文件解释

    对主机环境的基本配置参数
    ServerRoot  /usr/local/apache2  #apache根目录  
    Listen   :80     #监听端口  
    LoadModule  php7    #加载的相关模块  
    User  Group      #用户和组  
    ServerAdmin     #管理员邮箱  
    ServerName     #服务器名  
    ErrorLog "logs/error_log     #服务器错误日志  
    CustomLog "logs/access_log" common   #访问记录日志  
    DirectoryIndex index.html index.php   #默认网页文件名,优先级顺序  
    Include  etc/extra/httpd-vhosts.conf  #子配置文件中内容也会加载生效 
    
    主页目录及权限
    DocumentRoot "/usr/local/apache2/htdocs"  #网页文件存放目录
    <Directory "/usr/local/apache2/htdocs">  #定义指定目录的权限   
    Options Indexes FollowSymLinks  #额外权限,选项如下(默认浏览权限,软连接权限)
        None            #没有任何额外权限        
        All              #所有权限(除去MultiViews以外)    
        Indexes          #浏览权限(当此目录下没有默认网页文件时,显示目录内容)        
        FollowSymLinks   #准许软连接到其他目录    
        MultiViews       #准许文件名泛匹配(需要手动开启模块才有效negotiation)  
    AllowOverride None   #定义是否允许目录下.htaccess文件中的权限生效,默认不生效 
        None          #.htaccess中权限不生效    
        All           #文件中所有权限都生效    
        AuthConfig    #文件中,只有网页认证的权限生效。
    Require all granted(denied) #谁可以访问该页面下的资源,默认所有都被允许。  
    </Directory> 
    <IfModule dir_module>   #此标签用来指定访问到指定目录时自动加载哪个页面文件       
    DirectoryIndex index.php index.html  #可以写多个,但是有优先级之分  
    </IfModule> 
    
  • 相关阅读:
    mybatis(十)缓存
    mybatis(八)复杂查询
    mybatis(六)分页
    mybatis(九)动态SQL
    mybatis(七)只用注解开发
    mybatis(五) 日志
    log4j.properties 相关配置
    mybatis(四)中可能出现的问题
    MyBatis(三) 配置解析
    IIS 发布 .net core 3.1
  • 原文地址:https://www.cnblogs.com/hjnzs/p/12150671.html
Copyright © 2011-2022 走看看