当前位置:文档之家› Apache配置手册v1.5

Apache配置手册v1.5

Apache配置手册(V1.5)

中国建设银行信息技术管理部

北京数据中心

2013年12月

本文档中所包含信息属内部资料,请注意保存。?Copy Right 2013 by China Construction Bank

1前言 (4)

1.1编写目的 (4)

1.2适用范围 (5)

1.3预期读者 (5)

2Apache的基本操作 (6)

2.1Apache的启动 (6)

2.2Apache的关闭 (7)

2.3Apache的版本查看 (7)

2.4Apache的编译模块查看 (8)

3Apache配置指导 (10)

3.1httpd.conf——全局环境配置 (10)

3.2httpd.conf——主服务器配置 (17)

3.3httpd.conf——虚拟主机配置 (20)

3.4httpd.conf的权限规定 (21)

3.5Apache日志切分清除配置 (21)

3.6Weblogic Plug-in的配置 (23)

4操作系统内核参数含义解释 (28)

4.1net.ipv4.tcp_syncookies (28)

4.2net.ipv4.tcp_syn_retries (28)

4.3net.ipv4.tcp_synack_retries (29)

4.4net.ipv4.tcp_max_syn_backlog (29)

4.5net.ipv4.tcp_retries1 (29)

4.6net.ipv4.tcp_retries2 (29)

4.7net.ipv4.tcp_keepalive_time (29)

4.8net.ipv4.tcp_keepalive_probes (30)

4.9net.ipv4.tcp_keepalive_intvl (30)

4.10net.ipv4.tcp_timestamps (30)

4.11net.ipv4.tcp_fin_timeout (30)

4.12net.ipv4.tcp_max_tw_buckets (31)

4.13net.ipv4.tcp_tw_recycle (31)

4.14net.ipv4.tcp_tw_reuse (31)

4.15net.ipv4.tcp_mem (31)

4.16net.ipv4.tcp_wmem (32)

4.17net.ipv4.tcp_rmem (32)

4.18net.ipv4.ip_local_port_range (32)

4.19net.ipv4.ip. ip_local_reserved_ports (32)

4.20net.ipv4.icmp_ignore_broadcasts (32)

4.21net.core.somaxconn (33)

4.22net.core.rmem_max (33)

4.23net.core.wmem_max (33)

4.24net.ipv4.tcp_orphan_retries (33)

4.25net.ipv4.tcp_max_orphans (33)

4.26net.ipv4.tcp_low_latency (34)

4.27net.ipv4.tcp_fack (34)

5附件1: Apache性能监控 (35)

5.1mod_status的配置 (35)

5.2ExtendedStatus的配置 (36)

6附件2: Apache工作模式 (38)

6.1prefork MPM (38)

6.2worker MPM (39)

6.3工作模式切换 (40)

6.4prefork模式与worker模式的区别 (41)

7附件3: Apache日志 (43)

7.1Apache日志概述 (43)

7.2Apache日志配置 (44)

7.3Apache日志配置示例 (45)

8附件4: Apache虚拟主机 (46)

8.1基于名称的虚拟主机 (46)

8.2基于IP的虚拟主机 (47)

9附件5:Apache KeepAlive测试 (49)

9.1网页测试KeepAlive特性 (49)

9.2ab测试KeepAlive特性 (50)

9.3KeepAlive的适用场景 (51)

10附件6: tcp_timestamps, tcp_tw_recycle, tcp_tw_reuse的关系 (53)

10.1tcp_tw_reuse启用的条件 (53)

10.2tcp_tw_recycle启用的条件 (53)

11附录7:HTTP状态码 (55)

12附录8:Weblogic Plug-in参数说明 (57)

1前言

1.1编写目的

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。目前Apache在我行应用系统的WEB层被广泛使用。Apache通过Weblogic Plug-in与应用服务器上部署的Weblogic Server通讯,完成请求转发及均衡负载等功能。为总结Apache的配置经验,提供相应的配置指导,规范WEB层的管理,特编写此手册,为相关运维人员提供参考和指导。

