同一个tomcat启动多个实例
一般在使用Tomcat时,服务器会从conf及webapps目录中读取配置文件,并将文件写入logs、temp和work目录,当然一些jar文件和class文件需要从服务器的公共目录树中予以加载。因此,为了让多个实例能同时运行,每一个Tomcat实例都必须有自己的目录集。
首先下载安装tomcat,这里jdk的安装就不提了
tar xf apache-tomcat-8.5.16.tar.gz -C /usr/local
然后,创建一个文件夹tomcat-instance(该文件夹用于存放tomcat所有实例),并在这个文件夹下分别创建tomcat1和tomcat2两个实例文件夹:
[root@wadeson local]# ll
drwxr-xr-x. 9 root root 4096 8月 9 15:24 apache-tomcat-8.5.16
drwxr-xr-x. 4 root root 4096 8月 9 15:38 tomcat-instance
cd tomcat-instance
mkdir tomcat1 tomcat2
cd tomcat1然后拷贝需要的一些目录
cp -a /usr/local/apache-tomcat-8.5.16/conf ./
创建一些必须的工作和应用目录:mkdir logs webapps work temp
[root@wadeson tomcat1]# ll
总用量 20
drwx------. 3 root root 4096 8月 9 15:41 conf
drwxr-xr-x. 2 root root 4096 8月 9 15:31 logs
drwxr-xr-x. 2 root root 4096 8月 9 15:26 temp
drwxr-xr-x. 8 root root 4096 8月 9 15:45 webapps
drwxr-xr-x. 3 root root 4096 8月 9 15:40 work
修改tomcat1实例下面的server.xml,因为各实例必须使用不同的端口
<Server port="8012" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Host name="localhost" appBase="/usr/local/tomcat-instance/tomcat1/webapps"
<Context path="" docBase="ROOT" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/usr/local/tomcat-instance/tomcat1/logs"
然后去创建相应的目录:mkdir classes lib META-INF WEB-INF
[root@wadeson webapps]# pwd
/usr/local/tomcat-instance/tomcat1/webapps
[root@wadeson webapps]# ll
总用量 24
drwxr-xr-x. 2 root root 4096 8月 9 15:45 classes
drwxr-xr-x. 2 root root 4096 8月 9 15:45 lib
drwxr-xr-x. 2 root root 4096 8月 9 15:45 META-INF
drwxr-xr-x. 2 root root 4096 8月 9 15:44 myapp
drwxr-xr-x. 2 root root 4096 8月 9 15:40 ROOT
drwxr-xr-x. 2 root root 4096 8月 9 15:45 WEB-INF
在myapp和ROOT目录下面分别有index.jsp文件
最后为实例tomcat1创建start和stop脚本
[root@wadeson tomcat-instance]# cat start-tomcat1.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat1 指的是实例名,如果只有一个就和home变量一样
cd ${CATALINA_HOME}
./bin/catalina.sh start
[root@wadeson tomcat-instance]# cat stop-tomcat1.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat1
cd ${CATALINA_HOME}
./bin/catalina.sh stop
chmod +x start-tomcat1.sh stop-tomcat1.sh
然后启动实例tomcat1:
[root@wadeson tomcat-instance]# sh start-tomcat1.sh
Using CATALINA_BASE: /usr/local/tomcat-instance/tomcat1 这里则是tomcat实例名
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /usr/local/tomcat-instance/tomcat1/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/apache-tomcat-8.5.16/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.
[root@wadeson tomcat-instance]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14669/sshd
tcp 0 0 ::ffff:127.0.0.1:8012 :::* LISTEN 6752/java
tcp 0 0 :::8081 :::* LISTEN 6752/java
tcp 0 0 :::22 :::* LISTEN 14669/sshd
tcp 0 0 :::8010 :::* LISTEN 6752/java
访问网站:


