Tomcat搭建基于域名的虚拟主机,实际就是实现了同一个Tomcat部署多个项目(网站/应用程序)。端口可以使用同一个,也可以不同。

(1).在tomcat的conf文件夹下存在Tomcat的配置文件:

  catalina.policy是Tomcat安全机制的配置文件,默认情况下Tomcat是非安全模式运行的,如果需要使用安全模式,那么需要在启动命令行中添加-security参数。

  catalina.properties是Catalina的配置文件,主要有安全设置、类加载设置、不需要扫描的类设置、字符缓存设置四大块。

  context.xml是在Tomcat 6.0时从server.xml中分离出来,设置Tomcat的数据源,主要用于连接数据库,可以被Tomcat动态加载。

  jaspic-providers.xml:Tomcat实现了JASPIC 1.1 Maintenance Release B标准,并通过这个配置文件集成第三方 JASPIC 身份验证。

  jaspic-providers.xsd定义了jaspic-providers.xml所使用到的标签。

  logging.properties是Tomcat的日志配置文件。

  server.xml是Tomcat的主配置文件,设置与服务相关的参数(例如路径、端口),该文件不支持热更新,每次修改完成之后需要重启Tomcat服务器才能生效。

  tomcat-users.xml是Tomcat的用户信息配置文件,在Tomcat Manager中使用。

  tomcat-users.xsd定义了tomcat-users.xml 所使用到的标签。

  web.xml是所有Web项目的缺省配置文件。

(2).使用同一个Tomcat,同一个端口,部署多个项目

 1)修改配置文件server.xml

[root@youxi1 ~]# vim /usr/local/tomcat8.5/conf/server.xml
//在已有的<Host>标签后面添加测试<Host>标签。要和原有的标签处于同一标签范围内(<Engine>标签内部)
<Host name="www.youxi1.com" appBase="/var/www">
<Context path="" docBase="/var/www/youxi1"/>
</Host>
<Host name="www.youxi2.com" appBase="/var/www">
<Context path="" docBase="/var/www/youxi2"/>
</Host>

  说明:<Host>标签中name指定域名;appBase指定项目的基本目录(发布目录),可以是绝对路径,也可以是相对路径,相对路径是基于Tomcat的安装目录。

     <Context>标签中path指定域名的虚拟目录,如果是空代表的就是/,如果path="test",那么访问时就是[ 域名 | [IP:端口] ]/test;docBase指定实际存放目录,可以是绝对路径,也可以是相对路径,相对路径基于当前<Host>标签的appBase参数。

 2)创建测试网页

[root@youxi1 ~]# mkdir -p /var/www/{youxi1,youxi2}
[root@youxi1 ~]# echo "This is One." > /var/www/youxi1/index.html
[root@youxi1 ~]# echo "This is Two." > /var/www/youxi2/index.html

  如果写过启动脚本的,可以使用启动脚本重启。如果没有写过启动脚本,建议kill掉tomcat再启动,如下:

[root@youxi1 ~]# ps aux | grep "/usr/local/tomcat8.5"  //这是为了指定到想要重启的Tomcat,防止有多个Tomcat在运行
root 1833 98.0 5.8 2256888 57996 pts/0 Sl 11:44 0:02 /usr/local/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8.5/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat8.5 -Dcatalina.home=/usr/local/tomcat8.5 -Djava.io.tmpdir=/usr/local/tomcat8.5/temp org.apache.catalina.startup.Bootstrap start
root 1846 0.0 0.0 112720 992 pts/0 R+ 11:45 0:00 grep --color=auto /usr/local/tomcat8.5
[root@youxi1 ~]# kill -9 1833  //杀死
[root@youxi1 ~]# ps aux | grep "/usr/local/tomcat8.5"  //查看是否杀死
root 1881 0.0 0.0 112720 992 pts/0 R+ 11:45 0:00 grep --color=auto /usr/local/tomcat8.5
[root@youxi1 ~]# /usr/local/tomcat8.5/bin/startup.sh  //调用启动脚本
Using CATALINA_BASE: /usr/local/tomcat8.5
Using CATALINA_HOME: /usr/local/tomcat8.5
Using CATALINA_TMPDIR: /usr/local/tomcat8.5/temp
Using JRE_HOME: /usr/local/jdk1.8.0_191
Using CLASSPATH: /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
Tomcat started.
[root@youxi1 ~]# ps aux | grep "/usr/local/tomcat8.5"  //查看是否开启
root 1891 93.0 5.8 2257916 58068 pts/0 Sl 11:45 0:02 /usr/local/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8.5/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat8.5 -Dcatalina.home=/usr/local/tomcat8.5 -Djava.io.tmpdir=/usr/local/tomcat8.5/temp org.apache.catalina.startup.Bootstrap start
root 1905 0.0 0.0 112720 992 pts/0 R+ 11:45 0:00 grep --color=auto /usr/local/tomcat8.5

 3)测试

  修改Windows上的hosts文件,模拟域名解析。这一步实际是DNS服务器解析域名。文件地址:C:\Windows\System32\drivers\etc\hosts。添加两行

