源码哥,靠谱的网站源码下载站 帮助 每日签到

源码哥

您当前的位置:首页 >> 帮助中心 >> 环境部署 >> Apache >> web服务器:Apache

web服务器:Apache

Apache(发音为阿帕奇)是世界上使用最多的网络服务器软件。它运行在几乎所有广泛使用的计算机平台上,在跨平台上是安全的,因此是最受欢迎的网络服务器端软件之一。快速可靠,可通过简单的API扩展解释器(如Perl/Python),以便将解释器编译到服务器。


详细信息


Apache HTTP Server(简称Apache)是Apache Software Foundation的开源Web服务器,在大多数计算机的操作系统上运行,由于其跨平台的安全性质,作为最受欢迎的Web服务器软件之一被广泛使用。快速可靠,可通过简单的API扩展解释器(如Perl/Python),以便将解释器编译到服务器。[2]

Apache HTTP Server是从NCSA的httpd服务器派生出来的模块式服务器,经过多次改进,已成为世界上使用最多的Web服务器软件。

它几乎可以在所有广泛使用的计算机平台上运行。

Apache由NCSAhttpd服务器派生而来,并已更改为成为世界上使用最多的Web服务器软件之一。Apache简单、快速、稳定,还可以作为代理服务器使用。

由于Apache是一种基于流程的体系结构,它比线程的系统支出更多,不太适合多处理器环境。因此,在缩放Apache网站时,通常不是添加处理器,而是添加服务器或扩展群集节点。Apache至今仍是全球使用最多的网络服务器,市场份额约为60%。亚马逊、雅虎、W3财团、《金融时报》等世界上最著名的网站大多是Apache的产品,Linux)及其可移植性之高。

Apache的诞生极为戏剧性。当NCSAWWW服务器项目停止运行时,使用NCSAWWW服务器的人们开始更换服务器补丁,并立即意识到需要一个论坛来管理这些补丁。这样诞生的是阿帕奇集团,后来以NCSA为基础制作了阿帕奇。


网络服务器软件“Apache”具有以下特点:

1.支持最新通信协议“HTTP/1.1”

2.简单而强大的基于文件的设置处理

3.一般网关接口支持

4.支持基于IP和基于域的虚拟主机

5.支持多种HTTP认证方式

6.集成的Perl处理模块

7.集成的代理服务器模块

8.实时监视服务器状态并支持自定义服务器日志

9.支持服务器端包含指令(SSI)

10.支持安全套接字层(SSL)

11.提供用户会话进程跟踪

12.支持FastCGI

13.第三方模块支持JavaServlets

如果你准备好选择网络服务器,Apache无疑是最好的选择。


相关模块


1.关于SSO模块-LemonLDAP[1]

LemonLdap是一个实现Web SSO的Apache模块,可以处理20多万用户。

2.并发次数限制模块-limitipconn

limitipconn是一个Apache模块,它限制每个IP的并发连接数。支持Apache1.x、2.x。

3.日志监视模块

Apache Live Log是使用Ajax技术,可以在浏览器中直接实时显示和监视Apache日志文件的Perl模块。

4.负载平衡器模块

mod_backhand是Apache的负载平衡模块。定义了异构Apache服务器群中各请求的HTTP重定向。每个请求都会被处理,并在整个过程中使用一组“候选函数”来确定哪个服务器最适合响应。然后,请求被代理到该服务器。有设备可以编写自己的动态加载决策算法。所有与请求相关的和当前可用的资源都可以用于决策过程。

5.图像处理模块

mod_gfx是一个Apache模块,用于对图像进行实时处理,提供了许多灵活的接口,包括:。

调整大小

再取样

电子水印处理

裁剪

另外,今后还将追加以下功能:

添加文本

旋转

绘制多边形

6.压缩模块

mod-gzip-disk是一个Apache模块,它使用磁盘存储预先压缩的页面,与mod-gzip不同,它不需要为每个请求重新压缩。

要使用这个

gunzip-c mod_gzip_disk-0.5.tar.gz/tar-xvpf-。

cd mod_gzip_disk

子程序,子程序

7.音乐模块

