4.1 tomcat基础

Java基础概念


  • Java与JDK

Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。

    Java分为三个体系:

JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

    JDK(Java Development Kit)

JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。

JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

    Java Runtime Environment(JRE)

是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。

与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

    JVM(java virtual machine)

就是我们常说的Java虚拟机,它是整个java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

  • jsp和servlet

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。

    普通的 HTML 通信流程

    因为 JSP 包含了 java 程序代码段,因此 JSP 在 web server 里面就要有个更多的处理步骤

web服务器习惯处理静态页面,所以需要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet的本质是一个帮助程序。

tomcat基础概念


Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

  • tomcat结构

由于 tomcat 是由 Java 语言编写,所以它高度模块化,通过各个组件实现各种功能。

其中, Tomcat主要组件有:服务器 Server,服务 Service,连接器 Connector、容器 Container。连接器 Connector 和容器 Container 是 Tomcat 的核心。

一个 Container 和一个或多个 Connector 组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是 Server,Server 组件为 Service 服务的正常使用提供了生存环境, Server 组件可以同时管理一个或多个 Service 服务。

    server是顶级类,一个server算是一个tomcat实例,在此层次中可定义tomcat服务的监听端口。

    service是server下的子组件,用于封装绑定connector和containor,并为它们提供一个名称属性。有了service就可以提供相关的服务,如监听TCP连接请求、处理http请求。注意server是管理整个tomcat实例的层次,它和提供服务没有关系。

    connector是连接器,定义http协议(默认)以及该协议的监听端口。连接器用于接收客户端请求并将containor处理的数据返回给客户端

    containor称为容器,它和connector进行绑定。该容器内有4个子容器,包括:engine容器、host容器、context容器、Wrapper容器。容器用于分析、处理请求,并构建响应给connector以发送给客户端

    engine容器定义servlet引擎,用于定义引擎的名称、默认的虚拟主机。引擎用于分析http请求并将请求转发给对应的虚拟主机。

    host容器用于定义虚拟主机。

    context容器用于定义webapp,一个context定义一个webapp。它是真正管理servlet容器的层次。

    wrapper容器对应的是真正的servlet容器,一个wrapper代表一个servlet,它负责管理一个Servlet,包括的Servlet的装载、初始化、执行以及资源回收。Wrapper是最底层的容器,一个context只能包含一个wrapper。在配置文件中,无法配置该容器的属性。

  • tomcat环境搭建与安装

安装JDK

    1、在 oracle 官网中下载需要的 JDK 安装包 JDL下载地址

[root@CentOS74 ~]# ll jdk-10.0.2_linux-x64_bin.rpm 
-rw-r--r-- 1 root root 320862420 Jul 18 10:52 jdk-10.0.2_linux-x64_bin.rpm

    2、使用 rpm 命令安装 JDK

[root@CentOS74 ~]# rpm -ivh jdk-10.0.2_linux-x64_bin.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk-10.0.2-2000:10.0.2-ga        ################################# [100%]
Unpacking JAR files...
	plugin.jar...
	javaws.jar...
        ...
        ...

查看  /usr/java/ 目录

[root@CentOS74 ~]# ll /usr/java/
total 0
lrwxrwxrwx 1 root root  16 Jul 18 10:57 default -> /usr/java/latest     #默认链接至最新版本
drwxr-xr-x 9 root root 128 Jul 18 10:57 jdk-10.0.2                      #JDK程序所在目录
lrwxrwxrwx 1 root root  20 Jul 18 10:57 latest -> /usr/java/jdk-10.0.2  #最新版本链接至JDK目录

    3、修改 PATH 变量,添加 JAVA_HOME 变量

export JAVA_HOME=/usr/java/latest/
export PATH=$JAVA_HOME/bin:$PATH

安装tomcat

    1、在 apache 官网下载需要的 tomcat 程序 tomcat 官方站点

