引用于 tomcat配置文件解析
server:即服务器,每个tomcat程序启动后,就是一个server。
service:这是一种抽象的服务,通常是在日志或者管理时使用这样一个概念。它把连接器和处理引擎结合在一起。
connector:用于处理连接和并发,通常包括两种方式HTTP和AJP。HTTP是用于网页地址栏http这种访问方式;AJP一般用于搭配Apache服务器。
engine:处理引擎,所有的请求都是通过处理引擎处理的。
host:虚拟主机,用于进行请求的映射处理。每个虚拟主机可以看做独立的请求文件。
组件之间的整体关系,总结如下:
一个Server元素中可以有一个或多个Service元素。
一个Service可以包含多个Connector,但是只能包含一个Engine;Connector接收请求,Engine处理请求。
Engine包含一个或者多个Host。每个Host组件代表Engine中的一个虚拟主机;
结构示例
<Server port="8005" shutdown="SHUTDOWN">
<Service name="myService1" >
<Connector port="9081"/>
<Engine name="myEngine1" defaultHost="test1" >
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
<Host name="test1" appBase="webapps1" />
</Engine>
</Service>
</Server>
综上所述,由于tomcat的结构性原因,导致创建基于端口的虚机主机和基于域名的虚机主机要使用两种不同的方式
1、基于端口的虚拟主机:在配置文件中新建service及Connector,Engine,Host组件
1.1、建立虚拟主机存放网页的根目录,并创建首页文件index.html
[root@bogon tomcat]# mkdir webapps1 webapps2 webapps3
[root@bogon tomcat]#pwd
/usr/local/apache-tomcat-8.5.6
[root@bogon tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps webapps1 webapps2 webapps3 work
[root@bogon tomcat]# mkdir webapps1/test1 webapps2/test2
[root@bogon tomcat]# echo "test9081" > webapps1/test1/index.html
[root@bogon tomcat]# echo "test9082" > webapps2/test2/index.html
2、修改 conf/server.xml 在文件加入以下配置,注意必须填在<Server></Server>标签内
<Service name="myService1" >
<Connector port="9081"/>
<Engine name="myEngine1" defaultHost="test1" >
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
<Host name="test1" appBase="webapps1" />
</Engine>
</Service>
<Service name="myService2" >
<Connector port="9082"/>
<Engine name="myEngine2" defaultHost="test2" >
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
<Host name="test2" appBase="webapps2" />
</Engine>
</Service>
1.3、配置完以后可以启动 Tomcat 服务并进行测试
[root@bogn tomcat]# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.65
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.65
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.65/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-8.5.65/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.65/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@bogon tomcat1]# curl http://127.0.0.1:9081/test1/
test9081
[root@bogon tomcat1]# curl http://127.0.0.1:9082/test2/
test9082
2、基于域名的虚拟主机:直接在对应的service中新建host即可
vim /usr/local/tomcat/conf/server.xml
164行下面加入
<Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="fal se" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true"/> </Host>
<Host name="www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="fal se" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true"/>