mod_musicindex是一个Apache模块,用于处理与Perl的Apache::MP3类似的音频文件,支持MP3、Ogg Vorbis、FLAC、MP4/AAC等音频格式,可对列表进行排序、在线播放、下载、构建播放列表,并通过不同的音频特性进行搜索和提供。支持RSS和Podcast输出、多个CSS和软件包下载。

8.LDAP认证模块

LDAP是一种基于X.500标准的轻量级目录访问协议,但更简单、更定制。mod_psldap是Apache用于执行LDAP认证和授权的模块。还可以通过网络接口进行简单的LDAP管理。

9.带宽限制模块

mod_cband是一个Apache模块,用于限制请求使用的带宽。

10.CGI V8发动机封装

v8cgi是C++、JS和C文件的小集合,允许开发人员在服务器端使用JS模块。基本功能包括IO、GD、MySQL、套接字、模板、FastCGI和Apache模块。


发展历史


Apache原本是由伊利诺伊大学阿瓦那夏佩恩分校的National Center for Supercomputer Applications(NCSA)开发的。从那以后,Apache就由开源社区的成员开发和加强,Apache服务器在可靠性和信誉上得到了公认,在全互联网网站的一半以上,特别是在最受欢迎和访问者最多的网站几乎全部使用。

Apache开始取代Netscape网络服务器作为开源。自1996年4月以来,Apache一直是互联网上最受欢迎的HTTP服务器,1999年5月在57%的Web服务器上运行,2005年7月这一比例上升到69%。2005年11月占市场近70%,但近年来由于拥有多个域名的域名运营商转移到微软公司的IIS平台,Apache的市场份额略有下降。谷歌自己的Web服务器平台“GWS”的出现,以及轻量Web服务器软件“Lightpd”的使用逐渐增加,Web服务器整体的份额在2007年7月的netcraft的最新统计中下降到52.65%,8月为50.92%。在8月的50.92%,仍然是目前互联网市场占有率最高的网络服务器软件。

大致的说明(以及最容易理解的说明)是因为1995年初Apache被开发的时候,修正了当时最受欢迎的HTTP服务器NCSA HTTPd1.3的代码,所以来源于“补丁”服务器。是服务器。但是,在该服务器的官方网站的FAQ中,“Apache”这个名字是对以优秀的战斗战术和无限的忍耐力而闻名的原住民美国印第安人“Apache(印地语)”这个小组表示敬意而命名的。无论如何,Apache2.x分支不包含NCSA代码。[2]


特点


为什么apache日志不记录百度蜘蛛?这个问题基本上被认为是很多初学者都会遇到的,默认Apache日志,百度蜘蛛,谷歌和主要搜索引擎蜘蛛程序都没有记录,但唯一需要改变位置来解决这个问题

1、打开httpd.conf文件找到以下部分:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" commonLogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

具体有关LogFormat的用法请参照:

2、之后,继续向下移动,找到虚拟主机的设置段,即虚拟主机段,并自行设置。此站点的虚拟主机日志文件设置如下:。

如果想记录CustomLog/var/html/faq/logs/linux520-access.log combinedBaidu蜘蛛访问的全名,请如上所述设置分项,如果不想记录百度蜘蛛的头部,请如下设置:CustomLog/var/html/faq/logs linux520-access.log通用。


性能优化


当使用Apache作为web服务器时,从Apache获得更好性能的唯一方法是适当并优化Apache服务器。此外,如果Apache设置得非常糟糕,Apache可能无法为我们恰当地工作。因此,根据应用程序的需要,对Apache服务器的配置进行一定的优化是必不可少的。

硬件和操作系统

毫无疑问,为了从Apache服务器获得最佳性能,硬件和操作系统必须首先能够应付Apache服务器的负载。如果Apache的性能对硬件和操作系统有很大影响,那么即使Apache服务器本身已被优化和配置,它也不起作用。

通常,影响web服务器性能的最大因素是内存。如果内存不足,操作系统将使用内存交换机制。网络服务器如果想为用户提供更好的服务,绝对不能使用内存交换,否则性能会大大降低。不仅如此,由于服务器的内存交换使用的「滞后」,用户感到网站的迟滞变得容易单击「停止」「更新」,持续单击「更新」的话对服务器负荷增加,陷入恶性循环。

