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 / {
    #分发到两台server
    proxy_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值