tomcat之简介与安装

tomcat简介与安装步骤...

tomcat简介

java与jdk

c/c++程序针对特定的硬件平台编译为cpu直接运行的二进制;而java程序面向的是jvm,由中间层jvm代为翻译为特定硬件平台的集群语言,通过中间层实现了write once, run anywhere

c/c++类的语言,需要自己针对不同硬件平台做对应修改,而java不需要,方便各平台之间的移植,适合大型程序,牺牲了一定效率,但减少了针对不同硬件平台的开发工作;

1、java程序执行过程

  1. java程序被java编译器javac编译为java字节码:.class文件;
  2. 字节码文件,再由java虚拟机jvm翻译为二进制的机器语言;
.java源码-》(经由javac编译)-》.class字节码文件-》(经由jvm执行)-》特定cpu能执行的二进制机器语言;

2、jvm、jre、jdk

  • jvm是java虚拟机,负责将java字节码翻译成对应硬件平台的语言;
  • jre,jvm+运行时依赖的库
  • jdk,jvm+运行时依赖的库+开发调试工具
  • jave se:java标准版,包含jdk
  • jave ee:java企业版,java标准版基础上+企业应用用到的类库;

jsp与servlet

  • applet:
    • 早期,java实现web,是由客户端将程序下载到本机执行,1,不安全;
    • 2,客户端需要java环境
  • servlet
    • 改进,servlet将应用程序放在服务端,客户端向服务端发请求,由服务端执行后返回结果,servlet的类库可以解析处理http协议
    • 1,servlet方式:java应用代码和html代码组合在一起,组织方式较差
    • 2,需要开发懂java和html
  • jsp
    • 再改进,jsp是继承了servlet类库的类库,但能够使得html和java代码结合较好
    • 1,java代码嵌入到html代码,组合为.jsp文件,
    • 2,通过jasper组件,再翻译为servlet代码执行
    • 3,jsp本质还是servlet
  • java程序进程
    • 一个java程序进程需要一个jvm进程;java程序进程自己是线程的
    • tomcat,利用servlet可以处理动态和静态请求,但为了效率,一般将静态请求前置到前端的静态web服务:httpd和nginx等

web服务器与应用程序服务器

  • web服务器:一般指处理http协议,提供静态请求的服务;如httpd,nginx
  • 应用程序服务器:一般指接收前面web转发来的动态请求,处理后交由web服务器,和静态内容一起封装后,返回给客户端;如tomcat、jboss、weblogic,php的有php-fpm等

tomcat体系结构

**tomcat组成:**jdk加上jsp和servlet类库实现的java ee;主要用于web应用开发;

  • server:tomcat实例,定义服务监听端口
    • service1,封装conector和container,
      • connector1:连接器,接收客户端请求,转给container处理,并返回container处理后数据给客户端,【请求与响应的中转站,唯一出入口】
      • connector2...
      • container:【上级容器范围内唯一】包含4个子容器,用于分析、处理请求、构建响应给connector进而转给客户端
        • engine:【唯一】定义servlet引擎,
          • host:定义虚拟主机,类比nginx虚拟主机;
            • context:定义webapp,一个context就是一个webapp,类比nginx的location,【如nginx有2个location分别为wordpress和discuz,分别配置后端tomcat的2个webapp为wordpress和discuz,】
              • wrapper:【唯一】最底层的容器,负责管理一个servlet
    • service2
    • service3
    • ...

结构图如下:

img

<server> # 一个tomcat实例,就是一个server
	<service> # 一个server内部,可以有多个service
		<connector />
		<connector />
		... # 一个service内可以有多个connector

		<engine> # 一个service内有唯一的engine
			<host> # 一个engine内可有多个host---虚拟主机
				<context> # 一个host可以有多个context
					wrapper # 一个context唯一的一个wrapper
				</context>
				
				<context>
				</contex>
				
			</host>
			
			<host>
			</host>
		</engine>
	</service>
	
	<service>
		...
	</service>
	
	<service>
		...
	</service>
</server>

tomcat安装

安装jdk

jdk安装方法

