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>