[root@CentOS74 ~]# ll -h apache-tomcat-8.0.53.tar.gz 
-rw-r--r-- 1 root root 9.1M Jul 18 10:57 apache-tomcat-8.0.53.tar.gz

    2、解压至任意目录下,为了方便管理,我解压在了 /usr/local/ 目录下,并创建软连接 tomcat 至程序目录

[root@CentOS74 ~]# tar xf apache-tomcat-8.0.53.tar.gz -C /usr/local/
[root@CentOS74 ~]# ln -s /usr/local/apache-tomcat-8.0.53/ /usr/local/tomcat

    3、创建系统用户 tomcat,并修改特定文件的权限

[root@CentOS74 ~]# cd /usr/local/tomcat/   #进入tomcat软件所在的目录中
[root@CentOS74 tomcat]# useradd -r tomcat  #创建一个系统用户tomcat
[root@CentOS74 tomcat]# chown -R tomcat logs/ temp/ work/  #将特定目录及其中的文件的所有者改为tomcat
[root@CentOS74 tomcat]# chgrp -R tomcat *  #将软件所有文件的所属组改为tomcat
[root@CentOS74 tomcat]# ll
total 92
drwxr-xr-x 2 root   tomcat  4096 Jul 18 11:07 bin
drwxr-xr-x 2 root   tomcat   182 Jun 29 22:44 conf
drwxr-xr-x 2 root   tomcat  4096 Jul 18 11:07 lib
-rw-r--r-- 1 root   tomcat 57011 Jun 29 22:44 LICENSE
drwxr-xr-x 2 tomcat tomcat     6 Jun 29 22:42 logs
-rw-r--r-- 1 root   tomcat  1446 Jun 29 22:44 NOTICE
-rw-r--r-- 1 root   tomcat  6794 Jun 29 22:44 RELEASE-NOTES
-rw-r--r-- 1 root   tomcat 16258 Jun 29 22:44 RUNNING.txt
drwxr-xr-x 2 tomcat tomcat    30 Jul 18 11:07 temp
drwxr-xr-x 7 root   tomcat    81 Jun 29 22:44 webapps
drwxr-xr-x 2 tomcat tomcat     6 Jun 29 22:42 work
[root@CentOS74 tomcat]# cd conf/
[root@CentOS74 conf]# chmod 640 *   #赋予tomcat组对conf目录的执行权限及目录中配置文件的读权限
[root@CentOS74 conf]# ll
total 216
-rw-r----- 1 root tomcat  13852 Jun 29 22:44 catalina.policy
-rw-r----- 1 root tomcat   7499 Jun 29 22:44 catalina.properties
-rw-r----- 1 root tomcat   1577 Jun 29 22:44 context.xml
-rw-r----- 1 root tomcat   3387 Jun 29 22:44 logging.properties
-rw-r----- 1 root tomcat   6458 Jun 29 22:44 server.xml
-rw-r----- 1 root tomcat   2164 Jun 29 22:44 tomcat-users.xml
-rw-r----- 1 root tomcat   2634 Jun 29 22:44 tomcat-users.xsd
-rw-r----- 1 root tomcat 169566 Jun 29 22:44 web.xml

    4、修改 PATH 变量,添加 CATALINA_BASE 变量

export CATALINA_BASE=/usr/local/tomcat/
export PATH=$CATALINA_BASE/bin:$PATH

执行 tomcat 软件中 bin/ 下的 catalina.sh 脚本启动 tomcat 服务