192.168.5.101 www.youxi1.com
192.168.5.101 www.youxi2.com

  使用浏览器查看

(3).使用同一个Tomcat,不同端口,部署多个项目

 1)修改配置文件server.xml

[root@youxi1 ~]# vim /usr/local/tomcat8.5/conf/server.xml
//首先在<service>标签内找到<Connector>标签,复制粘贴到下方,然后修改port参数的值。
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> //再到当前<service>标签内的<Engine>标签内,找到<Host>标签,添加如下行
<Host name="www.youxi3.com" appBase="/var/www" port="8081">
<Context path="" docBase="/var/www/youxi3"/>
</Host>
<Host name="www.youxi4.com" appBase="/var/www" port="8082">
<Context path="" docBase="/var/www/youxi4"/>
</Host>

  <Host>标签相较于同一端口配置的<Host>标签,多了一个端口参数port。

 2)创建测试网页

[root@youxi1 ~]# mkdir -p /var/www/youxi{3,4}
[root@youxi1 ~]# echo "This is Three" > /var/www/youxi3/index.html
[root@youxi1 ~]# echo "This is Four" > /var/www/youxi4/index.html

  重启tomcat

[root@youxi1 ~]# !ps
ps aux | grep "/usr/local/tomcat8.5"
root 2345 0.9 9.8 2325048 98620 ? Sl 12:11 0:11 /usr/local/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8.5/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat8.5 -Dcatalina.home=/usr/local/tomcat8.5 -Djava.io.tmpdir=/usr/local/tomcat8.5/temp org.apache.catalina.startup.Bootstrap start
root 2546 0.0 0.0 112720 992 pts/0 R+ 12:32 0:00 grep --color=auto /usr/local/tomcat8.5
[root@youxi1 ~]# kill -9 2345
[root@youxi1 ~]# !ps
ps aux | grep "/usr/local/tomcat8.5"
root 2549 0.0 0.0 112720 992 pts/0 R+ 12:32 0:00 grep --color=auto /usr/local/tomcat8.5
[root@youxi1 ~]# /usr/local/tomcat8.5/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat8.5
Using CATALINA_HOME: /usr/local/tomcat8.5
Using CATALINA_TMPDIR: /usr/local/tomcat8.5/temp
Using JRE_HOME: /usr/local/jdk1.8.0_191
Using CLASSPATH: /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
Tomcat started.
[root@youxi1 ~]# !ps
ps aux | grep "/usr/local/tomcat8.5"
root 2559 91.6 5.8 2255860 58460 pts/0 Sl 12:32 0:02 /usr/local/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8.5/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8.5/bin/bootstrap.jar:/usr/local/tomcat8.5/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat8.5 -Dcatalina.home=/usr/local/tomcat8.5 -Djava.io.tmpdir=/usr/local/tomcat8.5/temp org.apache.catalina.startup.Bootstrap start
root 2572 0.0 0.0 112720 992 pts/0 S+ 12:32 0:00 grep --color=auto /usr/local/tomcat8.5

  如果开启防火墙需要添加端口号

[root@youxi1 ~]# systemctl start firewalld.service
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port={8081,8082}/tcp
success
[root@youxi1 ~]# firewall-cmd --reload
success
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --list-ports
8080/tcp 8081/tcp 8082/tcp

 3)测试

  Windows修改hosts文件,文件地址:C:\Windows\System32\drivers\etc\hosts。添加两行:

192.168.5.101 www.youxi3.com
192.168.5.101 www.youxi4.com

  Windows上浏览器查看

  注意:还可以复制整个<service>标签,进行修改。

参考:https://blog.csdn.net/dreamstar613/article/details/75282962/

   https://blog.csdn.net/ving_suixin/article/details/80333098

   https://blog.csdn.net/Apeopl/article/details/81164312

