如何規(guī)劃一個(gè)高容量的Apache服務(wù)器
2024-08-27 18:30:12
供稿:網(wǎng)友
A是局域網(wǎng)內(nèi)部的一臺(tái)WEB服務(wù)器,安裝Redhat Linux 6.X,編譯Apache+PHP4+MySQL
B是公司防火墻,外部地址為a.b.c.d,是通向Internet的唯一路徑。B上也運(yùn)行Apache
做反向代理到內(nèi)部機(jī)器B。假設(shè)公司的域名為@company.com,B是該域的域名服務(wù)器。
二:WEB目錄的組織結(jié)構(gòu)
我們計(jì)劃把WEB服務(wù)器數(shù)據(jù)文件置于一單獨(dú)的目錄/www下面,再在其下面建立相應(yīng)的
子目錄,如果我們計(jì)劃設(shè)置WEB服務(wù)器web.company.com,則建立目錄
/www/web.company.com ,結(jié)構(gòu)如下:
/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目錄用基于端口的來訪問,分別對應(yīng)端口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>
注:上面是基于端口的設(shè)置,要訪問測試服務(wù)器,用
開發(fā)服務(wù)器用
上面的transferlog and errorlog用了不是默認(rèn)的格式,而是Apache網(wǎng)站上建議的這種每天
一個(gè)文件的年/月/日格式,可從下載編譯
后安裝在/usr/local/apache/bin/cronolog,可查看Apache網(wǎng)站獲得更多信息。
如還有其它主頁需要在此服務(wù)器上服務(wù),如在/www下再創(chuàng)建子目錄hr.company.com(人事部門)
,可為主機(jī)A創(chuàng)建IP別名,如192.168.11.9,再做同樣的基于端口的設(shè)置
三:個(gè)人主頁的情況
假定Apache以用戶組身份nobody運(yùn)行,且用戶主目錄為/home/jephe,則在此目錄下創(chuàng)建目錄
public_html
a.設(shè)置用戶主目錄/home/jephe要給nobody組以讀和執(zhí)行的權(quán)限
chmod 750 -R /home/jephe
b.設(shè)置用戶主目錄/home/jephe下public_html目錄的權(quán)限
chmod -R 2770 /home/jephe/public_html
c.設(shè)置用戶主目錄的擁有者
chown -R jephe.nobody /home/jephe/public_html
用戶可FTP上傳主頁文件至自己的目錄中,要設(shè)置/etc/inetd.conf中的FTP上載的umask默認(rèn)值
為u002,
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a -u002
然后用killall -HUP inetd生效。
最后用 訪問個(gè)人主頁。
四:防火墻機(jī)器B上的Apache反向代理
設(shè)置如下:
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 ^(/.*)$ [P,L]
proxyrequests off
〈/VirtualHost>
五:備份
用Rsync備份主目錄/www/web.company.com/public/htdocs整個(gè)目錄,關(guān)于如何應(yīng)用RSYNC,參見
文章薈萃中的其它文章,主頁在rsync.samba.org