[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > Apache > 正文
如何規劃一個高容量的Apache服務器?
http://www.linuxforum.net 吳阿亭 (2001-04-21 17:40:21)
                 
為了規劃一個高容量的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



Jephe
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★