一、Tomcat介绍

Tomcat是Apache软件基金会的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat 中得到体现,Tomcat支持最新的Servlet和JSP规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

同类软件:

jboss jetty

weblogic ORACLE

商业用付费EJB

企业支持重载配置websphere IBM商业授权

1、运行原理

coyote是tomcat的Connector框架的名字,简单说就是coyote来处理底层的socket,并将http请求、响应等字节流层面的东西,包装成Request和Response两个类(这两个类是tomcat定义的,而非servlet中的ServletRequest和ServletResponse),供容器使用

1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

2、Connector把该请求交给它所在的service的Engine(引擎)来处理,并等待Engine的回应。

3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。

4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“空”的Context去处理)。

5、path="/test"的context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。

6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet ()或doPost().执行业务逻辑、数据存储等程序。

7、Context把执行完之后的HttpServletResponse对象返回给Host。

8、Host把HttpServletResponse对象返回给Engine。

9、Engine把HttpServletResponse对象返回Connector。

10、Connector把HttpServletResponse对象返回给客户Browser。

Connector连接器和容器container(解析java代码)

二、安装和配置

1、安装方式介绍

①yum方式安装加载epel源,版本目前为tomcat7.0

yum -y install java 这个是安装jdk的

可以先yum info tomcat 查看当前epel源存在的版本

②二进制方式安装直接下载,部署好java环境,即可运行(推荐)

③源码方式安装需要下载Apache Ant进行编译安装

2、二进制安装

①上传获取软件

②部署java环境

tar zxvf jdk-8u192-linux-x64.tar.gz
mkdir /usr/local/java
mv jdk1.8.0_192 /usr/local/java/
#tomcat配置环境变量的两种方式两种使用其中一种即可
#第一种tomat依赖JAVA_HOME环境变量,通过导入shell脚本
echo "export JAVA_HOME=/usr/local/java/" >> /etc/profile
添加环境变量
./etc/profile
和source /etc/profile 一样,都是让配置立即生效
#第二种tomcat依赖java环境变量
echo"PATH=/usr/local/java/bin:$PATH" >> /etc/profile
source /etc/profile
#第三种tomcat依赖JRE_HOME变量
echo "export JR_HOME=/usr/local/java/jre" >> /etc/profile

如果配置JAVA_HOME路径配置到jdk下就可以,不需要配置到bin下。

如果配置java的环境变量PATH,就指定到bin下。

如果启动tomcat,遇到如下问题

①没有安装jre jdk

②环境变量没有配置

③启动的软件找不到需要的java相关软件

#部署tomcat
tar xvf apache-tomcat-9.8.11.tar.gz
mv apache-tomcat-9.0.11 /usr/local/tomcat

安装完成访问tomcat官网测试是否安装成功

服务器ip:8080

如果需要更换jdk,先 killall java cd到bin目录yum remove java*

卸载jdk完成之后重新上传并解压tar xvf 新的安装包 -C 指定解压目录

可以mkdir -p /usr/local/java tar xvf 新的安装包 -C /usr/local/java

3、目录介绍

bin存放启动和关闭Tomcat的脚本文件

conf存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml

lib存放Tomcat服务器所需的各种JAR包文件

logs 存放Tomcat执行时的日志文件

temp 此目录是tomcat存放的临时文件

webapps tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样work用于存放JSP应用程序在部署时编译后产生的class文件

1.1项目代码目录

docs tomcat文档

examples tomcat自带的一个独立的web应用程序例子

host-manager tomcat的主机管理应用程序(虚拟机服务器)

manager tomcat的管理应用程序

ROOT指tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port访问到

1.2、配置文件目录

catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,

session等的管理权限

catalina.prloperties 配置tomcat的classpath等

context.xml tomcat的默认context容器

logging.properties 配置tomcat的日志输出方式(注意是运行日志,不是访问日志)

server.xml tomcat的主配置文件(修改端口号8080)

tomcat-users.xml tomcat的角色(授权用户)配置文件

web.xml tomcat的应用程序的部署描述符文件(配置虚拟机域名绑定)

4、启动相关说明

tomcat的相关管理命令在$prefix/bin目录下

经常使用的命令: ./version.sh

catalina.sh主命令脚本

configtest.sh检测配置文件

shutdown.sh关闭

startup.sh启动

version.sh查看版本

测试启动tomcat

/usr/local/tomcat/bin/startup .sh

ps aux |grep tomcat 查看进程

netstat -lntp |grep 8888 查看端口号

