如何規(guī)劃一個高容量的Apache服務器
更新時間:2008年03月15日 18:44:21 作者:
為了規(guī)劃一個高容量的WEB服務器,我們分成以下環(huán)節(jié)來做:
一:網(wǎng)絡環(huán)境
—— ——
| |(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是局域網(wǎng)內(nèi)部的一臺WEB服務器,安裝Redhat Linux 6.X,編譯Apache+PHP4+MySQL
B是公司防火墻,外部地址為a.b.c.d,是通向Internet的唯一路徑。B上也運行Apache
做反向代理到內(nèi)部機器B。假設公司的域名為@company.com,B是該域的域名服務器。
二:WEB目錄的組織結構
我們計劃把WEB服務器數(shù)據(jù)文件置于一單獨的目錄/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>
注:上面是基于端口的設置,要訪問測試服務器,用
開發(fā)服務器用
上面的transferlog and errorlog用了不是默認的格式,而是Apache網(wǎng)站上建議的這種每天
一個文件的年/月/日格式,可從下載編譯
后安裝在/usr/local/apache/bin/cronolog,可查看Apache網(wǎng)站獲得更多信息。
如還有其它主頁需要在此服務器上服務,如在/www下再創(chuàng)建子目錄hr.company.com(人事部門)
,可為主機A創(chuàng)建IP別名,如192.168.11.9,再做同樣的基于端口的設置
三:個人主頁的情況
假定Apache以用戶組身份nobody運行,且用戶主目錄為/home/jephe,則在此目錄下創(chuàng)建目錄
public_html
a.設置用戶主目錄/home/jephe要給nobody組以讀和執(zhí)行的權限
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生效。
最后用 訪問個人主頁。
四:防火墻機器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 ^(/.*)$ [P,L]
proxyrequests off
〈/VirtualHost>
五:備份
用Rsync備份主目錄/www/web.company.com/public/htdocs整個目錄,關于如何應用RSYNC,參見
文章薈萃中的其它文章,主頁在rsync.samba.org
B是公司防火墻,外部地址為a.b.c.d,是通向Internet的唯一路徑。B上也運行Apache
做反向代理到內(nèi)部機器B。假設公司的域名為@company.com,B是該域的域名服務器。
二:WEB目錄的組織結構
我們計劃把WEB服務器數(shù)據(jù)文件置于一單獨的目錄/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>
注:上面是基于端口的設置,要訪問測試服務器,用
開發(fā)服務器用
上面的transferlog and errorlog用了不是默認的格式,而是Apache網(wǎng)站上建議的這種每天
一個文件的年/月/日格式,可從下載編譯
后安裝在/usr/local/apache/bin/cronolog,可查看Apache網(wǎng)站獲得更多信息。
如還有其它主頁需要在此服務器上服務,如在/www下再創(chuàng)建子目錄hr.company.com(人事部門)
,可為主機A創(chuàng)建IP別名,如192.168.11.9,再做同樣的基于端口的設置
三:個人主頁的情況
假定Apache以用戶組身份nobody運行,且用戶主目錄為/home/jephe,則在此目錄下創(chuàng)建目錄
public_html
a.設置用戶主目錄/home/jephe要給nobody組以讀和執(zhí)行的權限
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生效。
最后用 訪問個人主頁。
四:防火墻機器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 ^(/.*)$ [P,L]
proxyrequests off
〈/VirtualHost>
五:備份
用Rsync備份主目錄/www/web.company.com/public/htdocs整個目錄,關于如何應用RSYNC,參見
文章薈萃中的其它文章,主頁在rsync.samba.org
相關文章
大型網(wǎng)站高并發(fā)解決方案分析之圖片服務器分離架構
本文講述了大型網(wǎng)站高并發(fā)情況下圖片服務器分離的分析與解決方案,并給出了各種圖片服務器架構方案及他們的優(yōu)缺點2018-03-03- 請注意本文已刊載在《開放系統(tǒng)世界》2003年第二期,該文章版權屬于該雜志所有,請勿隨意轉載,轉載請保留該聲明摘要:對于所有的ICP來說,除了保證網(wǎng)站穩(wěn)定正常運行以外,一個重要的問題就是網(wǎng)站訪問量的統(tǒng)計和分析報表,這對于了解和監(jiān)控網(wǎng)站的運行狀態(tài),對提高各個網(wǎng)站的服務能力和服務水平是必不可少的。通過對Web服務器的日志文件進行分析和統(tǒng)計,能夠有效掌握系統(tǒng)運行情況以及網(wǎng)站內(nèi)容的受訪問情況、加強對整個網(wǎng)站及其內(nèi)容的維護與管理。本文對Web服務器日志分析的原理和技術進行討論。2008-03-03
在RedHat下安裝apache jserv 1.1.2方法
雖然apache jserv的開發(fā)小組現(xiàn)在都從事tomcat的開發(fā),而且apache jserv只支持servlet 2.0的標準,并且要加其他的軟件(gnujsp)才能支持jsp;但是apache jserv在現(xiàn)階段比tomcat穩(wěn)定,因此現(xiàn)在apache jserv+gnujsp比較適合應用于web。如果想使用servlet2.2和jsp1.1的話,請使用tomcat,參看tomcat的安裝。本文介紹apache jserv 1.1.1在RedHat下的安裝。2008-03-03