F1-1 4层Apache应用架构F1-2 3层Apache应用架构Apache是世界使用排名第一的Web服务器软件,目前在我行应用系统上一般采用4层(F5-WEB-F5(或者是haproxy软件)-AP)或者3层(F5-WEB-AP)的系统架构,F5实现前端或者后端的负载均衡,在Web层部署Apache软件接收与响应用户请求,在AP服务器上则部署Weblogic软件管理应用。Apache通过Weblogic Plug-in与应用服务器上部署的Weblogic Server通讯,完成请求转发及均衡负载等功能。目前老系统,网银采用4层结构,2层F5,其他使用WEB 服务器的,基本为3层结构;新一代的P1和P2均采用4层结构,WEB和WebLogic

之间为haproxy软件,不是硬件F5。

为总结Apache的配置经验以及操作系统内核参数的含义,规范WEB层标准化配置管理,特编写此手册,为相关运维人员提供参考和指导。

本手册中描述的相关配置和参数缺省值基于Linux6,4和系统自带的Apache2.2.15,其他版本可能会略有不同。

1.2适用范围

北京数据中心。

1.3预期读者

应用系统相关运行维护技术人员、项目组开发测试人员等。

2Apache的基本操作

目前我行系统使用两种Apache,一种是Red Hat Enterprise Linux自带的Apache服务(新一代、网银等),WEB池使用开源的Apache服务。

Apache操作简单,日常的操作可以通过执行service httpd {start|stop|restart|status|reload}来完成,并且通过httpd命令或者apachectl命令可以查看到当前Apache的版本号以及加载的模块等等。

2.1Apache的启动

Apache的启动脚本的路径“/etc/init.d/httpd”,通过命令service可以完成Apache服务的启动,具体是执行命令“service httpd start”。

Apache启动后可以通过以下三个手段验证:

1.执行service httpd status命令验证是否打开:

2.通过ps –ef 命令查看是否有httpd进程启动:

3.通过netstat命令查看httpd的端口是否处于监听状态:

2.2Apache的关闭

Apache的停止可以执行命令“service httpd stop”来实现。

通过查看是否存在httpd的进程来确认httpd是否停止,执行ps命令查看。

2.3Apache的版本查看

通过命令行检查和日志检查可以查看到Apache的版本号,命令方式是执行httpd –v或者apachectl –v命令查看,日志检查是打开Apache的error日志文件,Apache启动时会在日志文件中记录版本号。

命令行方式描述如下:

2.4Apache的编译模块查看

通过httpd –l或者apachectl –l可以查看目前Apache编译的模块。

2.4.1prefork工作模式查看

执行apachectl –l或者httpd –l查看输出,输出prefork.c表示工作模式为prefork模式。

2.4.2worker工作模式查看

执行apachectl –l或者httpd –l查看输出,输出worker.c表示工作模式为worker模式。

3Apache配置指导

下面主要对Apache的常用配置作出说明。Apache的默认配置文件在文件夹/etc/httpd目录,/etc/httpd目录主要分为以下几个部分:

conf/httpd.conf:Apache的主配置文件;

conf.d:Apache加载的模块的配置文件;

logs:日志目录,链接到/var/log/httpd,存放了Apache的访问日志以及错误日志;

modules:Apache可加载的模块的存放位置;

run:存放了Apache运行时的进程号。

对于上面所示的配置文件与日志文件,强烈不建议改变文件位置,其中httpd.conf是Apache服务器配置中最重要的配置文件,整个httpd.conf可以分成三个部分,分别是:全局环境配置;主(默认)服务器的配置;虚拟主机的配置。另外在我行中Apache与应用服务器上部署的Weblogic Server通讯通过Weblogic Plug-in来完成请求转发及均衡负载等功能,因此也增加了Weblogic Plug-in的配置。(新一代P1和P2,Apache和WebLogic Server之间是haproxy软件,通过haproxy实现在多个WebLogic Server实例之间实现请求转发和负载均衡)

3.1httpd.conf——全局环境配置

3.1.1ServerTokens

ServerTokens指令控制了服务器回应给客户端的“Server:”,应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。其语法如下:

ServerTokens使用示例(通过curl命令获得HTTP响应头部信息):

ServerTokens OS

ServerTokens Prod

缺省值:OS;

建议值:从安全上考虑应该选择Prod值,这样能尽量减少服务器暴露的信息。

3.1.2ServerRoot

语法:

ServerRoot指令设置了服务器所在的目录。一般来说它将包含conf/和logs/子目录。

缺省值:“/etc/httpd”;

建议值:建议保留缺省值,如果改变路径,那么必须保证ServerRoot下的文件是受保护的,不仅文件本身,而且目录以及父目录只能由其属主修改。

