tomcat web应用服务器
tomcat简介:(1)Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,由java语言进行开发,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache服务器的扩
·
tomcat简介:
(1)Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,由java语言进行开发,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP
程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache
服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache
服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
(2)tomcat是java 2 ee不完整的实现
tomcat与apache之间的关联。
(1)apache为html提供页面服务,而tomcat实际上运行jsp页面和servlet,
(2)Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器
tomcat的核心组件。
catalina:servlet container
coyote:http connection
jasper:jsp enginee
tomcat instance: 运行中的tomcat进程(java进程)
server: 即一个tomcat实列;
service: 用于将connector关联至engine组件,一个service只能包含一个engine组件
engine: tomcat的核心组件,用于运行jsp或servlet代码;
connector: 接受并解析用户请求,将请求映射为engine中运行的代码;之后,将运行结果构建成响应报文
http,ajp
host: 类似httpd中的虚拟主机。
context: 类似于httpd中的alias;
注意:每个组件都是由"类"来实现,有些组件的实现还不止一种。
顶级类组件:server
服务类组件:service
容器类组件:即可以部署webapp的组件,enginee,host,context
连接器组件:connector
被嵌套类组件:value,logger,realm
tomcat的运行模式
standalone:通过内置的web server (http connector)来接受客户端的请求;
proxy:由专门的web server服务客户端的httpd请求;
in-process:部署于同一主机;
network:部署于不同主机。
部署tomcat,官方站点:http://tomcat.apache.org
两种部署方式:
第一种:我们可以去官方下载tomcat的二次源码包,不用进行编译直接使用。
第二种:就是我们使用yum安装。
部署演示:根据第一种方案;
部署前提:安装jdk,因为我们的web程序在java虚拟机(JDK)上运行,而jdk上运行的是java类代码,所以中间需要一些代码转换,
[root@localhost yum.repos.d]# yum install java -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
a | 4.0 kB 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6 will be installed
--> Processing Dependency: jpackage-utils >= 1.7.3 for package: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> Processing Dependency: sinjdoc for package: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> Running transaction check
---> Package jpackage-utils.noarch 0:1.7.5-3.16.el6 will be installed
---> Package sinjdoc.x86_64 0:0.5-9.1.el6 will be installed
--> Processing Dependency: java_cup >= 0.10 for package: sinjdoc-0.5-9.1.el6.x86_64
--> Running transaction check
---> Package java_cup.x86_64 1:0.10k-5.el6 will be installed
--> Finished Dependency Resolution
[root@localhost yum.repos.d]# java -version 检查java的目前版本。
java version "1.5.0"
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-23)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR
[root@localhost ~]# yum list all | grep jdk 检查相关jdk相关版本号
copy-jdk-configs.noarch 3.3-9.el6 base
java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el6_8 base
java-1.6.0-openjdk-demo.x86_64 1:1.6.0.41-1.13.13.1.el6_8 base
java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el6_8 base
java-1.6.0-openjdk-javadoc.x86_64 1:1.6.0.41-1.13.13.1.el6_8 base
java-1.6.0-openjdk-src.x86_64 1:1.6.0.41-1.13.13.1.el6_8 base
java-1.7.0-openjdk.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-demo.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-javadoc.noarch 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-src.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.8.0-openjdk.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-debug.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-demo-debug.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-devel-debug.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-headless-debug.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-javadoc-debug.noarch 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-src.x86_64 1:1.8.0.252.b09-2.el6_10 updates
java-1.8.0-openjdk-src-debug.x86_64 1:1.8.0.252.b09-2.el6_10 updates
ldapjdk.x86_64 4.18-8.el6 base
ldapjdk-javadoc.x86_64 4.18-8.el6 base
[root@localhost ~]# yum install java-1.8.0-openjdk.x86_64 安装最新版jdk
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.252.b09-2.el6_10 will be installed
--> Processing Dependency: java-1.8.0-openjdk-headless = 1:1.8.0.252.b09-2.el6_10 for package: 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el6_10.x86_64
--> Processing Dependency: xorg-x11-fonts-Type1 for package: 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el6_10.x86_64
--> Processing Dependency: libjvm.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el6_10.x86_64
--> Processing Dependency: libjli.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el6_10.x86_64
--> Processing Dependency: libjava.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el6_10.x86_64
(2)下载tomcat的二元分布,
apache-tomcat-9.0.36.tar.gz
[root@localhost ~]# tar -xf apache-tomcat-9.0.36.tar.gz -C /usr/local 解压tomcat到指定目录下。
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.36 bin etc games include lib lib64 libexec mysql mysql-5.5.62 sbin share src
[root@localhost local]# ln -sv apache-tomcat-9.0.36/ tomcat
`tomcat' -> `apache-tomcat-9.0.36/'
[root@localhost local]# ls
apache-tomcat-9.0.36 bin etc games include lib lib64 libexec mysql mysql-5.5.62 sbin share src tomcat
[root@localhost local]# cd tomcat/
[root@localhost tomcat]# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp web
bin:脚本及启动时用到的类
lib:类库
conf:配置文件
logs:日志文件
webapps:应用程序默认部署目录
work:工作目录
temp:临时文件目录
[root@localhost tomcat]# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@localhost tomcat]# cd conf/
[root@localhost conf]# ls
Catalina catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd
server.xml:主配置文件
context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序目录下的web-inf目录中,用于定义会话管理器
,jdbc等;
conf/context.xml是为各webapp提供默认配置。
web.xml:每个webapp部署之后才能被访问,此文件则用于为所有的webapp提供默认部署相关的配置;
tomcat-user.xml:用户认证的账号和密码配置文件。
catalina.policy:当使用-security选项启动tomcat实列时会读取此配置文件来实现其安全运行策略;
catalina.properties:java属性的定义文件,用于设定类加载器路径等,以及一些jvm性能相关的调优参数;
logging.properties:日志相关的配置信息;
[root@localhost tomcat]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat 导入tomcat目录,将相关路径加入到PATH中。
export PATH=$CATALINA_HOME/bin:$PATH
(3)运行catalina.sh脚本即可运行tomcat
[root@localhost tomcat]# bin/catalina.sh --help 查看运行相关帮助。
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
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
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina, waiting up to 5 seconds for the process to end
stop n Stop Catalina, waiting up to n seconds for the process to end
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?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
[root@localhost tomcat]# bin/catalina.sh 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
注意:一般我们都是用普通用户运行tomcat,除非是1023端口之前必须要有root权限执行,所以tomcat运行端口为8080
[root@localhost conf]# ss -tnl | grep 8080
LISTEN 0 100 :::8080 :::*
[root@localhost conf]#
对tomcat进行访问,只是个tomcat中的应用程序。
tomcat启动成功后,我们手动来添加一个测试的应用程序。
webapps:这是应用程序的默认部署目录;
我们先来了解一下java webapp的组织架构;
有特定的组织形式,层次型的目录结构,主要包含了servlet代码文件,jsp页面文件,类文件,部署描述符文件等;
/usr/local/tomcat/webapps/app1
/:webapp的根目录;
web-INF/:当前webapp的私有资源目录,通常存放在当前webapp自用的web.xml
META-INF/:当前webapp的私有资源目录,通常存放在当前webapp自用的context.html;
classes/:此webapp的私有类;
lib/:此webapp的私有类,被打包为jar格式类;
index.jsp:webapp的主页
webapp归档格式:
- war:webapp;
. jar:EJB的类
.rar:资源适配器;
.ear:企业及应用程序
添加一个测试的应用程序;
[root@localhost webapps]# pwd
/usr/local/tomcat/webapps
[root@localhost webapps]# mkdir myapp/{lib,classes,WEB-INF,META-INF} -pv
mkdir: created directory `myapp'
mkdir: created directory `myapp/lib'
mkdir: created directory `myapp/classes'
mkdir: created directory `myapp/WEB-INF' 在这两个文件中我们没有创建context.xml和web.xml文件,因为我们可以不创建到时候直接去默认/usr/local/apache-tomcat-9.0.36/conf目录下帮我们拉去那两个文件。
mkdir: created directory `myapp/META-INF'
[root@localhost webapps]# tree myapp/
myapp/
├── classes
├── lib
├── META-INF
└── WEB-INF
[root@localhost tomcat]# tree work/
work/
└── Catalina 这表示引擎,包装容器。
└── localhost 本地主机
├── docs
├── examples
├── host-manager
├── manager
├── myapp 这表示程序的主目录
│ └── org
│ └── apache 这三项表示将域名进行倒写
│ └── jsp
│ ├── index_jsp.class servlet代码编译成能在jdk虚拟机上运行类文件。
│ └── index_jsp.java 将jsp格式的文件转换成纯java格式代码(servlet代码)
└── ROOT
└── org
└── apache
└── jsp
├── index_jsp.class
└── index_jsp.java
[root@localhost webapps]# vim myapp/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP Test Page</title> 通过我们编写的jsp文件可知,html代码中嵌套jsp代码。
</head>
<body>
<% out.println("hello,word."); %>
</body>
</html>
添加成功后,我们可以验证,发现回应速度很快。
注意:我们访问的10.5.100.119:8080给我们呈现的主页面默认映射的为/usr/local/tomcat/webapps/ROOT目录下文件。
tomcat基本部署已经完成;
基本总结一下:
tomcat是一个应用程序服务器,开发人员使用java代码开发出应用程序。
当客户端进行访问应用程序时;经历几个步骤;我们tomcat有两种运行方式,一种是客户端直接与tomcat服务器交互,另一种通过web服务器进行代理。
第一种方式:web代理(nginx)
客户端发起请求----->web代理服务器---->connector连接器接受用户请求---->通过service关联至engine-----jspare将jsp类代码转换成Java类代码-----经过编译成为class类代码----->运行到tomcat里面。
更多推荐
已为社区贡献1条内容
所有评论(0)