关于Apache服务器的内存要求,确认服务器正常运行时向用户提供服务的各进程(或线程)使用的内存的平均量,根据需求或相关数据计算Apache服务器的内存要求可以确定一台服务器可以支持的最大并发负载量。最好将内存分配给Apache服务器,这比计算的需要更多。

此外,理想的硬件是有足够快的CPU、足够快的网卡(足够的带宽)和足够快的硬盘。这里所说的“充分”是指能够满足Web应用的实际需求。

对于操作系统,最好选择最新和最稳定的版本,以帮助服务器运行,并安装相应的修补程序。毕竟,随着时间的推移,操作系统也会发生变化。许多操作系统供应商提供TCP堆栈和线程库,可显著提高性能。例如,如果操作系统支持sendfile()系统调用,Apache2.x服务器可以使用sendfile()以更快、更少的CPU时间发送静态内容。


优化Apache设置


1.尽可能使用IP地址代替域名。

例如,allow from365mini.com意味着允许域名365mini.com的用户访问。在这种情况下,如果知道域名或主机名对应于IP地址,最好使用特定的IP地址代替域名。否则,Apache服务器必须执行多个DNS查找,以确定与该域名或主机名相对应的IP地址。

注:可能有一些例外情况需要使用域名或主机名,例如与多个域名相对应的IP地址、与多个IP地址相对应的域名和变化的IP地址。通常,仅当域名、主机名和IP地址一一对应时,IP地址才代替域名使用。请根据实际情况选择。

2.启用FollowSymLinks选项

当Apache处理请求时,如果对应的请求文件位于未启用FollowSymLinks选项的目录中,或者如果使用SymLinksIfOwnerMatch选项Apache必须执行额外的系统调用以检查符号链接的安全性。文件名中的每个元素都需要额外的调用。因此,如果安全性允许,为了获得更好的运行时性能,必须停止保护符号链接,在任何地方设置FollowSymLinks,停止使用SymLinksIfOwnerMatch。

如果子目录中没有其他设置,#EnableFollowSymLinks选项将继承该设置

Options FollowSymLinks

3.禁用AllowOverride

如果Apache配置文件允许AllowOverride指令,则当处理每个请求路径时,Apache将尝试为文件路径的每个组件打开该目录中的.htaccess文件。

例如,如果用户请求访问服务器的/static/test/hello.html,Apache将尝试打开/static/test/.htaccess,/static/.htaccess,/.htaccess的文件。这会影响服务器的性能。

因此,如果当前用户对Apache配置文件具有编辑访问权限,则建议将.htaccess文件的设置直接写入相应的Apache配置文件(通常为httpd.conf),并禁用AllowOverride。

#禁用AllowOverride

AllowOverride None

当然,如果用户没有对Apache配置文件的编辑权,但希望相应地设置站点,则管理员必须允许AllowOverride,让用户能够写出自己的.htaccess文件。

4.避免使用通配符

在Apache配置文件中,例如,可以为每个目录指定默认欢迎页面:

#在内容协商中指定欢迎页面

目录索引

通过上述设置,当访问当前目录时,Apache会在当前目录中查找名称为index.*的文件,并自动返回最适合客户端所期望的响应类型(即内容协商)的请求文件。

但这会带来小的性能下降。虽然内容协商的优点超过了性能下降,但如果您仍然在意这种小的性能下降,建议不要使用上述设置的通配符格式,而是适当指定完整的index.*文件列表。

#指定欢迎页面

目录索引index.html index.cgi index.pl

如果进行上述设置,Apache将从左向右优先查找上述三个名称的文件,并响应最初找到的文件。

5.选择适当的多处理模块(MPM)

关于MPM还有其他的,请参照下面的“变更同时连接数的上限”。

6.更改Apache的同时连接设置

关于Apache的同时连接设定的变更,请参照以下的“最大同时连接数的变更”。

关于并发连接数

Apache是一款跨平台Web服务器,从其简单性、高效性、稳定性和安全性出发,广泛应用于计算机技术的各个领域。拥有众多用户的Apache现在是用户数第一的网络服务器。

