Tomcat应用部署

一、初识Tomcat;

1、概述:

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。

2、Apache与Tomcat的比较

相同点:
1.两者都是Apache组织开发的
2.两者都有HTTP服务的功能
3.两者都是开源的
不同点:
1.Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等),而Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器.
2.Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat。
3.Apache侧重于HTTPServer ,Tomcat侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效,支持JSP,但对静态网页不太理想;
4.Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
中间件: JSP网页的解释器
Httpd: 能够解析html的页面,也就是所谓的静态页面
Tomcat: 既能解析html的页面,解析静态页面的能力远远不如httpd,又能解析jsp页面(为主)
Tomcat同类产品:
1.Resin 服务器 2.Jetty 服务器 3.JBoss服务器
4.WebSphere 服务器 5.WebLogic 服务器

二、Tomcat与jdk的关系;

1、 图解

在这里插入图片描述

2、解析

JDK是开发人员开发使用,JRE是用来运行java程序,就是java程序的运行环境,jvm是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行;
JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。jdk是java语言编写的,用来给java程序调用的,jvm因为与平台进行交互,是用c/c++和汇编语言编写的;
jdk是java运行和编译的,tomcat是web项目的运行容器,java没有jdk没办法编译运行,java运行必须依赖jdk的环境,所以安装tomcat前必须要安装jdk环境;
注解:

  1. Java SE(Java Platform,Standard Edition):Java SE 是做电脑上运行的软件;
  2. Java EE(Java Platform,Enterprise Edition):Java EE 是用来做网站的(我们常见的JSP技术);
  3. Java ME(Java Platform,Micro Edition):Java ME 是做手机软件的;

3、Tomcat和JDK版本对应图

在这里插入图片描述

三、Tomcat内部工作原理;

在这里插入图片描述

1、组件关联

1、Tomcat 的心脏是两个组件:Connector 和 Container,Connector 组件是可以被替换,这样显得更加灵活,一个 Container 可以选择对应多个 Connector。多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了。所以整个 Tomcat 的生命周期由 Server 控制。
2、我们将 Tomcat 中 Connector、Container 作为一个整体比作一对情侣的话,Connector 主要负责对外交流,可以比作为 Boy,Container 主要处理 Connector 接受的请求,主要是处理内部事务,可以比作为 Girl。那么这个 Service 就是连接这对男女的结婚证了。是Service 将它们连接在一起,共同组成一个家庭。当然要组成一个家庭还要很多其它的元素说白了,Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务,一个 Service 可以设置多个 Connector,但是只能有一个 Container 容器。

2、Container组件详解

在这里插入图片描述
Engine: 负责处理所有请求,处理后,将结果返回给service,而connector是作为service与engine的中间媒介出现的。 作为交流者;一个engine下可以配置一个默认主机,每个虚拟主机都有一个域名。当engine获得一个请求时,它把该请求匹配到虚拟主机host上,然后把请求交给该主机来处理。 Engine有一个默认主机,当请求无法匹配到任何一个虚拟主机时,将交给默认host来处理。Engine以线程的方式启动Host。
Host: 代表一个虚拟主机,每个虚拟主机和某个网络域名(Domain Name)相匹配。 每个虚拟主机下都可以部署一个或多个web应用,每个web应用对应于一个context,有一个context path。 当Host获得一个请求时,将把该请求匹配到某个Context上;
Wrapper: 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了;

四、Tomcat配置文件详解;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
tomcat中支持两种协议的连接器:HTTP/1.1与AJP/1.3
HTTP/1.1协议负责建立HTTP连接,web应用通过浏览器访问tomcat服务器用的就是这个连接器,默认监听的是8080端口;
AJP/1.3协议负责和其他HTTP服务器建立连接,监听的是8009端口,比如tomcat和apache或者iis集成时需要用到这个连接器。

五、案例:搭建Tomcat案例;

(1)实验环境

系统ip地址主机名Tomcat版本JDK版本
CentOS7.4192.168.100.107-10apache-tomcat-8.5.16.tar.gzjdk-8u91-linux-x64.tar.gz

(2)实验目的

让客户端访问到Tomcat

(3)详细步骤

安装jdk,部署java环境;

