tomcat虚拟主机_动力节点Java学院整理

发布时间 - 2026-01-11 02:33:00    点击率:

对于Tomcat服务器,可以放置多个网站(多个web应用),这就是讲配置多个虚拟主机,可以看成好像有多个主机,而每个主机上有一个web应用。如同之前的文章所说的,对于Tomcat服务器来讲,在server.xml文件中,一个<Host>标签就代表着一台虚拟主机,之前的文章所用的都是默认的虚拟主机,这个在server.xml文件中是这样定义的:

<Host name="localhost" appBase="webapps" autoDeploy="true" unpackWARs="true">
...
</Host>

可以看到这个已有的虚拟主机的名称(“localhost”)正好是浏览器访问本机的回环地址的主机名,appBase属性是存放web应用的目录,autoDeploy指是否自动部署,unpackWARs指是否自动解压war包,如果为false则不解压直接从war包中运行应用程序。

  而我们想配置多个虚拟主机也是这样,在server.xml文件中添加<Host>标签,指定name属性和appBase属性之后,再添加web应用。

  通常配置虚拟主机方式与网站域名比较相关,而我没有有域名的网址,因此直接修改hosts文件将域名重定向作为学习在服务器中虚拟主机的添加和配置。

  修改Tomcat服务器中的server.xml文件,添加<Host>标签,name属性采取“域名”的方式,并将该虚拟主机存放web应用的目录【fjdingsd】放在非Tomcat所在的【D】盘下:

<Host name="www.fjdingsd.com" appBase="D:\fjdingsd" autoDeploy="true" unpackWARs="true">
</Host>

   【news】目录中:  

当在server.xml中添加好虚拟主机之后,直接将web应用放置在对应的虚拟主机存放web应用目录,注意,这里是由<Host>标签中appBase定义的D盘下【fjdingsd】目录,而我的web应用【news】就应该放这其中,在我的web应用所在目录中有自定义的home.html文件。

现在就是需要将定义的虚拟主机名和ip绑定,因为没有向DNS服务器注册,所以我就使用hosts文件中将我的虚拟主机名与本机ip地址绑定:  

这样启动Tomcat服务器,在浏览器中输入,可以看到: 

 

这样就配置好了一个虚拟主机,并且在这虚拟主机中还有web应用。

  这里只是小试一下对Tomcat服务器的虚拟主机配置,而如果想真正让外界访问我们配置的虚拟主机(网站),应该向DNS服务器注册域名才行。

  不管在Tomcat服务器中添加了多少个虚拟主机,最终都是转为ip地址向服务器访问。这里就会有一个问题,如果每个web应用都设置了首页,而又不在浏览器中输入域名,而是直接通过ip地址打开,那么服务器怎么知道应该是去哪个虚拟主机寻求资源呢?

  答案就在Tomcat服务器的引擎<Engine>上,由server.xml文件中的<Engine>标签定义了Tomcat服务器的默认虚拟主机:

<Engine defaultHost="localhost" name="Catalina">
 ...
 <Host name="localhost" ...> </Host>
 <Host name="www.fjdingsd.com" ...> </Host>
 ...
</Engine>

因此如果我想改变Tomcat服务器的默认虚拟主机,就修改<Engine>标签中的“defaultHost”属性。

================================================================

  如果要将开发好的web应用部署到远程服务器中,可以将web应用进行压缩成war格式,再进行传输,在Tomcat服务器运行的过程中,如果在其存放web应用的目录中检测到新增的war包,则会进行自动解压并部署(<Host>中的unpackWARs属性和autoDeploy属性)。这种方式最适合向远程服务器进行新的web应用传递并管理。
  那么如何对开发好的web应用进行war打包呢:

      在cmd中键入 “jar -cvf  应用名.war  应用名”。

如我的web应用为D盘下【fjdingsd】目录中的【news】目录,那么我在cmd中就该这么输入:jar  -cvf  news.war  news 

并得到了war文件: 

 

然后将这个news.war往Tomcat的【webapps】目录中一放,过几秒后Tomcat就会对其自动解压,Tomcat服务器一定要先打开才会看到自动解压的过程。

   过3、4秒后:  

