一台机器上如何部署多个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

相关推荐

  1. 如何机器管理 GitHub 账户

    2024-02-05 15:24:02       62 阅读
  2. 服务器如何安装2版本的达梦数据库

    2024-02-05 15:24:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-05 15:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-05 15:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-05 15:24:02       82 阅读
  4. Python语言-面向对象

    2024-02-05 15:24:02       91 阅读

热门阅读

  1. 1688商品详情页

    2024-02-05 15:24:02       40 阅读
  2. C&C++语言define和const区别

    2024-02-05 15:24:02       54 阅读
  3. PyTorch、NCNN、CV::Mat三者张量的shape

    2024-02-05 15:24:02       41 阅读
  4. createvm

    2024-02-05 15:24:02       47 阅读
  5. rust ethers-rs 签名与solidity验证签名例子

    2024-02-05 15:24:02       44 阅读
  6. 力扣刷题-27.移除元素

    2024-02-05 15:24:02       51 阅读
  7. Ubuntu文件系统结构

    2024-02-05 15:24:02       54 阅读