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> 
出处:https://www.cnblogs.com/hjnzs/p/12150671.html
posted @ 2021-02-21 13:54  十点书屋  阅读(207)  评论(0编辑  收藏  举报