jdk有2大版本,开源的openjdk,以及oracle公司的oraclejdk;

  • 利用yum源,安装yum源中的openjdk
  • 下载oracle官方的oraclejdk,直接用其rpm包安装;

tomcat自身是java程序,需要jdk环境支撑运行;即tomcat依赖jdk环境;

安装版本选择

  • openjdk
    • yum直接安装
    • 官方rpm包安装
  • oracle jdk
    • 官方rpm包安装

实验采用,oraclejdk 8,tomcat 8.5

1,下载oracle官方的rpm包,直接安装即可

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[root@host2 src]# yum localinstall -y jdk-8u261-linux-x64.rpm 

2,安装后目录

默认安装目录为/usr/java,通过2个软连接,可以方便实现版本的切换;版本为jdk8的第261次更新;

[root@host2 src]# cd /usr/java/
[root@host2 java]# ll
total 0
lrwxrwxrwx 1 root root  16 Sep  2 14:40 default -> /usr/java/latest
drwxr-xr-x 9 root root 286 Sep  2 14:40 jdk1.8.0_261-amd64
lrwxrwxrwx 1 root root  28 Sep  2 14:40 latest -> /usr/java/jdk1.8.0_261-amd64

[root@host2 default]# ll
total 25648
drwxr-xr-x 2 root root     4096 Sep  2 14:40 bin
-rw-r--r-- 1 root root     3244 Jun 18 14:55 COPYRIGHT
drwxr-xr-x 3 root root      132 Sep  2 14:40 include
-rw-r--r-- 1 root root  5219010 Jun 18 12:03 javafx-src.zip
-rw-r--r-- 1 root root      195 Jun 18 14:55 jmc.txt
drwxr-xr-x 6 root root      198 Sep  2 14:40 jre
drwxr-xr-x 4 root root       31 Sep  2 14:40 legal
drwxr-xr-x 4 root root      223 Sep  2 14:40 lib
-rw-r--r-- 1 root root       44 Jun 18 14:55 LICENSE
drwxr-xr-x 4 root root       47 Sep  2 14:40 man
-rw-r--r-- 1 root root      159 Jun 18 14:55 README.html
-rw-r--r-- 1 root root      424 Jun 18 14:55 release
-rw-r--r-- 1 root root 21005583 Jun 18 14:55 src.zip
-rw-r--r-- 1 root root      190 Jun 18 12:03 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root      190 Jun 18 14:55 THIRDPARTYLICENSEREADME.txt


# 查看版本信息;
[root@host2 java]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

3,配置java_home等环境变量

# 安装后即可以找到java命令的原因,安装过程中自动做了软链接到默认PATH路径下
[root@host2 default]# which java
/usr/bin/java
[root@host2 default]# ll /usr/bin/java
java            javadoc         javah           javapackager    javaws
javac           javafxpackager  javap           java-rmi.cgi    
[root@host2 default]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep  2 14:40 /usr/bin/java -> /etc/alternatives/java
[root@host2 default]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 37 Sep  2 14:40 /etc/alternatives/java -> /usr/java/jdk1.8.0_261-amd64/bin/java

# 配置变量
[root@host2 default]# cat /etc/profile.d/java.sh 
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin/:$PATH

[root@host2 default]# source /etc/profile.d/java.sh 
[root@host2 default]# which java
/usr/java/latest/bin/java

安装tomcat

1,下载官网8.5版本的最新二进制版本,在安装jdk后,解压,做软链接

[root@host2 src]# tar -xf apache-tomcat-8.5.57.tar.gz -C /usr/local/
[root@host2 src]# ll /usr/local/
total 0
drwxr-xr-x  9 root root 220 Sep  2 14:56 apache-tomcat-8.5.57
drwxr-xr-x. 2 root root   6 Apr 11  2018 bin
drwxr-xr-x. 2 root root   6 Apr 11  2018 etc
drwxr-xr-x. 2 root root   6 Apr 11  2018 games
drwxr-xr-x. 2 root root   6 Apr 11  2018 include
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root   6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root   6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root  49 Aug  8 11:58 share
drwxr-xr-x. 2 root root  72 Sep  2 14:39 src
[root@host2 src]# ln -sv /usr/local/apache-tomcat-8.5.57/ /usr/local/tomcat
‘/usr/local/tomcat’ -> ‘/usr/local/apache-tomcat-8.5.57/’

