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. python中set(集合),深浅拷贝以及一些补充知识点

    1.set集合 特点:无序,不重复,元素必须可哈希(不可变) 作用:去重复 本身是可变的数据类型.有增删改查操作.{集合的增删改查操作应用较少,这里不做详细介绍了(这里的增有一个方法update注意这 ...

  2. webpack 配置react脚手架(四):路由配置

    1. 由于 react-router 是集成了 react-router-dom 和 react-router-native的一起的,所以这里要使用的是 react-router-dom, 2. 安装 ...

  3. Composer的安装以及替换为国内镜像

    Composer的安装以及使用国内镜像 Composer 学习网址 Composer官网 https://getcomposer.org/ Composer中文网 http://www.phpcomp ...

  4. 进程 multiprocessing Process join Lock Queue

    多道技术 1.空间上的复用 多个程序公用一套计算机硬件 2.时间上的复用 cpu 切换程序+保存程序状态 1.当一个程序遇到IO操作,操作系统会剥夺该程序的cpu执行权限(提高了cpu的利用率,并且不 ...

  5. pid 及参数调试方法

    所谓PID指的是Proportion-Integral-Differential.翻译成中文是比例-积分-微分. 记住两句话: 1.PID是经典控制(使用年代久远) 2.PID是误差控制() 对直流电 ...

  6. Python 之关键字和实例

    Python 之关键字和实例 0.0682018.04.09 20:10:28字数 1073阅读 2671 一.python关键字 Screen Shot 2018-04-09 at 19.50.17 ...

  7. LeetCode 273. Integer to English Words

    原题链接在这里:https://leetcode.com/problems/integer-to-english-words/description/ 题目: Convert a non-negati ...

  8. SQL server 中rowcount与@@rowcount 的使用

    rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例,set rowcount 10select * from 表A 这样的查询只会返 ...

  9. 发布VS源码

    发布VS源码步奏 先将Web.config设置修改一下   IP设置成点    文件名称设置成文件夹的名称,右键点击项目,点发布   勾选删除现有文件,点击发布 打开文件加  将文件解压成压缩包, 打 ...

  10. learning scala sealed class

    package com.aura.scala.day01 object sealedClassed { def findPlaceToSit(piece: Furniture) = piece mat ...