Apache的配置

    apache配置说明

  1. Apache目录结构说明(常用选项)
  • ./bin目录

[root@liwenbin apache]# tree -L 1 ./bin

./bin               # 程序命令目录

├── ab           # apache http服务器性能压力测试工具,类似的jmeter、loadrunner、webbench

├── apachectl    # apache的启动命令

├── apxs         # apache服务器编译和安装扩展的工具,在进行dso方式模块编译时会用到。

# 例如编译php时就用到:–with-apxs2=/usr/local/apache/bin/apxs

├── htcacheclean   # 清理磁盘缓存区的命令,一般少用

├── htpasswd       # 建立和更新基本认证文件.例如配置nagio监控时候会用到

├── httpd          # 为apache的控制命令程序,apachectl执行的时候会调用到httpd

└── rotatelogs     # apache自带日志轮询工具 ,也可以用到cronolog代替。

  • ./conf目录

[root@liwenbin apache]# tree -L 1 ./conf

./conf                   # 配置文件目录

├── extra             #额外的Apache配置文件目录

├── httpd.conf        #Apache的主配置文件

  • /htdocs目录

[root@liwenbin apache]# tree -L 1 ./htdocs/

./htdocs/                  #编译安装时默认站点目录

└── index.html          #编译安装时默认首页文件

  • /logs目录

[root@liwenbin apache]# tree -L 1 ./logs/

./logs/                        #默认日志文件存放

├── access_log              # 访问日志

├── error_log               # 错误日志

└── httpd.pid               # 记录主进程号

  • /modules目录

[root@liwenbin apache]# tree -L 1 ./modules/

./modules/         #Apache的模块目录,比如php、memcache等模块编译后都在这里

└── httpd.exp

  • ./conf/extra/目录

[root@liwenbin apache]# tree -L 1 ./conf/extra/

./conf/extra/

├── httpd-autoindex.conf

├── httpd-dav.conf           #dav支持配置

├── httpd-default.conf       # 相关的服务参数如超时时间,保持连接时间等

├── httpd-info.conf

├── httpd-languages.conf     #语言支持配置

├── httpd-manual.conf

├── httpd-mpm.conf           #服务器池管理。如选择apache模式及配置连接数

├── httpd-multilang-errordoc.conf

├── httpd-ssl.conf           #SSL支持配置

├── httpd-userdir.conf

 

 

     2.Apache主配置文件httpd.conf

[root@backup conf]# egrep -v “#|^$” httpd.conf|nl

1  ServerRoot “/application/apache2.2.27”   # apache根目录,应只能root访问,一般不需要修改

2  Listen 80                # apache监听端口,墨认80,如果同时监控81可以加一行:Listen 81

3  <IfModule !mpm_netware_module>

4  <IfModule !mpm_winnt_module>

5  User daemon            # apache的用户,默认为daemon,建议修改,如apache

6  Group daemon           # apache的用户组,默认为daemon,建议修改,如apache

7  </IfModule>

8  </IfModule>

9  ServerAdmin you@example.com     # 系统管理员的邮箱,此项为非重要选项,当网站出现问题时,面面会显示此页面地址

10  DocumentRoot “/application/apache2.2.27/htdocs”     #apache默认的web站点目录,路径结尾不要添加斜线

 

#11-16 行,对根目录的控制

11  <Directory />

12      Options FollowSymLinks    #FollowSymLinks表示允许使用符号连接,没加的选项默认为禁用

13      AllowOverride None        #禁止用户对目录配置文件(.htaccess)重载。普通站点建议不开

14      Order deny,allow          #deny优先,没有明确说拒绝都将通过,类似去商场,随便进,除非保安不让进(即下面的拒绝规则)

15      Deny from all             #明确指出,拒绝所有访问

16  </Directory>

 

# 17-22对默认apache站点目录限制配置,如果读者配置了新站点目录而没配置这里会出现403错误

17  <Directory “/application/apache2.2.27/htdocs”>

18      Options Indexes FollowSymLinks        #Indexes表示允许目录浏览,这很危险,应取消掉

19      AllowOverride None

20      Order allow,deny     #allow优先,没有明确允许都拒绝访问,类似去电影院,没票不能进,必须要有票                        Apache优化,应该去掉或前面加-

21      Allow from all       #明确指出,允许所有访问

22  </Directory>

23  <IfModule dir_module>

24      DirectoryIndex index.html     #配置默认的apache首页,如果虚拟主机未配置,默认应用这里的配置。可以有多个,以空格隔开,调用时前面优先匹配

25  </IfModule>

 

26  <FilesMatch “^\.ht”>           #防止.htaccess和.htpasswd等重要隐藏文件被用户查看

27      Order allow,deny

28      Deny from all

29      Satisfy All

30  </FilesMatch>

31  ErrorLog “logs/error_log”    #错误日志路径

32  LogLevel warn

33  <IfModule log_config_module>

34      LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

35      LogFormat “%h %l %u %t \”%r\” %>s %b” common     #普通访问日志格式

36      <IfModule logio_module>

37        LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio

