利用tomcat在一台主机运行多个不同域名的java项目

背景:

最近想搞几个不同的网络项目,奈何囊中羞涩,没有足够的money去购物多台云服务器,所以尝试在一台主机上部署多个java项目,所以就利用Tomcat尝试完成这项工作。过程中也走了不少的弯路,最终实现了在一台云主机上运行了多个java项目。当然这个项目的访问量没有特别大。如果有相同需求的伙伴可以借鉴,也可提供更好的解决方案。分享次数不多,如有不好请谅解。
 
环境:
    Tomcat 8.0+jdk 8 

操作步骤

一、修改发布端口号为80(Tomcat默认为8080):其实这里就是把port:8080,修改成port:80就可以了,其他的参数不变。这样客户机在访问服务器时直接输入IP或域名就可以了
     打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:
<Connector port="8080" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
修改后:
<Connector port="80" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />

二、修改tomcat发布路径(默认路径:D:\Program Files\Tomcat\webapps\ROOT)

    打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:

<Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
  
    </Host>

</Engine>

在<host></host>标签之间添加上:<Context path="" docBase="apps" debug="0" reloadable="true" /> 。修改为:

<Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
          <Context path="" docBase="apps" debug="0" reloadable="true" />
    </Host>

</Engine>

path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页,则该键值留为空;
docBase是虚拟目录的路径,它默认的是$tomcat/webapps/ROOT目录,现在我在webapps目录下建了一个apps目录,让该目录作为默认目录。
debug和reloadable一般都分别设置成0和true。
重启服务器,访问服务器时就找$tomcat/webapps/apps下的项目了

三、多域名绑定
    打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:

<Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">     

    </Host>
</Engine>

修改为:

<Engine name="Catalina" defaultHost="www.hpu56.cn">  
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>  
    <Host name="app.hpu56.cn"  appBase="hpu56"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">  
    </Host>
    <Host name="www.hpu56.cn"  appBase="D:\project\hpu56"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    </Host>

    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    </Host>

</Engine>

Engine 的 dafaultHost :表示访问该tomcat默认进入的主机,注意一定不能是localhost,不然别人通过你的ip访问,就会默认进入tomcat的管理界面.

Host 的 name:表示该主机绑定的域名,如果绑定localhost则可以通过在浏览器中输入localhost访问该Host.

Host的 appBase:表示该主机绑定的文件存放路径,可以使用相对路径或绝对路径.

操作完成。

操作之后重启Tomcat,多个项目成功启动,可以通过浏览器访问多个项目的页面了。

1.如果我在浏览器中输入http://localhost 则访问 D:\Program Files\Tomcat\webapps\apps 下的网站
2.如果输入http://www.hpu56.cn 则访问 D:\Program Files\Tomcat\hpu56\ROOT 下的网站
3.如果输入http://app.hpu56.cn 则访问 D:\project\hpu56\ROOT 下的网站. 

发布了14 篇原创文章 · 获赞 13 · 访问量 1717

猜你喜欢

转载自blog.csdn.net/D102601560/article/details/102753516