Tomcat的安装部署

一、前言

今天讲解有关tomcat的安装部署。

专注于为中小企业提供网站设计制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业玉州免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

1.Apache和Nginx的区别

Apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。
nginx轻量级,抗并发,处理静态文件好
Apache超稳定,对PHP支持比较简单,nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx抗并发,后端apache集群,配合起来会更好。

2.Apache和Nginx的特点

Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。但是其配置相对复杂,自身不支持动态页面。

Nginx,轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。其特点是占有内存少,并发能力强,易于开发,部署方便。Nginx 支持多语言通用服务器。但是,Nginx 只适合静态和反向代理。其优点在于支持:负载均衡、反向代理、处理静态文件。Nginx 处理静态请求的速度高于Apache(3倍以上)。

二、Tomcat概念

1.Tomcat 简介

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

Tomcat优点

1、兼有可扩du展性和安全性。假如单位时间内访问请求zhi数急剧增加,可以用相对较低的费dao用增加前端的能力。

2、比较容易扩展。由于是通过在这台功能强大的服务器上运行的单个servlet容器,实际上也就不需要考虑session状态在分布式环境下的维护这类复杂的问题。

3、台后端服务器在外界不可以访问,网上的黑客只能访问前端的web服务器,不能直接访问后端的应用服务器,这就提高了安全性。但这并不意味着黑客们不能通过网络浏览器进行其它形式的攻击。

2.Tomcat优势

对于学习了或者正在学习Java的朋友对Tomcat应该是比较熟悉的了。

最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

其优点在于它是一个动态解析容器,处理动态请求,是编译JSP/Servlet的容器,其缺点也十分明显,只能做Java服务器,并且在并发量上有限制。

至于更加深层的原因,需要有一定的架构思想才能深入理解和总结归纳Apache、Nginx和Tomcat的区别于联系。本文核心是针对初学者而言,主要讲解Tomcat的部署操作流程,因此,更深的原因在这里就不再赘述了,但是我们一定要知道“无论什么,存在的就是合理的,而我们所要做的便是透过现象看本质!”

三、Tomcat的核心组件

Tomcat 是 Apache 下的一个子项目,它具备 Web 服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范   的 Java 代码 Servlet,同时将执行的结果以 HTML 代码的形式写回客户端。

Tomcat的三大核心组件:Web容器、Servlet容器以及JSP容器

  1. Web容器:完成Web服务器的功能;
  2. Servlet容器:名字为catalina,用于处理Servlet代码;
  3. JSP容器:用于将JSP动态网页翻译成Servlet代码。

四、Tomcat处理请求过程

1) 请求被发送到本机端口 8080,被在那里侦听的 Coyote HTTP/11.1 Connector(连接器) 获得。

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

3)  Engine 获得请求 localhost/yy/index.JSP,匹配它所拥有的所有虚拟主机 Host;

Engine 匹配到名为 localhost 的 Host。即使匹配不到也把请求交给该 Host 处理, 因为该 Host 被定义为该 Engine 的默认主机。

4)    localhost Host 获得请求/yy/index.JSP,匹配它所拥有的所有 Context;

Host 匹配到路径为/yy 的 Context。如果匹配不到,就把该请求交给路径名为“”的 Context 去处理。

5)     path=”/yy”的 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。

或许看了上面的过程,感觉实在是过于复杂,下面给出具体的流程图,大家可以根据流程图进行逻辑上的理解:

Tomcat的安装部署

connector连接器和container容器

Connector 用于接收请求并将请求封装成Request 和Response 来具体处理,(最底层是使用Socket 来进行连接的)其中 Request 和Response 是按照HTTP 协议来封装的,所以Connector 同时实现了TCP/IP 协议和HTTP 协议, Request 和Response 封装完后交给Container 进行处理,Container 即Servlet 的容器, Container 处理完之后返回给Connector,最后Connector 使用Socket 将处理结果返回给客户端,这样整个请求就处理完了,具体请求过程如上图所示。