[root@CentOS74 bin]# catalina.sh --help  #查看catalina.sh的执行选项和帮助
Using CATALINA_BASE:   /usr/local/tomcat/
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat//temp
Using JRE_HOME:        /usr/java/latest/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat//bin/tomcat-juli.jar
Usage: catalina.sh ( commands ... )
commands:
  debug             Start Catalina in a debugger  #调试模式启动
  debug -security   Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run               Start Catalina in the current window   #运行tomcat
  run -security     Start in the current window with security manager  #-security使用/usr/local/tomcat/conf/catalina.policy中定义的安全策略
  start             Start Catalina in a separate window   #启动tomcat
  start -security   Start in a separate window with security manager
  stop              Stop Catalina, waiting up to 5 seconds for the process to end  #5秒以后关闭tomcat
  stop n            Stop Catalina, waiting up to n seconds for the process to end  #指定秒数以后关闭tomcat
  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running   #强制关闭
  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running
  configtest        Run a basic syntax check on server.xml - check exit code for result   #配置文件愈发检查
  version           What version of tomcat are you running?   #当前tomcat运行环境及其版本
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
[root@CentOS74 bin]# catalina.sh start   #使用start参数,启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat/
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat//temp
Using JRE_HOME:        /usr/java/latest/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat//bin/tomcat-juli.jar
Tomcat started.
[root@CentOS74 bin]# ss -ntl
State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
LISTEN      0      128                                                                *:22                                                                             *:*                  
LISTEN      0      100                                                        127.0.0.1:25                                                                             *:*                  
LISTEN      0      100                                                               :::8080                                                                          :::*                  
LISTEN      0      128                                                               :::22                                                                            :::*                  
LISTEN      0      100                                                              ::1:25                                                                            :::*                  
LISTEN      0      1                                                   ::ffff:127.0.0.1:8005                                                                          :::*                  
LISTEN      0      100                                                               :::8009                                                                          :::*                  

尝试访问 tomcat 服务器

通过yum仓库安装JDK与tomcat

通过查看 apache 官网了解 tomcat 软件版本与 JDK 版本之间的关系,并结合将要在服务器上运行的 jsp 来确定安装的版本。

[root@CentOS174 ~]# yum install java-1.8.0-openjdk.x86_64  #安装指定版本的OpenJDK
[root@CentOS174 ~]# yum install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp  #安装tomcat及其相关工具包
  • tomcat软件内容

以由 apache 官方网站下载并展开的 tomcat 软件为例(通过 yum 仓库安装的 tomcat 同样有相同的内容,可以使用 rpm -ql tomcat 查看)

[root@CentOS74 tomcat]# ll
total 92   
drwxr-xr-x 2 root   tomcat  4096 Jul 18 11:07 bin      #主程序目录
drwxr-xr-x 3 root   tomcat   198 Jul 18 12:12 conf     #配置文件目录
drwxr-xr-x 2 root   tomcat  4096 Jul 18 11:07 lib      #tomcat类库
-rw-r--r-- 1 root   tomcat 57011 Jun 29 22:44 LICENSE
drwxr-xr-x 2 tomcat tomcat   197 Jul 18 12:12 logs     #日志文件目录
-rw-r--r-- 1 root   tomcat  1446 Jun 29 22:44 NOTICE
-rw-r--r-- 1 root   tomcat  6794 Jun 29 22:44 RELEASE-NOTES
-rw-r--r-- 1 root   tomcat 16258 Jun 29 22:44 RUNNING.txt
drwxr-xr-x 2 tomcat tomcat    30 Jul 18 11:07 temp     #临时文件目录
drwxr-xr-x 7 root   tomcat    81 Jun 29 22:44 webapps  #web应用程序根目录
drwxr-xr-x 3 tomcat tomcat    22 Jul 18 12:12 work     #jsp编译后文件存放目录

查看 webapps 目录

[root@CentOS74 tomcat]#⮀⮀ll webapps/
total 4
drwxr-xr-x 14 root tomcat 4096 Jul 18 11:07 docs
drwxr-xr-x  6 root tomcat   83 Jul 18 11:07 examples
drwxr-xr-x  5 root tomcat   87 Jul 18 11:07 host-manager
drwxr-xr-x  5 root tomcat  103 Jul 18 11:07 manager
drwxr-xr-x  3 root tomcat  306 Jul 18 11:07 ROOT   #主站点存放目录

猜你喜欢

转载自blog.csdn.net/M30_Miriam/article/details/81087429