[root@7-10 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@7-10 ~]# rpm -qa | grep java 
[root@7-10 ~]#  tar xf jdk-8u91-linux-x64.tar.gz 
[root@7-10 ~]# mv jdk1.8.0_91/ /usr/local/java
[root@7-10 ~]# ls /usr/local/java/
bin             jre          release
COPYRIGHT       lib          src.zip
db              LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
[root@7-10 ~]# cat <<a>> /etc/profile
> export PATH=$PATH:/usr/local/java/bin:/usr/local/java
> a
[root@7-10 ~]# source /etc/profile
[root@7-10 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java
[root@7-10 ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

安装tomact软件程序;

[root@7-10 ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@7-10 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@7-10 ~]# ls /usr/local/tomcat/
bin   lib      logs    RELEASE-NOTES  temp     work
conf  LICENSE  NOTICE  RUNNING.txt    webapps
[root@7-10 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@7-10 ~]# netstat -anpt | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      1694/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1694/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      1694/java

客户端访问测试初始页面;
在这里插入图片描述
安装mariadb数据库,提供数据库服务;

[root@7-10 ~]# yum -y install mariadb-server mysql
[root@7-10 ~]# systemctl start  mariadb
[root@7-10 ~]# mysqladmin -uroot password 123123
[root@7-10 ~]# mysql -uroot -p123123
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> exit

配置Tomcat的manager管理界面;

[root@7-10 ~]# vi /usr/local/tomcat/conf/tomcat-users.xml			#添加管理页面的用户认证,帐户名为tomcat,密码为tomcat;
     44 <role rolename="manager-gui"/>
     45 <user username="tomcat" password="tomcat" roles="manager-gui"/>
      46 </tomcat-users> 
[root@7-10 ~]# vi /usr/local/tomcat/webapps/manager/META-INF/context.xml		##默认tomcat的管理页面只能通过tomcat服务器上的浏览器才可以访问,设置其可以在其他主机访问;
     20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
[root@7-10 ~]# /usr/local/tomcat/bin/shutdown.sh  #重启Tomcat
[root@7-10 ~]# /usr/local/tomcat/bin/startup.sh

在这里插入图片描述
在这里插入图片描述
项目二:超市订单管理系统,手动上线,创建项目中的数据库或者导入数据库文件,并且进行授权;

[root@7-10 ~]# ls smbms_db.sql 
smbms_db.sql
[root@7-10 ~]# mysql -uroot -p123123<smbms_db.sql
[root@7-10 ~]# mysql -uroot -p123123
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| igcrms_xn          |
| smbms              |
| performance_schema |
| test               |
+--------------------+

MariaDB [(none)]> grant all on smbms.* to 'linuxfan'@'192.168.100.10'  identified by "123123";
Query OK, 0 rows affected (0.00 sec)
##为项目中所指定的数据库进行授权

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> use smbms;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_smbms |
+-----------------+
| smbms_address   |
| smbms_bill      |
| smbms_provider  |
| smbms_role      |
| smbms_user      |
+-----------------+
5 rows in set (0.00 sec)

mysql> select * from smbms_user;			##查看项目中的管理员账户
...
|  1 | admin     | ?????    | 1234567      |      1 |
...
mysql> exit

超市订单管理系统项目上线;

[root@7-10 ~]# rm -rf /usr/local/tomcat/webapps/*			##注意上传项目时的路径;
[root@7-10 ~]# ls /usr/local/tomcat/webapps/
[root@7-10 ~]# ls /usr/local/tomcat/webapps/
WebRoot
[root@7-10 ~]# vi /usr/local/tomcat/webapps/WebRoot/WEB-INF/classes/database.properties
driver=com.mysql.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
url=jdbc:mysql://192.168.100.10:3306/smbms?useUnicode=true&characterEncoding=utf-8
user=linuxfan
password=123123

客户端访问测试项目二;
登录后如若访问不了,可以尝试重启tomcat;

http://192.168.100.10:8080/WebRoot/
在这里插入图片描述
在这里插入图片描述

自定义jsp页面,并测试访问;

[root@7-10 ~]# mkdir  -p /web/webapp/
[root@7-10 ~]# vi /web/webapp/index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
     <title>JSP TEST PAGE1 </title>
  </head>
  <body>
     <% out.println("Welcome to test site;http://www.linuxfan.cn");%>
  </body>
</html>
[root@7-10 ~]# vi  /usr/local/tomcat/conf/server.xml
    148       <Host name="www.linuxfan.cn"  appBase="webapps"
    149             unpackWARs="true" autoDeploy="true">
    150         <Context docBase="/web/webapp" path="" reloadable="false"></Context>

unpackWARs="true" #设置自动识别war包
autoDeploy="true" ##开启自动部署
Context docBase="/web/webapp" ##设置项目存放位置
path="" ## tomcat把web应用程序映射为root URI路径reloadable="true" ## tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到代码中有class文件被更新的,服务器会自动重新加载Web应用,但是开启会加重服务器负荷,建议设置为false选项为关闭,有可能会出现内存溢出,tomcat服务不正常等异常,建议还是false掉,更新完代码脚本重启tomcat才是王道。

[root@7-10 ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@7-10 ~]# /usr/local/tomcat/bin/startup.sh 

客户端访问测试:
http://www.linuxfan.cn:8080
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值