3.1.3PidFile

语法:

PidFile指令设置服务器用于记录父进程(监控进程)PID的文件。

缺省值:run/httpd.pid。

建议值:保持与缺省值一致。

3.1.4TimeOut

TimeOut指令用于设置Apache等待以下三种事件的时间长度:

1.接受一个GET请求耗费的总时间;

2.POST或PUT请求时,接受两个TCP包之间的时间;

3.应答时TCP包传输中两个ACK包之间的时间。

缺省值:60。一般使用缺省值。

建议值:与缺省值保持一致。如果应用有需求,可以改变此值。

3.1.5KeepAlive

HTTP1.1开始,支持Http Session的模拟长连接过程,Apache中通过KeepAlive参数来实现该功能。

KeepAlive 配置指令决定当处理完用户发起的HTTP 请求后是否立即关闭TCP 连接,如果KeepAlive 设置为On,那么用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这一次TCP 连接中完成,而不用重复建立新的TCP 连接和关闭TCP 连接,可以提高用户访问速度。如一个静态页面中有大量的图片,打开KeepAlive,可以提高页面的响应时间。

缺省值:Off。

建议值:根据应用需求设定。对于短连接交易关闭此值。关闭KeepAlive功能时,会增加Linux服务器上CPU的负载,需要同时考虑Linux的承载能力、time_wait连接回收等问题。一般情况下,绝大部分应用可以打开KeepAlive,根

据应用需求适当调整KeepAliveTimeout。

3.1.6MaxKeepAliveRequests

语法:

MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。

缺省值:100。

建议值:根据应用需求具体设置。

3.1.7KeepAliveTimeOut

语法:

Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:该值越大,与空闲客户端保持连接的进程就越多。

缺省值:15。

建议值:根据应用需求具体设置,对于短连接交易建议关闭KeepAlive功能。如果应用不好评估是短连接交易还是长连接交易占主导,可以打开KeepAlive功能,将该值设置为比较小的值,如5秒、2秒、1秒等,然后通过测试得出能满足应用需求的参数值。

3.1.8IfModule

语法:

用于封装指令并根据指定的模块是否启用为条件而决定是否进行处理。

3.1.9Listen

语法:

Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如

果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指定地址的指定端口上监听。

缺省值:80;

建议值:不建议使用80端口。具体根据应用需求设置。

3.1.10ListenBackLog

语法:

用于设置挂起连接队列的最大长度。

缺省值:511;

建议值:一般情况下,保持缺省值不变;应用可以根据需求设置。

3.1.11LoadModule

语法:

该指令加载目标文件或库filename并将模块结构名module添加到活动模块列表。module就是源代码文件中用于拼写module的外部变量名,并作为模块标识符(Module Identifier)列在模块文档中。

3.1.12Include

语法:

Include指令允许在服务器配置文件中加入其它配置文件,支持通配符。默认的模块配置文件位于“/etc/httpd/conf.d”目录。