但是,在实际生产环境中,在默认配置中,Apache还不能直接作为服务器使用。毕竟,为了充分利用Apache服务器,我们所有人都必须对Apache的默认配置进行必要的调整,以满足需求。特别是,为了优化Apache的结构,变更同时连接的最大数[3]是很重要的。

在更改最大并发连接数[3]之前,必须了解Apache。

Apache以跨平台模块化服务器而闻名。为了适应不同平台和不同环境的不同需求,在特定平台和环境中取得最佳结果,Apache在Web服务器的基本功能(端口绑定、请求接收等)中也采用了模块设计,Apache的这个核心模块它被称为多进程模块。它被称为ProcessingModule(简称MPM)。

Apache为每个OS提供不同的MPM模块,例如mpm_beos、mpm_event、mpm_netware、mpmt_os2、mpm_prefork、mpm_winnt、mpm_有工作人员。您可以在自己的Apache中包含模块(Apache的源代码是公开的,用户可以自行编译)。但是,如果在编译时未选择,Apache将根据下表选择各OS的MPM模块,这将成为各平台的推荐MPM模块。


不同操作系统上默认的MPM模块

操作系统

MPM模块

描述

Windows

mpm_winnt

不用介绍了吧:)

Unix/Linux

mpm_prefork

不用介绍了吧:)

BeOS

mpm_beos

由Be公司开发的一种多媒体操作系统,官方版已停止更新。

Netware

mpm_netware

由NOVELL公司推出的一种网络操作系统

OS/2

mpmt_os2

原本是微软和IBM开发的操作系统,现在由IBM单独开发(微软放弃OS/2转移到Windows)

mpm_event模块具有mpm_它可以看作是worker模块的一个亚种,但它是实验性的,一般不建议使用。

当然,Apache也在网站上提供了为不同操作系统编译的成品Apache模块,点击这里可以从Apache网站下载。

另外,如果想调查Apache内部使用了哪个MPM模块,请在Apache的安装目录的˶‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾“可以输入httpd-l进行调查。

使用httpd-l命令查看已编译模块

由于操作系统(如BeOS、NetWare和OS/2)在常规开发工作中很少使用,因此我们将重点放在Windows和Unix/Linux操作系统上的MPM模块上。在Windows和Unix/Linux的OS中,mpm_winnt、mpm_prefork、mpm_三个工作人员是主要的MPM模块。

mpm_prefork模块

mpm_prefork模块主要用于Unix/Linux平台上的Apache服务器。其机制是,在Apache服务器启动时,mpm_prefork模块创建几个子进程(默认值为5)。每个子进程只能用于一次处理一个请求。Apache总是试图将一些备用或空闲子进程保持为传入请求的可用状态。这样,在收到客户端请求后,就不必等待生成子进程。

mpm_在prefork模块中,每个请求都有一个子进程,这将比其他两个模块消耗更多的系统资源。但是,mpm_prefork模块的优点是,每个子进程独立处理单个请求,因此即使其中一个请求出现问题,也不会影响其他请求。另外,mpm_prefork模块可以与非线程安全的第三方模块一起使用,例如PHP的线程安全版本,即使在不支持线程调试的平台上也可以轻松调试。此外,mpm_prefork模块具有mpm_它比prefork模块更稳定。

mpm_工件模块

mpm_worker模块也主要用于Unix/Linux平台的Apache服务器,mpm_可以看作是prefork模块的改进版。mpm_worker是mpm_它以类似于prefork模块的方式工作。但是,基于进程的进程(例如mpm_prefork)比基于线程的进程消耗更多的系统资源用于相同的请求。因此,mpm_与prefork模块不同,mpm_在worker模块中,每个子进程创建固定数量的服务线程和侦听器线程,每个服务线程处理客户机的请求,侦听器线程可以听到访问请求,并将其传递给服务线程以进行处理和回答。Apache始终尝试保留备用或空闲服务线程的池。这样,客户机就可以被处理,而不用等待创建新的线程或进程。

mpm_与prefork模块相比,mpm_worker模块可进一步减少系统资源开销。此外,还将使用具有多个线程的多个进程,因此与完全基于线程的处理方法相比,添加了一定程度的稳定性。

mpm_winnt模块