2,程序目录

[root@host2 src]# ll /usr/local/tomcat/
total 124
drwxr-x--- 2 root root  4096 Sep  2 14:56 bin # 启停脚本,有linux平台的.sh脚本,也又windows平台的.bat脚本
-rw-r----- 1 root root 19318 Jul  1 05:53 BUILDING.txt
drwx------ 2 root root   238 Jul  1 05:53 conf
-rw-r----- 1 root root  5408 Jul  1 05:53 CONTRIBUTING.md
drwxr-x--- 2 root root  4096 Sep  2 14:56 lib
-rw-r----- 1 root root 57011 Jul  1 05:53 LICENSE
drwxr-x--- 2 root root     6 Jul  1 05:49 logs # 日志目录
-rw-r----- 1 root root  1726 Jul  1 05:53 NOTICE
-rw-r----- 1 root root  3255 Jul  1 05:53 README.md
-rw-r----- 1 root root  7136 Jul  1 05:53 RELEASE-NOTES
-rw-r----- 1 root root 16262 Jul  1 05:53 RUNNING.txt
drwxr-x--- 2 root root    30 Sep  2 14:56 temp # 临时目录
drwxr-x--- 7 root root    81 Jul  1 05:50 webapps # 放web程序的根目录
drwxr-x--- 2 root root     6 Jul  1 05:49 work # 存放编译后的class文件的目录

3,启停脚本

bin下的catalina.sh可以管理tomcat的启停

[root@host2 bin]# ./catalina.sh -h
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
...

[root@host2 bin]# ./catalina.sh start
# 监听在8080端口

4,conf配置文件

[root@host2 tomcat]# ll conf/
total 224
drwxr-x--- 3 root root     23 Sep  2 15:04 Catalina
-rw------- 1 root root  13446 Jul  1 05:53 catalina.policy
-rw------- 1 root root   7661 Jul  1 05:53 catalina.properties
-rw------- 1 root root   1338 Jul  1 05:53 context.xml
-rw------- 1 root root   1149 Jul  1 05:53 jaspic-providers.xml
-rw------- 1 root root   2313 Jul  1 05:53 jaspic-providers.xsd
-rw------- 1 root root   3916 Jul  1 05:53 logging.properties
-rw------- 1 root root   7588 Jul  1 05:53 server.xml
# 主配置文件
-rw------- 1 root root   2164 Jul  1 05:53 tomcat-users.xml
# 监控界面用户登陆认证配置
-rw------- 1 root root   2558 Jul  1 05:53 tomcat-users.xsd
-rw------- 1 root root 171879 Jul  1 05:53 web.xml
# webapp提供默认属性配置文件,启动tomcat时,会先找对应webapp目录下的/WEB-INF/web.xml文件加载属性信息,找不到的话,会利用该文件做默认配置,

# web.xml文件定义了默认页面
[root@host2 tomcat]# grep -C 1 index conf/web.xml 
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

5,设置环境变量

1
2
3
4
5
[root@host2 tomcat]# cat /etc/profile.d/tomcat.sh 
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH

[root@host2 tomcat]# source /etc/profile.d/tomcat.sh 

6,检查版本信息

[root@host2 tomcat]# version.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
Server version: Apache Tomcat/8.5.57
Server built:   Jun 30 2020 21:49:10 UTC
Server number:  8.5.57.0
OS Name:        Linux
OS Version:     3.10.0-862.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_261-b12
JVM Vendor:     Oracle Corporation

7,启动测试

[root@host2 tomcat]# catalina.sh start
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.

# 默认监听8080端口
# 以及8005,管理端口;
[root@host2 tomcat]# curl -I http://localhost:8080
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 02 Sep 2020 07:23:06 GMT
updatedupdated2020-10-192020-10-19
加载评论