缺省值:conf.d/*.conf;

建议值:conf.d/*.conf。

3.1.13mod_status配置

语法:

Apache的mod_status模块允许服务器管理员方便的检查服务器当前的运行状况。使用该选项,对Apache的性能影响很小,可以忽略。当打开该选项时,通过http://apache listen ip:port/server-status获得性能数据,具体参数说明和使用方法,请参考本文档的附件1: Apache性能监控。

缺省值:mod_status没有开启;

建议值:建议打开该选项。

3.1.14ExtendedStatus

Apache服务器可以通过特殊的HTTP请求,报告自身的运行状态。打开ExtendedStatus 参数时,可以让服务器报告更全面的运行状态信息。该参数默认为Off。如果运行时设置了“ExtendedStatus On”,那么Apache会对每个请求调用两次gettimeofday(),使得状态记录带有时间标志。

缺省值:Off;

建议值:从性能上考虑建议设置为Off。在问题诊断模式下,可以开启该选项协助问题分析和定位。

3.1.15User/Group

语法:

运行httpd进程的用户和组,通常,Apache由root用户启动,在提供服务时切换为由User指令指定的用户。User和Group配置是Apache的安全保证,Apache 在打开端口之后,就将其本身设置为这两个选项设置的用户和组权限进行运行,这样就降低了服务器的危险性。

缺省值:User apache | Group apache;

建议值:User apache | Group apache。

3.1.16prefork/worker模式配置

3.1.16.1prefork模式配置

语法:

参数说明:

1.StartServers:服务器启动时一次建立的进程数量;

2.MinSpareServers:设置空闲进程的最小数量。如果当前空闲进程少于这个值,

那么Apache会一秒创建一个进程,第二秒创建第二个进程,直到满足MinSpareServers设置的值为止;

3.MaxSpareServers:设置空闲进程的最大数量。如果空闲进程的数量超过

MaxSpareServers,Apache会kill掉多余的空闲进程;

4.ServerLimit:服务器允许配置的进程数的上限,对于preforkMPM,只有在

将MaxClients设置成高于默认值256的时候才需要使用这个命令,要将此值保持和MaxClients一样。

5.MaxClients:服务器允许同时接入请求的最大数量,任何超过此值限制的请

求都将进入等待队列。

6.MaxRequestsPerChild:每个进程最多处理的请求数量,到达这个值,子进程

将会自动结束,这样可以避免内存泄露。

建议值:不推荐使用prefork工作模式,详细见附件2: Apache工作模式。具体设置根据应用需求。

3.1.16.2worker模式配置

语法:

参数说明:

1.StartServer:服务器启动时一次建立的进程数量;

2.MaxClients:设定apache同一时间处理的最大请求数量,这里是指最大线程

数量,大小仍受ServerLimit限制且必须是ThreadsPerChild的倍数;

3.ServerLimit:服务器允许配置的进程数的上限;

4.MinSpareThreads:设置最少的空闲线程数;

5.MaxSpareThreads:设置最大的空闲线程数,必须大于等于MinSpareThreads

加上ThreadsPerChild的和(因为每个子进程拥有的线程数是固定的);

6.ThreadsPerChild:每个进程建立的常驻线程,之后不会再创建新的线程。

7.MaxRequestPerChild:每个子进程最多处理的请求数量。

8.worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild

的值决定的,应该大于等于MaxClients,也就是当显示声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients 必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应的值。

建议值:推荐采用worker模式,具体参数的设置需要根据应用需求。

3.2httpd.conf——主服务器配置

3.2.1ServerName

语法:

ServerName指令设置了服务器用于辨识自己的主机名和端口号。

缺省值:无(被注释)

建议值:保持与缺省值一致。

3.2.2UseCanonicalName

语法:

UseCanonicalName On会将ServerName这个域名用于所有自引用URL、SERVER_NAME、SERVER_PORT。

UseCanonicalName Off,如果客户端提供了主机名和端口,Apache将会使用这些信息来构建自引用URL。

UseCanonicalName DNS,用于为大量基于IP的虚拟主机的不提供“Host:”头的浏览器使用,使用这个选项时,Apache将对客户端连入的服务器的IP地址进行反向DNS查询,以构建自引用URL。

缺省值:Off;

建议值:Off。

3.2.3DocumentRoot

语法:

DocumentRoot指令设置了httpd的文档树的目录。

缺省值:“/var/www/html”。

建议值:建议与缺省值保持一致。具体根据应用需求设置。

3.2.4

语法:

用于封装一组指令,使之仅对某个目录及其子目录生效。任何可以在"directory"作用域中使用的指令都可以使用。Directory-path 可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。

在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。您也可以使用"[]"来确定字符范围。以上通配符都不能匹配"/"字符。

3.2.5

语法:

指令提供了基于文件名的访问控制,类似于指令。它将配对一个指令。在此配置段中定义的指令将作用于其基本名称与指定的文件名相符的对象。

3.2.6HostnameLookups

语法:

此指令启用了DNS查询,使得主机名能被记入日志(并用REMOTE_HOST 变量传递给CGI/SSI)。默认值设置为Off是为了那些不需要进行反向查询的站点节约网络带宽考虑的。高访问量的网站应该将此指令设置为Off因为DNS查询会造成明显的时间消耗。

缺省值:Off;

建议值:Off。

3.2.7日志相关配置指令

3.2.7.1ErrorLog

ErrorLog指令指定了当服务器遇到错误时记录错误日志的文件。如果file-path不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径。

缺省值:logs/error_log。

建议值:保持缺省值不变,即不改变error_log的存储位置,默认存储在/var/log/httpd目录。

3.2.7.2LogLevel

语法:

相关主题
文本预览
相关文档 最新文档