创建tomcat2实例:
cd tomcat2
[root@wadeson tomcat2]# cp -a /usr/local/apache-tomcat-8.5.16/conf ./
[root@wadeson tomcat2]# ll
总用量 4
drwx------. 2 root root 4096 6月 22 01:02 conf
[root@wadeson tomcat2]# mkdir logs webapps work temp
[root@wadeson tomcat2]# ll
总用量 20
drwx------. 2 root root 4096 6月 22 01:02 conf
drwxr-xr-x. 2 root root 4096 8月 9 16:12 logs
drwxr-xr-x. 2 root root 4096 8月 9 16:12 temp
drwxr-xr-x. 2 root root 4096 8月 9 16:12 webapps
drwxr-xr-x. 2 root root 4096 8月 9 16:12 work
[root@wadeson webapps]# mkdir ROOT WEB-INF META-INF classes lib tomcat2_app
[root@wadeson webapps]# ll
总用量 24
drwxr-xr-x. 2 root root 4096 8月 9 16:15 classes
drwxr-xr-x. 2 root root 4096 8月 9 16:15 lib
drwxr-xr-x. 2 root root 4096 8月 9 16:15 META-INF
drwxr-xr-x. 2 root root 4096 8月 9 16:15 ROOT
drwxr-xr-x. 2 root root 4096 8月 9 16:15 tomcat2_app
drwxr-xr-x. 2 root root 4096 8月 9 16:15 WEB-INF
修改server.xml:
<Server port="8013" shutdown="SHUTDOWN">
<Connector port="8082" protocol="HTTP/1.1"
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
<Host name="localhost" appBase="/usr/local/tomcat-instance/tomcat2/webapps"
<Context path="" docBase="ROOT" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/usr/local/tomcat-instance/tomcat2/logs"
创建实例tomcat2启动和停止脚本:
[root@wadeson tomcat-instance]# cat start-tomcat2.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat2
cd ${CATALINA_HOME}
./bin/catalina.sh start
[root@wadeson tomcat-instance]# cat stop-tomcat2.sh
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.16
export CATALINA_BASE=/usr/local/tomcat-instance/tomcat2
cd ${CATALINA_HOME}
./bin/catalina.sh stop
启动tomcat2实例:
[root@wadeson tomcat-instance]# sh start-tomcat2.sh
Using CATALINA_BASE: /usr/local/tomcat-instance/tomcat2
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.16
Using CATALINA_TMPDIR: /usr/local/tomcat-instance/tomcat2/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/apache-tomcat-8.5.16/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.16/bin/tomcat-juli.jar
Tomcat started.
[root@wadeson tomcat-instance]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14669/sshd
tcp 0 0 :::8011 :::* LISTEN 6866/java
tcp 0 0 ::ffff:127.0.0.1:8012 :::* LISTEN 6752/java
tcp 0 0 ::ffff:127.0.0.1:8013 :::* LISTEN 6866/java
tcp 0 0 :::8081 :::* LISTEN 6752/java
tcp 0 0 :::8082 :::* LISTEN 6866/java
tcp 0 0 :::22 :::* LISTEN 14669/sshd
tcp 0 0 :::8010 :::* LISTEN 6752/java
udp 0 0 0.0.0.0:68 0.0.0.0:* 1780/dhclient
访问网站:


