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& 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