apache+tomcat二级域名配置方法

时间:2022-09-16 23:30:31

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前面

 

当然了,上面说的都是基本的配置,还有很多细节上的配置,其实我也不会。以上的配置,也是在朋友的帮助下做出来的,写下来,希望可以帮助需要的朋友。有不正确的地方,还请多多指正。