而Container 则是Tomcat 中容器的接口,通常使用的Servlet 就封装在其子接口Wrapper 中。(Container 一共有4 个子接口Engine 、Host 、Context 、Wrapper 和一个默认实现类ContainerBase,每个子接口都是一个容器,这4 个子容器都有一个对应的StandardXXX 实现类,并且这些实现类都继承ContainerBase 类。另外Container 还继承Lifecycle 接口,而且ContainerBase 间接继承LifecycleBase,所以Engine 、Host 、Context 、Wrapper 4 个子容器都符合前面讲过的Tomcat生命周期管理模式。)

五、Tomcat部署操作流程

所需环境:

  • 系统版本:Centos7
  • Tomcat版本:9.0.8
  • jdk版本:1.8.0_201
  • 服务器ip地址:192.168.68.145

部署具体步骤:

1.首先需要以下两个包

[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm

软件包链接:https://pan.baidu.com/s/1q9igHqlkIVJtqRS8zbuibQ
提取码:xzaj

2.安装jdk

[root@localhost tomcat]# rpm -ivh jdk-8u201-linux-x64.rpm 
警告:jdk-8u201-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[root@localhost tomcat]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release

bin/:命令文件存放目录

jre/:jvm的虚拟机存放位置

lib/:函数库目录

src.zip/:源码压缩包目录

3.设置环境变量(系统环境变量/etc/profile)

3.1查看当前路径,查看jdk原版本
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64
[root@localhost jdk1.8.0_201-amd64]# java -version            #简化版jdk原本就集成在Centos7中
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@localhost jdk1.8.0_201-amd64]# 
3.2设置环境变量
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile         
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile 
[root@localhost jdk1.8.0_201-amd64]# tail -3 /etc/profile     #添加的内容

export JAVA_NAME=/usr/java/jdk1.8.0_201-amd64         #工作路径
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar   #类文件的位置
export PATH=$JAVA_NAME/bin:$PATH                      #命令文件
[root@localhost jdk1.8.0_201-amd64]# java      #证明source成功
java            javafxpackager  javapackager    javaws.itweb
javac           javah           java-rmi.cgi    
javadoc         javap           javaws          
[root@localhost jdk1.8.0_201-amd64]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

[root@localhost jdk1.8.0_201-amd64]# 

4.安装Tomcat

[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost tomcat]# tar zxf apache-tomcat-9.0.16.tar.gz -C /opt
[root@localhost tomcat]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16  rh
[root@localhost opt]# mv apache-tomcat-9.0.16/ tomcat
[root@localhost opt]# ls
rh  tomcat
[root@localhost opt]# cd tomcat/
[root@localhost tomcat]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp

其中 webapps是站点,

5.优化启动关闭脚本,开启关闭操作

[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar                 makebase.sh
catalina.bat                  setclasspath.bat
catalina.sh                   setclasspath.sh
catalina-tasks.xml            shutdown.bat
ciphers.bat                   shutdown.sh
ciphers.sh                    startup.bat
commons-daemon.jar            startup.sh
commons-daemon-native.tar.gz  tomcat-juli.jar
configtest.bat                tomcat-native.tar.gz
configtest.sh                 tool-wrapper.bat
daemon.sh                     tool-wrapper.sh
digest.bat                    version.bat
digest.sh                     version.sh
makebase.bat
[root@localhost bin]# ln -s /opt/tomcat/bin/startup.sh /usr/bin
[root@localhost bin]# ln -s /opt/tomcat/bin/shutdown.sh /usr/bin[root@localhost bin]# systemctl stop firewalld.service 
[root@localhost bin]# setenforce 0
[root@localhost bin]# startup.sh  #开启服务
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -antp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      47064/java
[root@localhost bin]# shutdown.sh 
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# netstat -antp | grep 8080
tcp6       0      0 ::1:39678               ::1:8080                TIME_WAIT   -                   

6.测试验证

当我们开启Tomcat服务的时候,可以在浏览器中使用“IP地址:8080”进行访问,如下图所示

Tomcat的安装部署


本文题目:Tomcat的安装部署
网站链接:http://myzitong.com/article/iigigo.html