Linux服务器 Centos 7 中部署 Tomcat ,多域名访问
前言
同一个Tomcat中发布了多个项目,每个项目分别绑定不同的域名。那就需要在Tomcat中配置多域名,添加多个虚拟主机
<HOST></HOST>
,一个虚拟主机代表一个域名。
tomcat服务器的默认访问路径是webapps目录下的ROOT。如果更改tomcat服务器下的默认访问工程,需要修改tomcat/conf/server.xml配置文件。
相关准备
- Tomcat正常访问发布的项目 ,需要在url后面加项目名www.abc.com:8080/aaa ,如果要通过ip访问不加项目名,修改配置文件 conf/server.xml ,docBase指向webapps中的项目,webapps文件中有myTest项目。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">`
<!-- 配置默认访问的项目,配置这里后可以免项目名访问,只需要域名即可 -->
<Context path="/" docbase="/usr/local/tomcat/webapps/myTest" crosscontext="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
appBase:表示这个目录下面的子目录将自动被部署为应用;
name为访问项目的默认域名;
unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序;
autoDeploy: 显式设置autoDeploy为False。避免了在server.xml中增加Context配置时两次部署相同的Web应用程序;
deployOnStartup:如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用 中的server.xml没有相应的<Context>
元素,将采用Tomcat默认的Context
reloadable:如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序;
docBase可以是相对路径和绝对路径;
path: 路径名默认是"";
crosscontext:则可以实现在同一个tomcat下的多个web应用之间实现ServletContext对象访问。该属性主要用于跨应用访问数据,该特性只适用于多个应用程序部署在同一个tomcat下的情形;
Context: 即 Web 应用程序,一个 Context 对应一个 Web 应用程序。
如果不想通过8080端口访问,直接通过80端口,实现ip地址访问,在conf/server.xml中,把8080端口改成80端口即可
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
重启Tomcat,就可以直接通过地址访问,不需要在地址栏中输入端口和项目名
- 在百度云服务器中将申请好的域名,解析成对应的IP地址
修改配置: Tomcat的conf/server.xml文件 绑定多域名
在里面添加多个<Host></Host>
标签,如下
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="bbb.cn" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context docBase="/usr/local/tomcat/apache-tomcat-8.5.56/webapps/bbb/" path="" reloadable="true" debug="0" crosscontext="true"/>
</Host>
<Host name="ccc.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context docBase="/usr/local/tomcat/apache-tomcat-8.5.56/webapps/ccc/" path="" reloadable="true" debug="0" crosscontext="true"/>
</Host>
</Engine>