Tomcat原理与搭建案例

Tomcat是什么:

是由Apache开发的一个Servlet容器,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器

与Apache的比较:

  • Apache侧重于HTTPServer ,Tomcat侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效,支持JSP,但对静态网页不太理想
  • Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行

Tomcat内部工作原理

tomcat整体架构:

Server :控制Tomcat的启动和关闭,故整个 Tomcat 的生命周期由 Server 控制

Engine:负责处理所有请求。处理后,将结果返回给service,而connector是作为service与engine的作为中间交流者;

一个engine下可以配置一个默认主机,每个虚拟主机都有一个域名。

当engine获得一个请求时,它把该请求匹配到虚拟主机host上,然后把请求交给该主机来处理。

当 Engine有一个默认主机,当请求无法匹配到任何一个虚拟主机时,将交给默认host来处理

将 Tomcat 中 Connector、Container 作为一个整体比作一对情侣的话

Connector 主要负责对外交流,可以比作为 Boy,

Container 主要处理 Connector 接受的请求,主要是处理内部事务,可以比作为 Girl

Host:代表一个虚拟主机,每个虚拟主机和某个网络域名(Domain Name)相匹配。 每个虚拟主机下都可以部署一个或多个web应用,每个web应用对应于一个context,有一个context path。 当Host获得一个请求时,将把该请求匹配到某个Context上

Wrapper: 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器

搭建Tomcat案例

案例步骤:

  • 安装jdk,部署java环境;

[root@www ~]# ls
apache-tomcat-9.0.10.tar.gz  jdk-8u171-linux-x64.tar.gz
[root@www~]# rpm -qa |grep java
[root@www ~]# tar zxvf jdk-8u171-linux-x64.tar.gz
[root@www ~]# mv jdk1.8.0_171/ /usr/local/java
[root@www ~]# ls /usr/local/java
[root@www ~]# cat <<END >>/etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:/usr/local/java/bin
END
[root@www~]# source  /etc/profile
[root@www ~]# java -version

  • 安装tomact软件程序

[root@www ~]# tar zxvf apache-tomcat-9.0.10.tar.gz
[root@www ~]# mv apache-tomcat-9.0.10 /usr/local/tomcat
[root@www ~]# ls /usr/local/tomcat
[root@www ~]# /usr/local/tomcat/bin/startup.sh                   ##启动apache-tomcat
[root@www ~]# netstat -utpln |grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      14758/java

  • 客户端访问测试初始页面

安装mariadb数据库,提供数据库服务
[root@www ~]# yum -y install mariadb-server mysql
[root@www ~]# systemctl start mariadb
[root@www ~]# systemctl enable mariadb
[root@www ~]# mysqladmin -uroot password 123123
[root@www ~]# mysql -uroot -p123123
MariaDB [(none)]> show databases;
MariaDB [(none)]> exit

创建项目中的数据库或者导入数据库文件,并且进行授权
[root@www ~]# ls
igcrms_xn.sql
[root@www ~]# mysql -uroot -p123123<igcrms_xn.sql
MariaDB [(none)]> show databases;
MariaDB [(none)]> use igcrms_xn
Database changed
MariaDB [igcrms_xn]> show tables;
MariaDB [igcrms_xn]> grant all on igcrms_xn.* to 'linuxfan'@'192.168.100.101' identified by '123123';
MariaDB [igcrms_xn]> flush privileges;
MariaDB [(none)]> exit

项目上线
[root@www ~]# unzip -oq XNMS.war -d ./linuxfan
[root@www ~]# ls linuxfan/
[root@www ~]# cp -rf ./linuxfan/ /usr/local/tomcat/webapps/
[root@www ~]# ls /usr/local/tomcat/webapps/linuxfan/
[root@www ~]# vi /usr/local/tomcat/webapps/linuxfan/WEB-INF/classes/jdbc.properties
      6 url=jdbc:mysql://192.168.100.101:3306/igcrms_xn?useUnicode=true&characterEncoding=utf-8&amp;        allowMultiQueries=true
      7 username=linuxfan
      8 password=123123
:wq

配置Tomcat得manager管理界面;

  • [root@www ~]# vi /usr/local/tomcat/conf/tomcat-users.xml

         44 <role rolename="manager-gui"/>

         45 <user username="tomcat" password="tomcat" roles="manager-gui"/>

    [root@www ~]# vi /usr/local/tomcat/webapps/manager/META-INF/context.xml

         20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />

    [root@www ~]# /usr/local/tomcat/bin/shutdown.sh

    [root@www ~]# /usr/local/tomcat/bin/startup.sh

客户端访问测试:

  •  

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

[root@www ~]# mkdir  -p /web/webapp/

[root@www ~]# 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>

:wq

[root@www ~]# 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选项为关闭

[root@www ~]# /usr/local/tomcat/bin/shutdown.sh

[root@www ~]# /usr/local/tomcat/bin/startup.sh

客户端访问测试

 

推荐介绍Tomcat的优质博客:https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/yaya_12345678/article/details/88779349