Tomcat的部署与使用
一、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的部署与使用相关推荐
- 在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)
在tomcat下部署两个或多个项目时 web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下: <!-- 应用路径 ...
- 在Tomcat中部署Java Web应用程序几种方式
在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服务器启动之 ...
- eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法
eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法 参考文章: (1)eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法 (2) ...
- Intellij IDEA 创建Web项目并在Tomcat中部署运行
一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applicati ...
- 如何在tomcat前部署一个nginx
在tomcat应用已经发布后,如何在tomcat前部署一个nginx,可以正常访问jsp,静态资源(html,css,js) 这里tomcat的端口号是8888 1 upstream morris { ...
- IDEA9+Tomcat热部署配置二法
IDEA9+Tomcat热部署配置 idea9的web开发配置方式与之前的版本发生了大的变化,idea其实也可以像MyEclipse一样自动热部署,不过配置稍微麻烦了一些. 环境: Idea9.03 ...
- 在tomcat中部署web项目
在tomcat中部署web项目 一.静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问.以下3中方式都可以部署:? 1.将PetWeb目录拷 ...
- 在tomcat上部署项目,实现类似添加这样的功能之后,tomcat要运行很久,解决办法
今天在做软件测试作业的时候遇到了这样一个问题 在tomcat上部署项目,实现类似添加这样的功能之后,一大串子代码不停的在滑动,要运行很久,才会结束,之后上网上查询资料,试着将项目删除重新导入之后,就恢 ...
- PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)
在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tom ...
- 在Tomcat中部署seam工程
在Tomcat中部署seam工程 众所周知,Tomcat.Resin是servlet的容器,反应迅速,启动时间快,配置简单(Resin反应应该更迅速一些),但如果用到EJB工程的的话,它们就不能胜任了 ...
最新文章
- 如何将SQL Server表驻留内存和检测
- Python学习笔记:常用内建模块5
- NHibernate入门hello world
- 电热耦合_教育部关于发布电热原子吸收光谱分析方法通则等30个教育行业标准的通知...
- Android TextView 属性设置
- hexo的yelee主题更换类别以及tags的字体颜色
- 用Python执行js文件代码并获取返回结果
- 熵权法 —— python
- vlan和静态路由配置实验
- C语言 判断质数很简单
- win7局域网共享教程
- 估值择时对ETF基金定投的影响
- 知识产权-软考知识点-3
- 1.6 建立Servers服务(2020-12-6)
- 南宁二中三中高考2021成绩查询,2021广西重点高中名单及排名
- 计算机c盘变大,如何解决Win10 C盘空间越来越大的问题?
- 国外类似VC的emule下载网站网址大全
- STM32单片机控制A1333角度传感器磁编码器
- pci总线定时协议_PCI协议
- android 项目大全,总有你所需的