5、配置服务

在/etc/init.d/目录下添加一个tomcat脚本,用于管理服务

vim catalina.sh

另外一种通过wc统计字节数的脚本判断方法

通过判断后台启动字符的方法不行,因为进程里面没有tomcat字符

6、配置开机自启动服务

启动级别和优先级。

012345:表示在2、3、4、5运行级别上启动;80:表示启动顺序;90:表示关闭顺序。

优先级范围是0-100,数字越大,优先级越低。

CentOS7是把脚本放在

将脚本放置/etc/rc.d/init.d路径

0 关机

1 为单用户模式,就像Win下的安全模式类似。

2 为多用户模式,但是没有网络连接。

3 为完整的多用户模式,是标准的运行级,命令行模式。

4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。

5 带图像界面的多用户模式。

6 为重启,运行init 6机器就会重启。

三、企业常见使用方式

1、jsp代码测试

可以通过ip:8080/examples 测试JSP Servlets WebSocket

2、基于域名访问的Host配置

tomcat单实例运行多个tomcat应用的案列

①建立项目目录并写入测试文件

测试文件是写入项目根目录ROOT

echo "test" >> index.html

②编辑配置文件

shell > /usr/local/tomcat/ conf/ server.xml

③检测配置并重启

service tomcat configtest

service tomcat restart

④访问主机解析域名

Tip:

项目源码:|

①jsp jsp=>java代码=>class字节码=>加载jvm运行=>解析字符串=>container容器=>connector连接=>浏览器

3、服务器状态查看

403根据提示操作

第一步:注释掉访问ip限制

vim context.xml

最好把中间两行注释掉

第二步:创建用户和密码开启访问权限

修改完成之后重启服务就可以正常访问服务器状态

服务器状态面板可以看到服务器一些相关信息,还能控制服务器的启动和关闭

4、虚拟机Host查看

第一步:根据提示修改host-manager目录下的context.xml

和服务器状态一样都是注释掉访问限制

第二步:根据页面提示和 Server Status一样修改对应的tomcat-users.xml

根据提示添加用户和角色就行

5、Nginx前端反向代理

实际业务环境中,用户是直接通过域名访问。基于协议一般是http、https等。默认tomcat运行在8080端口。一般会通过前端服务器反向代理到后端tomcat的方式,来实现用户可以直接通过域名访问到tomcat的webapps

动静分离:动态页面的请求交由后端处理(tomcat+java),静态资源直接返回

502就是后端服务器出问题了 tomcat或者php

解决方案:

当nginx和tomcat网站根目录一致的情况,注意nginx是否有权限读到tomcat网站目录的权限。—般性解决方案网站目录文件夹,赋予一个公共用户www

cd /usr/ local/tomca

chown -R www : www webapps

nginx反向代理用户看到的service都是nginx

6、Nginx负载均衡

随着业务的发展,单实例服务已经不能够满足业务使用需要

pv页面访问数量

qps 每秒查询次数 并发量

DAU每日活跃用户数

单实例无法满足,扩容为多实例

常见的业务运行方式

单实例单应用一个tomcat—一个webapps

单实例多应用一个tomcat多个webapps host

多实例单应用多个tomcat同一个webapps

多实例实现方式:

①多台服务器一个运行一个实例(性能好)

②单台服务器运行多个实例(监听不同的端口,性价比高)伪集群

多实例多应用

server04 nginx负载均衡

server01 tomcat1

server03 tomcat2

实施步骤:

①复制虚拟机,多实例

两台tomcat里项目里的内容要一致

在server03上配置和servero1—样的实现

1、建立项目文件夹目录,绑定host主机域名

2、nginx做反向代理

②配置nginx负载均衡

server04配置负载均衡vim nginx.conf 只用安装nginx就行,其他两台web服务器是安装tomcat的

不用安装 nginx