38      </IfModule>

39      CustomLog “logs/access_log” common    #默认站点访问日志配置

40  </IfModule>

 

#41-51行为cgi配置,没有特殊需求应考虑全部注掉或者干脆删了

41  <IfModule alias_module>

42      ScriptAlias /cgi-bin/ “/application/apache2.2.27/cgi-bin/”

43  </IfModule>

44  <IfModule cgid_module>

45  </IfModule>

46  <Directory “/application/apache2.2.27/cgi-bin”>

47      AllowOverride None

48      Options None

49      Order allow,deny

50      Allow from all

51  </Directory>

 

52  DefaultType text/plain     #定义当不能确定MIME类型时服务器提供的默认值

53  <IfModule mime_module>

54      TypesConfig conf/mime.types

55      AddType application/x-compress .Z

56      AddType application/x-gzip .gz .tgz

57  </IfModule>

58  <IfModule ssl_module>

59  SSLRandomSeed startup builtin

60  SSLRandomSeed connect builtin

61  </IfModule>

 

     3.虚拟主机配置文件(httpd-vhosts.conf

[root@liwenbin extra]# egrep -v “#|^$” httpd-vhosts.conf|nl

1  NameVirtualHost *:80    #表示使用基于名称的虚拟主机配置。*表示本机所有IP,可以改成具体IP

2  <VirtualHost *:80>      #定义一个虚拟主机,监听本机所有IP地址的80端口

3      ServerAdmin webmaster@dummy-host.example.com      #管理员信箱,如果没有找主配置文件

4      DocumentRoot “/application/apache2.2.27/docs/dummy-host.example.com”     #站点目录

5      ServerName dummy-host.example.com                      #域名

6      ServerAlias www.dummy-host.example.com                 #别名

7      ErrorLog “logs/dummy-host.example.com-error_log”       #错误日志

8      CustomLog “logs/dummy-host.example.com-access_log” common    #访问日志

9  </VirtualHost>

 

 

 

 

       4.多路处理模块(MPM)(httpd-mpm.conf

[root@liwenbin extra]# egrep -v “#|^$” httpd-mpm.conf|nl

1  <IfModule !mpm_netware_module>

2      PidFile “logs/httpd.pid”        #主进程ID文件

3  </IfModule>

4  <IfModule !mpm_winnt_module>

5  <IfModule !mpm_netware_module>

6  LockFile “logs/accept.lock”      #锁文件

7  </IfModule>

8  </IfModule>

##设置prefork多路处理模块(如果没有指定会默认)

9  <IfModule mpm_prefork_module>

10      StartServers          5     #StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数

11      MinSpareServers       5     #设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意

12      MaxSpareServers      10     #设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进  程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″

13      MaxClients          150     #用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是150,如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。

14      MaxRequestsPerChild   0     #设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏  无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 如果设置为非零值,笔者建议设为10000-30000之间的一个值。

15  </IfModule>

公式:     MaxClients<=ServerLimit

#设置worker多路处理模块

16  <IfModule mpm_worker_module>

17      StartServers          2      #StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

18      MaxClients          150      #用于伺服客户端请求的最大接入请求数量(最大线程数)。任何超过MaxClients限制的请求都将进入等候队列。默认值  是”400″,16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,你必须同时增加 ServerLimit的值。笔者建议  将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。

19      MinSpareThreads      25    #最小空闲线程数,默认值是”75″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,  子进程将产生新的空闲线程。

20      MaxSpareThreads      75    #设置最大空闲线程数。默认值是”70″。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数  太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。

21      ThreadsPerChild      25    #每个子进程建立的线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥  有的所有线程的总数要足够大,以便可以处理可能的请求高峰。

22      MaxRequestsPerChild   0    设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结  束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;  给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 如果设置为非零值,笔者建议设为10000-30000之间的一个值

23  </IfModule>

#公式:           ThreadLimit >= ThreadsPerChild

MaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数                    MaxSpareThreads >= MinSpareThreads+ThreadsPerChild

24-47行为其他模块,基本不用,这里不再累述

 

 

    5.配置Apache服务器默认设置 httpd-default.conf

 

[root@backup extra]# egrep -v “#|^$” httpd-default.conf|nl

1  Timeout 300             设置服务器在断定请求失败前等待的秒数。默认值300

2  KeepAlive On            设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On。

3  MaxKeepAliveRequests 100   限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优的服务器性能。

4  KeepAliveTimeout 5     设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

5  UseCanonicalName Off   配置服务器如何确定它自己的域名,可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供”Host:”头的浏览器使用。笔者建议设置为Off。

6  AccessFileName .htaccess    设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。

7  ServerTokens Full     控制服务器回应给客户端的”Server:”应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着 ServerSignature指令的显示内容。可选值为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。

8  ServerSignature On   配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外创建一个指向 ServerAdmin的”mailto:”部分。建议使用默认值Off。

9  HostnameLookups Off   设置是否启用对客户端IP的DNS查找,可选值为On | Off | Double。DNS查询会造成明显的时间消耗,建议设置为Off。

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