• Tomcat安装部署及构建虚拟主机


    目录

    一、了解Tomcat

    1、Tomcat简介

    2、Nginx到Tomcat的数据流向

    3、Tomcat处理请求过程

    4、Tomcat的核心组件

    二、Tomcat部署步骤

    1、下载并安装JDK

    (1)关闭防火墙,将安装Tomcat所需软件包传到/opt目录下

     (2)安装JDK

     (3)设置JDK环境变量

     小知识

    2、安装启动Tomcat

    (1)安装Tomcat

     (2)启动Tomcat

     (3)验证结果

     3、优化tomcat启动速度

    4、tomcat主要目录说明

    三、配置虚拟主机

    1、基于域名

    (1)创建test1和test2项目目录和文件

     (2)修改Tomcat主配置文件server.xml

      (3)浏览器访问验证

    四、Tomcat优化

    (1)常用的connector优化

    常用的参数设置示例 

    总结


    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

    一、了解Tomcat

    1、Tomcat简介

    1. 免费的、开源的代码的Web应用服务器
    2. Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
    3. 由Apache、Sun和一些公司及个人共同开发而成
    4. 深受Java爱好者的喜爱,并得到部分软件开发商的认可
    5. 是目前比较流行的Web应用服务器


    2、Nginx到Tomcat的数据流向

    用户请求(访问80端口)到达nginx

    nginx发送请求发送给tomcat——>

    tomcat有一个端口在监听8080端口)

    从8080端口进入流量的会被在此端口的线程监听到

    给与我们的web容器进行处理(有index.html页面显示出来  从8080端口来时会有交互界面,会读取到index.jsp这种java代码)

    但是java代码无法直接使用——>

    需要利用到jsp容器

    将index.jsp中的java的servlet代码进行翻译

    servlet容器处理 通过catalina程序/脚本来处理从JSP容器这过来的servlet代码

    并不是直接对接mysql数据库

    而是直接对接用户的请求例如app中的某个功能模块

    比方说看个人信息  servlet容器与app接是api进行对接(具体的URL)

    数据流向最终会通过用户请求内容  去mysql数据库寻找相应的内容

    最后返回给用户
     

    3、Tomcat处理请求过程

    【外部容器】

    1.  用户通过80端口访问nginx,nginx通过8080端口反向代理连接到Coyote(前端页面)里面包含了HTTP/1.1(协议及版本号)      注:Connector为java连接器
    2. Coyote接收数据后会立刻转发给Container中的Engine,Engine是Container模块中的一个引擎。

    【内部容器】

    1. Engine接收到数据后会寻找目标站点的路径,已就是到达host。
    2. host会把文件交给相应context处理(一个context代表一个Web应用)context会处理index.jsp页面先通过web容器转化成index.jsp代码。在通过jsp容器转换成servlet代码
    3. 将servlet代码交给servlet处理 (wrapper封装器,每一个wrapper封装着一个servlet)
    4. servlet编译servlet代码,处理完成后交给context
    5. context在交给相应的host主机
    6. host在交给engine
    7. engine返回给connector下的coyote
    8. coyote通过8080端口返回给用户

    4、Tomcat的核心组件


    Tomcat的核心组件主要六个,分别是:

        Server(服务器):Server的主要任务就是提供一个接口让客户端能够访问到这个Service集合,同时维护它所包含的所有的Service的生命周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service。(一个Server元素中可以有一个或多个Service元素)

    Service(服务):Service的作用是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务。(一个Service可以包含多个Connector,但是只能包含一个Engine);  

    Connector(连接器):Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine;

    Engine(引擎):Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端(Engine组件在Service组件中有且只有一个;defaultHost属性必须与Engine中的一个Host组件的name属性值匹配);

    Host(虚拟机):Host虚拟主机的作用是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用(Host是Engine的子容器,Engine组件中可以内嵌1个或多个Host组件,每个Host组件代表Engine中的一个虚拟主机;Host组件至少有一个,且其中一个的name必须与Engine组件的defaultHost属性相匹配);

    Context(应用上下文):Context代表在特定虚拟主机上运行的一个Web应用(一个host 下可以配置多个Context ,每个Context 都有其独立的 classPath。相互隔离,以免造成ClassPath 冲突Context是Host的子容器,每个Host中可以定义任意多的Context元素);

    二、Tomcat部署步骤

    1、下载并安装JDK

    在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

    (1)关闭防火墙,将安装Tomcat所需软件包传到/opt目录下

     (2)安装JDK

     (3)设置JDK环境变量

    1. cd /opt
    2. rpm -qpl jdk-8u201-linux-x64.rpm
    3. rpm -ivh jdk-8u201-linux-x64.rpm
    4. java -version

     小知识

    1. CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
    2. dt.jar:是关于运行环境的类库,主要是可视化的 swing 的包。
    3. tools.jar:主要是一些jdk工具的类库,包括javac、java、javap(jdk自带的一个反编译工具)、javadoc等。
    4. JDK :java development kit (java开发工具)
    5. JRE :java runtime environment (java运行时环境)
    6. JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
    1. 首先使用文本工具编写java源代码,比如 Hello.java ;
    2. 在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
    3. 编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “Hello World”。
    4. vim Hello.java
    5. #类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
    6. 一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
    7. public class Hello {
    8. public static void main(String[] args){
    9. System.out.println("Hello world!");
    10. }
    11. }
    12. javac Hello.java
    13. java Hello

    2、安装启动Tomcat

    (1)安装Tomcat

    1. cd /opt
    2. tar zxvf apache-tomcat-9.0.16.tar.gz
    3. mv apache-tomcat-9.0.16 /usr/local/tomcat

     (2)启动Tomcat

    后台启动

    1. /usr/local/tomcat/bin/startup.sh
    2. /usr/local/tomcat/bin/catalina.sh start

     前台启动

    /usr/local/tomcat/bin/catalina.sh run	

     (3)验证结果

    浏览器访问Tomcat的默认主页 http://192.168.88.120:8080

     3、优化tomcat启动速度

    1. 第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
    2. vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
    3. --117行--修改
    4. securerandom.source=file:/dev/urandom

     

    4、tomcat主要目录说明


    (1)bin:存放启动和关闭Tomcat的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh三个文件

    (2)conf:存放Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。

    1.  server.xml: Tomcat的主配置文件,包含Service,Connector,Engine,Realm,Valve,Hosts主组件的相关配置信息;
    2.  context.xml:所有host的默认配置信息;
    3.  tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息,Tomcat自带的manager默认情况下会用到此文件,在Tomcat中添加/删除用户,为用户指|定角色等将通过编辑此文件实现;
    4.  web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的web应用程序提供包括MIME映射等默认配置信息;

    (3)lib:存放Tomcat运行需要的库文件的jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的jar 包
    (4)logs:存放 Tomcat 执行时的日志
    (5)temp:存放 Tomcat 运行时产生的文件
    (6)webapps:存放 Tomcat 默认的 Web 应用部署目录
    (7)work:Tomcat工作日录,存放jsp编译后产生的class文件,一般清除Tomcat缓存的时候会使用到
    (8)src:存放Tomcat 的源代码
    (9)doc:存放Tomcat文档

    三、配置虚拟主机


    1、基于域名


    很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。列如现在新增两个域名www.kgc.com和www.benet.com,希望通过这两个域名访问到不同的项目内容。

    (1)创建test1和test2项目目录和文件

    1. mkdir /usr/local/tomcat/webapps/test1
    2. mkdir /usr/local/tomcat/webapps/test2
    3. echo "this is test1 page\!"> /usr/local/tomcat/webapps/test1/index.jsp
    4. echo "this is test2 page\!"> /usr/local/tomcat/webapps/test2/index.jsp

     (2)修改Tomcat主配置文件server.xml

    vim /usr/local/tomcat/conf/server.xml

    1. 164行下面加入
    2. "www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="fal se" xmlNamespaceAware="false">
    3. "/usr/local/tomcat/webapps/test1" path="" reloadable="true"/>
    4. "www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="fal se" xmlNamespaceAware="false">
    5. "/usr/local/tomcat/webapps/test2" path="" reloadable="true"/>

    重启tomcat服务

    1. /usr/local/tomcat/bin/shutdown.sh
    2. /usr/local/tomcat/bin/startup.sh

      (3)浏览器访问验证

     echo "192.168.88.120 www.test1.com www.test2.com" >> /etc/hosts

    访问:http://www.test1.com:8080/ 

     访问:http://www.test2.com:8080/

     

    四、Tomcat优化

    (1)常用的connector优化

    1. redirectPort:定义端口
    2. maxThreads: 客户请求最大线程数
    3. minSpareThreads Tomcat:初始化时创建的 socket 线程数
    4. maxSpareThreads Tomcat:最大备用线程数,连接器的最大空闲 socket 线程数
    5. URIEncoding :指定Tomcat容器的URL
    6. connectionTimeout:网络连接超时
    7. enableLookups:若设为true, 则支持域名解析,可把ip地址解析为主机名false关闭就是关闭域名解析
    8. disableUploadTimeout:上传时是否使用超时机制。应设置为ture
    9. connectionUploadTimeout:上传超时时间
    10. acceptCount:指定当所有可能使用的处理请求的线程数都被使用时,可传入 连接请求的最大队列长度,超过这个数的请求将不予处理。默认为100个。
    11. minProcessors:服务器启动时创建的最少线程数
    12. maxProcessors:最大可以创建的线程数
    13. acceprCount=1000:线程池中的线程都被占用,允许放到队列中的请求数(排队的人数)
    14. acceptCount:指定当所有可以使用的外理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不
    15. 予处理,默认为 100 个。 I
    16. compression:是否对响应的数据进行GZIP压缩,off;表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3左右,节省带宽。
    17. compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大干这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。
    18. compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。
    19. noCompressionUserAgents="gozilla,traviata":对于以下的浏览器,不启用压缩

    常用的参数设置示例 

    1. 以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector与AJP Connector的参数属性值,可以参考官方文档的详细说明进行学习。
    2. vim/usr/local/tomcat/conf/server.xml
    3. ......
    4. "8080"protocol="HTTP/11.1'
    5. connectionTimeout="20000"
    6. redirectPort="8443"
    7. --71行--插入
    8. minSpareThreads="50"
    9. enableLookups="false"
    10. disableUploadTimeout="true"
    11. acceptCount="300"
    12. maxThreads="500"
    13. processorCache="500"
    14. URIEncoding-UTF-8"
    15. compression="on"
    16. compressionMinSize="2048"
    17. compressableMimeType="text/html,text/xmltext/javascripttext/csstext/plainimage/gif,image /jpg,image/png"/>

    总结

    1. 本文描述了tomcat简介
    2. Nginx到Tomcat的数据流向
    3. Tomcat服务器请求过程
    4. Tomcat的六大组件
    5. Tomcat的部署以及Tomcat中配置虚拟主机的实验过程
  • 相关阅读:
    QFusion数据库管理平台-存储管理
    微信小程序购物/超市/餐饮/酒店商城开发搭建过程和需求
    系统间远程调用方式的演变
    高并发应用实践——限流手段
    Django与Ajax
    六、03【Java 多线程】之Java线程
    DBConvert Studio All Editions 3.0.6 Crack
    js中的设计模式之代理模式
    Visual Studio运行Python程序(超级详细)
    k8s——Pod进阶(资源限制和探针)
  • 原文地址:https://blog.csdn.net/qq_44239779/article/details/126717536