一台机器上如何部署多个web项目

1、综述

随着计算机硬件水平的不断提高,往往不是一台机器上只部署一个web项目了,而是尽可能多部署几个项目,以用来节省资源,现在我们看看如何一台机器部署多个项目,我们先结合上一篇文章中提到的tomcat架构(https://blog.csdn.net/luohaitao/article/details/135992940)

从图上我们可以看到,如果我们基于一个tomcat要实现多个项目部署有三种方式:

A、配置多个Context,这也是最简单的方式,一个host可以有多个Context。

B、配置多个host主机,也就是多个webapps,这样也是可以部署多个项目的。

C、配置多个service,或者配置多个engine,因为一个service有且只能有一个engine,所以我们也可以说就是配置多个service。

那么我们下面一一举例来说一下。

2、配置多个Context

项目都放在默认的webapps目录下,这种方式的站点通过统一端口(Connector:port)号访问。

2.1直接复制到webapps目录下

将你要部署的项目直接复制到webapps目录下,例如我这边在默认的webapps目录下增加我自己的项目(Context),里面就放两个文件。

浏览器输入不同上下文和主页,可显示如下:

如果想修改端口号,可以统一修改掉,访问两个app采用同一个端口。

注意:一个tomcat下同时部署多个项目
项目都放在webapps内(共用一个端口)
1)把两个项目都放在webapps下。
2)处理重复jar包。
两个项目如果有重复的jar包,一定要进行处理,否则会导致服务器内存耗尽,报类似于http-bio-8080"-exec-1等异常。
解决方案:建立共享包路径。
参考文章:https://my.oschina.net/angerbaby/blog/271438

2.2修改server.xml文件

除了直接复制项目到webapps目录下外,还可以采用映射的方式,修改server.xml文件,将路径添加到context节点上,此时这个项目目录就不一定非要放到webapps目录下了。

现在我把两个文件夹放到E盘上去,然后我们修改server.xml文件,这个时候我们再刷新刚才的页面就打不开了(因为已经移走两个app)。

我们重启tomcat,再测试就又能打开了。

以上新增内容说明:
docBase属性: 指定Web应用的文件路径,可以是绝对路径,也可以给定相对路径
path属性: 指定访问该Web应用的URL入口。
reloadable属性: 若这个属性为true,tomcat服务器在运行状态下会监视WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到class文件被更新,服务器会自动重新加载Web应用。

如果我们想给不同项目访问用不同的端口如何做呢?

3、配置多个host

配置多个host相当于配置多个webapps,现在网上大部分的做法是一个webapps,然后在server.xml配置多个host,不同host去对应webapps下面的context,但与我们我们这儿要说的有点不同,我们是要1个webapps对应不同的host。

3.1、多个webapps和多个host

只要在tomcat的目录下新建一个名为webapps2的文件夹,里面放上一个项目myapp2,如下图所示:

然后我们修改一下server.xml文件,里面的context可以不改,还用上面。

因为采用了不同的host主机名,但还是在一个tomcat下,那么我们修改一下hosts文件,

重启一下服务,访问一下两个host的页面,如下:

3.2、一个webapps和多个host

如果是一个webapps和多个host,docBase就不能是webapps这个目录了,这个时候其实是docbase已经跟webapps没有关系了,是另外一个目录,如下所示:

虽然不是webapps这个目录了,但appbase还是一个地方,还是统一管理。

这个时候浏览器还是输入地址前面的不同host的地址,照样显示:

4、配置多个service

我们继续解读server.xml继续将标签上移一层到service,从tomcat架构图中可以看到,是可以配置多个service的,这个目的是为了解决多个应用同名的问题(这是一种方法,另外就是部署多个tomcat)

将Service元素复制一份,直接粘贴到原来那个Service元素之后,即 .....这一部分复制下来,放到第一个 之后,然后再继续修改刚刚添加的部分配置信息,按照下面的步骤进行操作:

A、将复制的service的名称改为Catalina2。

B、将第复制的Connector元素的port属性由8989(默认是8080)改为其他未使用的端口,如8988

C、修改engine的名称与service一样为Catalina2。

D、host的appBase修改为webapps2。

E、接下来需要创建目录webapps2,与webapps同一个文件夹下。

F、并在tomcat的conf目录下创建Catalina2目录。