upstream tomcat {server 192.168.17.102:8080;server 192.168.17.101:8080;}server {listen 80;server_name tomcat.devops.com;location / {#分发到两台serverproxy_pass http://tomcat;proxy_set_header Host    $host;proxy_set_header X-Real-IP $remote_addr;}
}

转发也是80nginx端口httpd,查看状态

访问域名查看负载均衡轮询效果,可以把其中一个项目文件内容修改一下

把nginx关闭,然后配置文件里面的80端口无法转发到8080.

动态和静态资源都实现负载均衡

哪个域名绑定在哪台服务器上就走哪个集群,如果条件允许静态资源负载均衡也需要重新配置一台服务器

四、项目部署

1、项目介绍

ZrLog是使用Java开发的博客/CMS程序,具有简约,易用,组件化,内存占用低等特点。自带Markdown编辑器,让更多的精力放在写作上。

https://github.com/94fzb/zrlog

2、项目部署

建立项目目录,上传项目文件ROOT.war包

绑定域名在/usr/local/tomcat/conf目录下的server.xml文件中

绑定域名之后可以prefix="blog.access_log" suffix=".txt" 开启配置日志路径

解析域名千万注意必须解析单例服务器,因为负载均衡服务器是找不到项目位置的(只是做请求的分发)

单例服务器就是web服务器

3、上传数据库单点负载均衡

403就是没有权限的意思

chown -R www:www webapps/ 授予文件权限

查看web服务器的访问日志可以测试负载均衡是否成功

cat /usr / local/nginx / logs/access . log

Tomcat的部署与使用相关推荐

  1. 在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)

    在tomcat下部署两个或多个项目时 web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下: <!-- 应用路径 ...

  2. 在Tomcat中部署Java Web应用程序几种方式

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录.  一.静态部署       静态部署指的是我们在服务器启动之 ...

  3. eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法

    eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法 参考文章: (1)eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法 (2) ...

  4. Intellij IDEA 创建Web项目并在Tomcat中部署运行

    一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applicati ...

  5. 如何在tomcat前部署一个nginx

    在tomcat应用已经发布后,如何在tomcat前部署一个nginx,可以正常访问jsp,静态资源(html,css,js) 这里tomcat的端口号是8888 1 upstream morris { ...

  6. IDEA9+Tomcat热部署配置二法

    IDEA9+Tomcat热部署配置 idea9的web开发配置方式与之前的版本发生了大的变化,idea其实也可以像MyEclipse一样自动热部署,不过配置稍微麻烦了一些. 环境: Idea9.03 ...

  7. 在tomcat中部署web项目

    在tomcat中部署web项目 一.静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问.以下3中方式都可以部署:? 1.将PetWeb目录拷 ...

  8. 在tomcat上部署项目,实现类似添加这样的功能之后,tomcat要运行很久,解决办法

    今天在做软件测试作业的时候遇到了这样一个问题 在tomcat上部署项目,实现类似添加这样的功能之后,一大串子代码不停的在滑动,要运行很久,才会结束,之后上网上查询资料,试着将项目删除重新导入之后,就恢 ...

  9. PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)

    在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tom ...

  10. 在Tomcat中部署seam工程

    在Tomcat中部署seam工程 众所周知,Tomcat.Resin是servlet的容器,反应迅速,启动时间快,配置简单(Resin反应应该更迅速一些),但如果用到EJB工程的的话,它们就不能胜任了 ...

最新文章

  1. 如何将SQL Server表驻留内存和检测
  2. Python学习笔记:常用内建模块5
  3. NHibernate入门hello world
  4. 电热耦合_教育部关于发布电热原子吸收光谱分析方法通则等30个教育行业标准的通知...
  5. Android TextView 属性设置
  6. hexo的yelee主题更换类别以及tags的字体颜色
  7. 用Python执行js文件代码并获取返回结果
  8. 熵权法 —— python
  9. vlan和静态路由配置实验
  10. C语言 判断质数很简单
  11. win7局域网共享教程
  12. 估值择时对ETF基金定投的影响
  13. 知识产权-软考知识点-3
  14. 1.6 建立Servers服务(2020-12-6)
  15. 南宁二中三中高考2021成绩查询,2021广西重点高中名单及排名
  16. 计算机c盘变大,如何解决Win10 C盘空间越来越大的问题?
  17. 国外类似VC的emule下载网站网址大全
  18. STM32单片机控制A1333角度传感器磁编码器
  19. pci总线定时协议_PCI协议
  20. android 项目大全,总有你所需的

热门文章

  1. 计算机组成原理x移,计算机组成原理移位运算
  2. IMU预积分及残差雅克比计算
  3. java如何避免恶意连续点击_一行代码实现防止按钮重复点击
  4. 十四条关于移动端产品设计的原则
  5. 知识库问答系统(KBQA)初探
  6. 苹果x与苹果xs的区别_苹果x突然黑屏但没有关机
  7. 大智慧L2数据接口怎样进行二次开发?
  8. 开源的电子书阅读器项目
  9. Linux 和uboot下dd命令读写sd,mmc,mm读写内存命令
  10. P6Spy配置信息说明