如果在Tomcat运行的过程中,将已经自动解压的war包删除,则过几秒Tomcat也会自动将解压后的web应用删除,这点请注意。

  如果是在Tomcat服务器未启动之前,将war包放入【webapps】目录中,那么Tomcat启动后会自动解压并部署。

  如果在是Tomcat解压的war包,而在将Tomcat关闭后再删除war包,那么在此启动Tomcat后之前由war包解压出来的web应用不会被删除。

Tomcat的体系结构  

  Tomcat的体系结构可以从其最重要的server.xml文件中进行结构分析,下图是一张Tomcat的体系结构图:

  

结合server.xml文件可以看到:  

  Tomcat启动后,也就是服务器(<Server>标签),启动后也会启动一些监听器(<Listener>)和一些全局命名资源(<GlobalNamingResources>)。

  除了服务器(<Server>标签)被启动后,还会启动“服务”(<Service>),正如在cmd中键入的“services.msc”的那种。 

 

  在服务(<Service>)下会有各种连接器(<Connector>),如上面体系结构图所示,其中和浏览器打交道的连接器(<Connector>)定义了连接协议(protocol),连接端口(port),连接超时(connectionTimeout)等等属性,当然还要别的用途的连接器。

  

  在服务(<Service>)下除了各种连接器(<Connector>),还有一个引擎(<Engine>),当浏览器将一些请求发来时就通过连接器(<Connector>)交给引擎(<Engine>),引擎(<Engine>)中可以包含一个或多个虚拟主机(<Host>),而引擎也规定了哪个虚拟主机是默认访问的。 

 

  引擎(<Engine>)通过寻找指定的虚拟主机(<Host>)将请求交给它,然后由虚拟主机(<Host>)来寻找是哪个web应用,虚拟主机(<Host>)定义了浏览器需输入的主机名称、web应用存放的位置,和别的一些属性等等 

 

  而至于何种web应用就要看采用哪种虚拟目录映射了,如果是添加<Context>,那么一个<Context>标签就代表一个web应用  

  或者是直接将web应用所在目录放在<Host>标签指定的路径,那么就没有<Context>标签来代表该web应用


# tomcat虚拟主机  # tomcat中虚拟主机及web应用程序的配置方法  # Linux上tomcat的虚拟主机IP映射配置(图片服务器)  # Tomcat配置虚拟主机的实现示例  # 虚拟主机  # 多个  # 器中  # 可以看到  # 都是  # 目录中  # 放在  # 也会  # 结构图  # 本机  # 绑定  # 几秒  # 过程中  # 我想  # 我就  # 就会  # 是在  # 会有  # 我在  # 好了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python企业级消息系统教程_KafkaRabbitMQ高并发应用  浅析上传头像示例及其注意事项  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  微信小程序 canvas开发实例及注意事项  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel如何实现多对多模型关联?(Eloquent教程)  Python面向对象测试方法_mock解析【教程】  微信小程序 require机制详解及实例代码  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何在阿里云域名上完成建站全流程?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何快速搭建个人网站并优化SEO?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  PHP正则匹配日期和时间(时间戳转换)的实例代码  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Laravel Session怎么存储_Laravel Session驱动配置详解  如何用腾讯建站主机快速创建免费网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  iOS验证手机号的正则表达式  香港服务器WordPress建站指南:SEO优化与高效部署策略  Android自定义控件实现温度旋转按钮效果  中山网站推广排名,中山信息港登录入口?  如何在云主机上快速搭建网站?  如何在搬瓦工VPS快速搭建网站?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  javascript中对象的定义、使用以及对象和原型链操作小结  如何在 React 中条件性地遍历数组并渲染元素  Laravel如何使用.env文件管理环境变量?(最佳实践)  JS实现鼠标移上去显示图片或微信二维码  如何自定义建站之星网站的导航菜单样式?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  网站制作壁纸教程视频,电脑壁纸网站?  百度浏览器如何管理插件 百度浏览器插件管理方法  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  简单实现Android文件上传  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板