G、复制webapps/ROOT到webapps2中。

启动tomcat,就可以访问两个同名应用了。

当然你可以配置了多个 Service 元素。就需要修改Tomcat的内存参数,防止内存溢出。如果你是linux系统,修改 %TOMCAT_HOME%/bin/catalina.bat  
-Xms //初始堆大小  
-Xmx //最大堆大小  
-XX:PermSize    //初始永久区大小  
-XX:MaxPermSize  //最大永久区大小  
放到有效配置的第一行

set JAVA_OPTS=-server -Xincgc -Xms1024m -Xmx1024m -XX:MaxPermSize=256m  

如果你是windows系统,去修改注册表吧,
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat6.0\Parameters\Java
右边的 Options 里面一条配置占一行 前后不能有空格。 
然后重启。

5、配置多个Tomcat

同一台物理机上可以配置多个tomcat,这个资料已经很多了,在这先不介绍了。

参考资料:

https://www.cnblogs.com/jianxia612/articles/7571658.html

https://blog.csdn.net/vickyfei/article/details/7895853

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/454673.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美创科技与河南金融信创生态实验室签署战略合作协议

2024年1月31日,由普惠通科技与河南省科学院物理所、北京交通大学、中国金融电子化集团重庆金融认证中心联合发起成立中部地区第一家金融信创生态实验室运营公司(即河南豫科普惠通信创科技有限公司)与杭州美创科技股份有限公司战略合作签约仪式…

windows10忘记密码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

下载已编译的 OpenCV 包在 Visual Studio 下实现快速配置

自己编译 OpenCV 挺麻烦的,配置需要耗费很长时间,编译也需要很长时间,而且无法保证能全部编译通过。利用 OpenCV 官网提供的已编译的 OpenCV 库可以节省很多时间。下面介绍安装配置方法。 1. OpenCV 官网 地址是:https://opencv…

Gas Hero Coupon NFT 概览与数据分析

作者:stellafootprint.network 编译:mingfootprint.network 数据源:Gas Hero Coupon NFT Collection Dashboard Gas Hero “盖世英雄” 是一个交互式的 Web3 策略游戏,强调社交互动,并与 FSL 生态系统集成&#xff0…

深度学习之循环神经网络进阶

这一讲我们学习如何实现一个循环神经网络的分类器: 我们要解决的问题是名字分类,我们根据名字找到其对应的国家。 上一讲我们介绍了循环神经网络。 我们在处理自然语言的时候我们通常是以上这种方式,我们在处理单词的时候,通常…

Vue3快速上手(一)使用vite创建项目

一、准备 在此之前,你的电脑,需要安装node.js,我这边v18.19.0 wangdymb 2024code % node -v v18.19.0二、创建 执行npm create vuelatest命令即可使用vite创建vue3项目 有的同学可能卡主不动,可能是npm的registry设置的问题 先看下&#x…

【SpringBoot】策略和模板模式的思考与实践

一、应用场景 之所以会将策略和模板模式放在一起,是因为这两种模式用的最多最广泛,而且基本都是联合使用的。在开始之前,先复习一下模式的定义: 模板模式(Template Pattern) 模板模式是在一个抽象类中定…

day21网页布局

文章目录 块元素和行内元素列表标签表格标签媒体元素页面结构分析iframe内联框架 块元素和行内元素 块元素:无论内容多少,该元素独占一行。(p标签、h1~h6…) 行内元素:内容撑开宽度,左右都是行内元素的可以排在一行。&#xff08…

基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络(CNN) 4.2 损失函数和优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................…

外汇天眼:SIX推出了新的SIX参考利率加密货币和SIX实时加密货币指数

全球金融信息提供商SIX今天宣布推出新的SIX参考利率加密货币和SIX实时加密货币指数。新的SIX参考利率加密货币指数和SIX实时加密货币指数涵盖了主要的加密资产比特币(BTC)和以太坊(ETH),为市场及其表现提供了全面的快照…

Goland控制台日志打印错位

现象:Goland控制台打印日志,调整控制台界面大小后偶发性的日志内容错位 原因:未知(大概是bug) 解决方案: shift shift 进入Registry,取消go.run.process.with.pty勾选即可

《动手学深度学习(PyTorch版)》笔记7.5

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…