1、 环境
Apache2.0.43.0
Tomcat 4.1.13
mod_jk-2.0.43
jdk 1.4
Windows 2003
关键文件位置:
Server.xml:$tomcat_home\conf
Httpd.conf:$apache_home\conf
Mod_jk.conf:$tomcat_home\jk\
2、 假设背景
假设顶级域名www.abc.com,要架设site1.abc.com和site2.abc.com。site1和site2两个二级站点应用都在一台服务器上,假设对外IP:100.100.100.100
3、 mod_jk整合Apache、Tomcat
这个内容网上有很多介绍,也很简单,这里就不说了。
4、 增加Tomcat虚拟主机
打开Tomcat的server.xml文件,修改默认的host段,类似如下:
<Host name="site1.abc.com" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="d:\\workspace\\site1\\webapp\\" debug="0"
reloadable="true" crossContext="true">
</Context>
</Host>
并增加site2虚拟主机,类似如下:
<Host name="site2.abc.com" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="d:\\workspace\\site2\\webapp\\" debug="0"
reloadable="true" crossContext="true">
</Context>
</Host>
注意其中红色和蓝色加粗文字。
site2其实就是拷贝site1再对蓝色部分进行一下修改。
当然根据你的具体情况,也可以增加或者修改其他的配置。
5、 增加Apache虚拟主机
打开Apache的httpd.conf文件,在最后的VirtualHost部分增加类似如下内容:
<VirtualHost *:80>
ServerName site1.abc.com
DocumentRoot "d:\workspace\site1\webapp"
</VirtualHost>
<VirtualHost *:80>
ServerName site2.abc.com
DocumentRoot "d:\workspace\site2\webapp"
</VirtualHost>
这里DocumentRoot内容和Tomcat的Context中docBase一般来说是一致的。
找到#NameVirtualHost *这行,默认是注释掉的,修改为:
NameVirtualHost *:80
如果不打开这个配置,Apache会报错“default virtualhost overlap on port 80,the first has precedence”
如果不加“:80”,虽然也能运行起来,但Apache启动会报错。
VirtualHost *:80--mixing * prot and non-* ports with a NameVirtualHost address is not supported,proceeding with undefined results
6、 Hosts配置
由于本机没有DNS解析,测试的时候,在浏览器地址栏输入site1.abc.com,是找不到服务器的。为了测试,我们需要增加这样的主机,让Apache能找到主机。
文本打开windows\system32\drivers\etc\Hosts文件,增加两行
127.0.0.1 site1.abc.com
127.0.0.1 site2.abc.com
启动Apache和Tomcat服务,在地址栏分别敲入site1.abc.com和site2.abc.com。应该是都可以访问了。
7、 实际部署
实际部署的时候,当然是不需要修改Hosts文件了,因为Hosts文件只是对本机有效。通常ISP提供商应该会有系统来定义二级域名转发,在那里定义二级域名对应的IP。
site1.abc.com--->100.100.100.100
stei2.abc.com--->100.100.100.100
这样,就可以实际访问两个二级域名了。但是DNS配置好后,可能不会立刻生效,据说是2~24小时生效。
8、 其他
虽然经过上面配置,基本上没什么问题了,但因为各个应用使用的技术不一样,可能会出现访问不正常的情况。
如果用了struts框架,发现*.do的请求没有响应,则修改mod_jk.conf文件,增加
JkMount /*.do ajp13
如果你希望默认页面是login.jsp而不是index.jsp,则修改httpd.conf的DirectoryIndex,将login.jsp写到index.jsp前面
当然了,上面说的都是基本的配置,还有很多细节上的配置,其实我也不会。以上的配置,也是在朋友的帮助下做出来的,写下来,希望可以帮助需要的朋友。有不正确的地方,还请多多指正。