一:网络环境
―― ――
|
|(eth0:192.168.11.
|
|(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整个目录