this is a extra element for clear the floated element
如何规划一个高容量的Apache服务器?
  • 12/31
  • 2008
apache | Linux 2461 次查看
  为了规划一个高容量的WEB服务器,我们分成以下环节来做:

  一:网络环境

  ——

  ——

  |

  |(eth0:192.168.11.8)

  |

  |(eth0:a.b.c.d)

  |

  A

  |——————--------------|

  B|------------->ISP

  ——

  (eth1:192.168.11.5)——

  web.company.com

  firewall.company.com

  A是局域网内部的一台WEB服务器,安装Redhat

  Linux

  6.X,编译Apache+PHP4+MySQL

  B是公司防火墙,外部地址为a.b.c.d,是通向Internet的唯一路径。B上也运行Apache

  做反向代理到内部机器B。假设公司的域名为@company.com,B是该域的域名服务器。

  二:WEB目录的组织结构

  我们计划把WEB服务器数据文件置于一单独的目录/www下面,再在其下面建立相应的

  子目录,如果我们计划设置WEB服务器web.company.com,则建立目录

  /www/web.company.com

  ,结构如下:

  /www/web.company.com/public/htdocs

  /cgi-bin

  /www/web.company.com/staging/htdocs

  /cgi-bin

  /www/web.company.com/developer/htdocs

  /cgi-bin

  三:

  访问方法与虚拟主机

  对staging和developer目录用基于端口的虚拟主机来访问,分别对应端口81,82。

  下面是apache的配置文件/usr/local/apache/conf/httpd.conf中虚拟主机部分的

  配置:

  Listen

  80

  Listen

  192.168.11.8:81

  Listen

  192.168.11.8:82

  〈VirtualHost

  192.168.11.8:81>

  documentroot

  /www/web.company.com/staging/htdocs/

  scriptalias

  /cgi-bin

  /www/web.company.com/staging/cgi-bin/

  transferlog

  "|/usr/local/apache/bin/cronolog

  /usr/local/apache/logs/web/staging/%Y/%m/%d/access_log"

  errorlog

  "|/usr/local/apache/bin/cronolog

  /usr/local/apache/logs/web/staging/%Y/%m/%d/error_log"

  〈/VirtualHost>

  〈VirtualHost

  192.168.11.8:82>

  documentroot

  /www/web.company.com/developer/htdocs/

  scriptalias

  /cgi-bin

  /www/web.company.com/developer/cgi-bin/

  transferlog

  "|/usr/local/apache/bin/cronolog

  /usr/local/apache/logs/web/developer/%Y/%m/%d/access_log"

  errorlog

  "|/usr/local/apache/bin/cronolog

  /usr/local/apache/logs/web/developer/%Y/%m/%d/error_log"

  〈/VirtualHost>

  注:上面是基于端口的虚拟主机设置,要访问测试服务器,用http://web.company.com:81/

  开发服务器用http://web.company.com:82/

  上面的transferlog

  and

  errorlog用了不是默认的格式,而是Apache网站上建议的这种每天

  一个文件的年/月/日格式,可从http://www.ford-mason.co.uk/resources/cronolog/下载编译

  后安装在/usr/local/apache/bin/cronolog,可查看Apache网站获得更多信息。

  http://httpd.apache.org/docs/misc/FAQ.html#rotate

  如还有其它主页需要在此服务器上服务,如在/www下再创建子目录hr.company.com(人事部门)

  ,可为主机A创建IP别名,如192.168.11.9,再做同样的基于端口的虚拟主机设置

  三:个人主页的情况

  假定Apache以用户组身份nobody运行,且用户主目录为/home/jephe,则在此目录下创建目录

  public_html

  a.设置用户主目录/home/jephe要给nobody组以读和执行的权限

  chmod

  750

  -R

  /home/jephe

  b.设置用户主目录/home/jephe下public_html目录的权限

  chmod

  -R

  2770

  /home/jephe/public_html

  c.设置用户主目录的拥有者

  chown

  -R

  jephe.nobody

  /home/jephe/public_html

  用户可FTP上传主页文件至自己的目录中,要设置/etc/inetd.conf中的FTP上载的umask默认值

  为u002,

  ftp

  stream

  tcp

  nowait

  root

  /usr/sbin/tcpd

  in.ftpd

  -l

  -a

  -u002

  然后用killall

  -HUP

  inetd生效。

  最后用http://web.company.com/~jephe/

  访问个人主页。

  四:防火墙机器B上的Apache反向代理

  设置如下:

  NameVirtualHost

  a.b.c.d

  〈VirtualHost

  a.b.c.d>

  servername

  web.company.com

  errorlog

  "|/usr/local/apache/bin/cronolog

  /var/log/httpd/web/%Y/%m/%d/error_log"

  transferlog

  "|/usr/local/apache/bin/cronolog

  /var/log/httpd/web/%Y/%m/%d/access_log"

  rewriteengine

  on

  rewriterule

  ^(/.*)$

  http://192.168.11.8/$1

  [P,L]

  proxyrequests

  off

  〈/VirtualHost>

  五:备份

  用Rsync备份主目录/www/web.company.com/public/htdocs整个目录,关于如何应用RSYNC,参见

  文章荟萃中的其它文章,主页在rsync.samba.org