使用Tomcat搭建基于域名的虚拟机的更多相关文章

  1. linux:apache-配置基于域名的虚拟机主机

    一个http服务要配置多个站点,就需要用到虚拟机主机. 虚拟机主机一般有三类:1.基于域名 2.基于端口 3.基于ip 举例操作基于域名配置三个站点: 域名 站点目录 www.eejind.com   ...

  2. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)

    今天我们实验libvirt提供的快照功能,快照可以用于系统恢复,防止安装了某些软件或中病毒等情况导致系统损毁的情况. 一.快照类型 1)        磁盘快照 内部的:快照驻留在原来的镜像文件内部 ...

  3. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

    今天我们继续实验Bridge方式的网络配置. Bridge的逻辑原理图如下: 上图中的“br0”就充当了一个桥的作用,主机上的物理网口eth0等根据需要加入到这个桥里面,所有虚拟机要跟外界通信都通过这 ...

  4. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)

    接下来我们试验虚拟机的网络配置功能,KVM虚拟机网络配置主要有两种方式:NAT方式和Bridge方式.今天我们主要理解和实验NAT方式的网络配置. NAT方式是kvm安装后的默认方式,它支持主机与虚拟 ...

  5. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(八)

    Libvirt 是用c写的一个管理虚拟机及其资源(如网络.存储和外设等)的工具库,它不仅支持KVM/QEMU,它还支持xen,Vmware,OpenVZ和VirtualBox等其他HyperVisor ...

  6. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(三)

    原则上来说,qemu, libvirt, libusb, usbredir, spice等都可以通过 apt-get install的方式从Ubuntu源在线安装.但是这样如果碰到一点问题,就比较难办 ...

  7. .net项目架构改造之搭建基于java环境配置一览【上】

    最近公司做了一个项目,需要嵌套在千牛的客户端上,项目代码必须上阿里的聚石塔,全程采用基于docker的自动化部署,我们的项目是基于.net架构.很遗憾 的是基于windows的docker上部署在访问 ...

  8. 搭建基于java环境

    .net项目架构改造之搭建基于java环境配置一览[上]   最近公司做了一个项目,需要嵌套在千牛的客户端上,项目代码必须上阿里的聚石塔,全程采用基于docker的自动化部署,我们的项目是基于.net ...

  9. 高级运维(二):搭建Nginx服务器、用户认证、基于域名的虚拟主机、SSL虚拟主机、Nginx反向代理

    一.搭建Nginx服务器 目标: 在IP地址为192.168.4.5的主机上安装部署Nginx服务,并可以将Nginx服务器,要求编译时启用如下功能: 1> SSL加密功能 2> 设置Ng ...

随机推荐

  1. Codeforces #496 E1. Median on Segments (Permutations Edition)

    http://codeforces.com/contest/1005/problem/E1 题目 https://blog.csdn.net/haipai1998/article/details/80 ...

  2. 6. kafka序列化和反序列化

    https://blog.csdn.net/weixin_33690963/article/details/91698279 kafka序列化: 生产者在将消息传入kafka之前需要将其序列化成byt ...

  3. 【转】SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER

    SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER When working with Kafka you might find yo ...

  4. Java8 中的 Optional 相关用法

    基本方法: ofNullable() 为可能 null 的值创建一个 Optional 实例,  然后可以对该实例遍历/过滤, 判断是否存在,或者为空时执行.. ifPresent(...) 如果值存 ...

  5. 三、vue基础--表单绑定

    表单输入绑定:可以一起使用以下修饰符,都是在v-model里面使用的,有input,radio,textrea,select中都可以使用绑定 1.单选按钮,代码如下: <div id='app' ...

  6. java只能的round,ceil,floor方法的使用

    三者均位于java.lange包下的Math类中 round: 在原来数字的基础上加上0.5后向下取整, 例如: Math.floor(11.5)=12; Math.floor(-11.5)=-11( ...

  7. javaWeb下载

    ---恢复内容开始--- 下载 1. 下载就是向客户端响应字节数据!  原来我们响应的都是html的字符数据!  把一个文件变成字节数组,使用response.getOutputStream()来各应 ...

  8. Http 请求头 响应体 详解

    Referrer Policy 是什么? 我们知道,在页面引入图片.JS 等资源,或者从一个页面跳到另一个页面,都会产生新的 HTTP 请求, 浏览器一般都会给这些请求头加上表示来源的 Referre ...

  9. rest_framework/api.html

    解决办法 在setting.py文件中添加 'rest_framework' 注册这个应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.con ...

  10. luogu 4587

    假设当前已经组合好了 $[1, x]$ ,设 $ans = x + 1$ :显然初始时 $x = 0, ans = 1$ 我们另 $y = \sum_{i = l} ^ {r} (w_i <= ...