mpm_winnt模块是为Windows操作系统优化的MPM模块。只创建一个子进程,然后依次在该子进程中生成多个线程来处理请求。


更改MPM模块设置


了解Apache的MPM模块后,可以对不同的MPM模块更改Apache的Maximum Concurrent Connections[3]的设置。

1.启用MPM模块配置文件

Apace的安装目录/conf/extra中有一个名为httpd-mmm.conf的配置文件。此文件主要用于MPM模块相关设置。但是,默认情况下,Apache的MPM模块设置文件未启用。因此,必须在httpd.conf文件中启用此配置文件,如下所示:

1

2

3

4

#Server-poolmanagement(MPMspecific)

 

Includeconf/extra/httpd-mpm.conf(去掉该行前面的注释符号"#")

2.修改MPM模块设置文件中的设置

启动MPM模块配置文件后,在文本编辑器中打开配置文件后,您会发现配置文件有很多设置节点,只有在Apache使用相应的MPM模块时,相应的设置才会生效。

相应设置参数的角色

启动服务器

启动Apache时生成的子进程数。

最小间隔服务器

空闲子进程的最小数量。(空闲子进程是指未处理请求的子进程。如果当前空闲子进程的数量少于MinSpareServers,则Apache最多每秒生成一个新子进程。(此参数只应在非常繁忙的计算机上进行调整,不要将其设置得太大)。

MaxSpareServers

指定空闲子进程的最大数量。(此参数只需要在非常繁忙的计算机上进行调整。不要将此值设置得太大。如果将此指令的值设置为小于最小空间服务器的值,则Apache将自动更改为最小空间服务器+1)。

MaxClients

同时允许的最大请求数。

1.超过MaxClients的请求进入队列,直到达到ListenBacklog指令的最大值。

2.对于未线程MPM(别名mpm_prefork),MaxClients表示可用于处理客户端请求的最大子进程数。

3.对于线程或混合MPM(也称为mpm_beos或mpm_worker),MaxClients表示可用于处理客户端请求的最大线程数。线程mpm_beos的默认值为50,混合MPM的默认值为16乘以25。因此,要将提供的MaxClients增加到16个或更多进程,服务器限制值也必须更大。

最小间隔Threads

指定空闲线程的最小数量。

(注:此指令的处理因MPM而异。mpm_worker的默认值为75。此MPM基于整个服务器监视空闲线程的数量。mpm_netware的默认值为10。此MPM仅执行单个子进程,因此此MPM当然也是整个服务器的空闲线程监视数字。mpm_beos和mpmt_os2是mpm_与netware一样工作,mpm_beos的默认值为1。beos的缺省值为1,mpmt_os2的默认值为5)。

MaxSpareThreads

空闲线程的最大数量。

(注:MPM不同,此说明的处理方式也不同。mpm_worker的默认值为250。此MPM根据整个服务器监视空闲线程的数量。mpm_netware的默认值为100。此MPM仅执行单个子进程,因此此MPM当然也是整个服务器的空闲线程数监视红色数。mpm_beos和mpmt_os2是mpm_与netware几乎相同。mpm_beos的缺省值为50,mpmt_os2的默认值为10)。

注:ServerLimit表示允许Apache创建的进程的最大数量。值得注意的是,Apache在编译时内部具有ServerLimit20000(在mpm_prefork模块中为ServerLimit200000)的硬限制。你不能超过这个限制。

使用此指令时应特别小心。因为如果将ServerLimit设置为比实际需要的值大得多,共享内存就会被过度分配。如果将ServerLimit和MaxClients设置为超出系统处理能力,则Apache可能无法启动或系统不稳定。

注:设置相关参数时,请首先确认服务器的硬件性能(CPU、内存等)是否足够。启动后,如果发现服务器的内存足迹随着服务器运行时间的延长而增加,则应用程序可能出现内存泄漏。将MaxRequestsPerChild的值向下调整以减少内存泄漏的影响,并尽快确定应用程序问题。


联系我们
Q Q:472206683
微信:472206683
邮箱:472206683@qq.com
时间:09:00 - 24:00
联系客服
售前咨询 网站搭建 技术支持 联系客服
18639176864
手机版
手机版二维码
扫一扫进手机版
返回顶部