当前位置:Linux教程 - Apache - 如何规划一个高容量的Apache服务器

如何规划一个高容量的Apache服务器



        


    一:网络环境

    —— ——
    | |(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


    摘自:不详
    作者:solaris888(gemini)








    发布人:netbull 来自:非常Linux