至此多实例的tomcat就部署完成了
当把Web应用的文件和Tomcat发行版的文件分开管理后,升级Tomcat将会变得十分容易,因为我们可以用新目录直接替换整个Tomcat发行版的目录。(升级替换tomcat版本目录就行,替换webapps应用就行)
同一个tomcat启动多个实例的更多相关文章
- 用eclipse的同一个tomcat启动两个javaweb项目
1.右键选择 Add and Remove 2.把左边两个项目add到右边 3.完成之后查看eclipse左边的Servers下的server.xml文件,会自动生成两个Context标签,当然你到第 ...
- 同一个tomcat部署多个项目导致启动失败
内容描述在同一个tomcat部署多个打包成war包的项目导致启动失败,报错如下: 报错信息Error starting ApplicationContext. To display the condi ...
- 聊聊 Tomcat 的单机多实例
Tomcat 从何而来? 先说 Tomcat 这一单词解释,如果你不是一个开发者,当然它在美国口语中并非是褒义词:如果你是开发者,那你一定听过 Web 应用服务器.Sun 公司和 Tomcat .如你 ...
- IntelliJ IDEA通过Tomcat启动项目过程分析
Tomcat部署项目的多种方式 Tomcat安装目录:${TOMCAT_HOME} 1.常规的webapps下直接部署到${TOMCAT_HOME}/webapps下 2.利用控制台进行部署 3.外部 ...
- Tomcat启动流程简析
Tomcat是一款我们平时开发过程中最常用到的Servlet容器.本系列博客会记录Tomcat的整体架构.主要组件.IO线程模型.请求在Tomcat内部的流转过程以及一些Tomcat调优的相关知识. ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- How Tomcat works — 五、tomcat启动(4)
前面摆了三节的姿势,现在终于要看到最终tomcat监听端口,接收请求了. 目录 Connector Http11Protocol JIoEndpoint 总结 在前面的初始化都完成之后,进行Conne ...
- Tomcat启动失败闪退
最近把电脑系统从win8升到了8.1(之前源于各种原因都没升外带升级失败),用都用了1个月了,突然发现tomcat启动不了,提示找不到什么什么- -,因为平时基本都是从开发工具里运行的服务器,都没有问 ...
- docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议 根本原因是 SecureRandom 这个 jre 的工具类的问题.那为什么 ...
随机推荐
- 【BZOJ4563】[Haoi2016]放棋子 错排+高精度
[BZOJ4563][Haoi2016]放棋子 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- 01.ZooKeeper安装和介绍
1.ZooKeeper安装和启动 1.下载解压ZooKeeper ZooKeeper官方地址:http://zookeeper.apache.org/ 下载当前稳定版本:zookeeper-3.4.6 ...
- java项目中初期常见的错误及解决方案
在做项目的初期,想必总会有各种奇奇葩葩的错误出现,本博文主要整理了博主在项目初期遇到的错误,希望能为大家减少犯这些错误 1.Env 名字写错了,图片中错误类型是名字没有发现的异常,因此需要检查后面报错 ...
- Netty 应用程序的一个一般准则:尽可能的重用 EventLoop,以减少线程创建所带来的开销。
Netty 系列一(核心组件和实例). - JMCui - 博客园 https://www.cnblogs.com/jmcui/p/9154842.html 阅读目录 一.概念 二.核心组件 三.实例 ...
- Oracle Java Mission Control MBean 服务器 飞行记录器
Oracle Java Mission ControlMBean 服务器飞行记录器
- 移除 URL 中的 index.php
w 将.htaaccess 放至该站点根目录. http://codeigniter.org.cn/user_guide/general/urls.html 如果你的 Apache 服务器启用了 mo ...
- 【react 分页器】 基于react-virtualized组件的分页器
react-virtualized 组件本身没有提供分页器功能,见这个issue:https://github.com/bvaughn/react-virtualized/issues/24 如果想给 ...
- react 日期
1.首先安装moment : npm install moment --save 2.在文件中引用: import moment from 'moment' 3.使用方式: 当前时间:moment() ...
- sigmoid & softmax、cross-entropy、relu
sigmoid函数由于其自身特点,容易造成几个问题 1.当sigmoid在输出层时容易造成loss较大时学习速度慢的情况(或者说是代价函数学习速度衰退问题) 原因:神经网络的学习方式是通过求代价函数对 ...
- django将数据库中数据直接传到html
1.当然,前提是建立和配置好django数据库啦~ 2.在python后台函数中引入需要的表 #要读取home这个APP下的models.py文件,引入其中的Student_message_unedi ...