• tomcat使用详解


    tomcat简介
     
    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
    Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,
    Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
    目前Tomcat最新版本为9.0。Java容器还有resin、weblogic等。
     
    tomcat安装
     
    系统环境:Centos7
    第一步:下载tomcat安装包
    tomcat官网:https://tomcat.apache.org/
     
    第二步:安装包上传至linux中
     
    第三步:下载java环境
    选择yum安装tomcat需要的jdk,就不用再手动配置环境变量
    [root@ken3 ~]# yum install java -y
     
    第四步:解压tomcat安装包
    [root@ken3 ~]# unzip apache-tomcat-9.0.14.zip
     
    第五步:移动并改名
    [root@ken3 ~]# mv apache-tomcat-9.0.14 /usr/local/tomcat
     
    第六步:授予执行权限
    [root@ken3 local]# chmod -R a+x  tomcat/
     
    第七步:启动tomcat
    [root@ken3 bin]# bash 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
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    [root@ken3 bin]# ss -tnl
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port             
    LISTEN      0      128                              *:111                                          *:*                 
    LISTEN      0      128                              *:22                                           *:*                 
    LISTEN      0      100                      127.0.0.1:25                                           *:*                 
    LISTEN      0      100                             :::8009                                        :::*                 
    LISTEN      0      128                             :::111                                         :::*                 
    LISTEN      0      100                             :::8080                                        :::*                 
    LISTEN      0      128                             :::80                                          :::*                 
    LISTEN      0      128                             :::22                                          :::*                 
    LISTEN      0      100                            ::1:25                                          :::*    
     
    第八步:浏览器访问
    看到如下的界面即为成功
     
     关闭tomcat
    [root@ken3 bin]# bash shutdown.sh
    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
    [root@ken3 bin]# ss -tnl
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port             
    LISTEN      0      128                              *:111                                          *:*                 
    LISTEN      0      128                              *:22                                           *:*                 
    LISTEN      0      100                      127.0.0.1:25                                           *:*                 
    LISTEN      0      128                             :::111                                         :::*                 
    LISTEN      0      128                             :::80                                          :::*                 
    LISTEN      0      128                             :::22                                          :::*                 
    LISTEN      0      100                            ::1:25                                          :::*        
    tomcat目录介绍
     
    [root@ken ~]# cd /usr/local/tomcat/
    [root@ken tomcat]# tree -L 1
    .
    ├── bin         #用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件)
    ├── conf        #用以配置Tomcat的XML及DTD文件
    ├── lib         #存放web应用能访问的JAR包
    ├── LICENSE
    ├── logs        #Catalina和其它Web应用程序的日志文件
    ├── NOTICE
    ├── RELEASE-NOTES
    ├── RUNNING.txt
    ├── temp        #临时文件
    ├── webapps     #Web应用程序根目录
    └── work        #用以产生有JSP编译出的Servlet的.java和.class文件
    7 directories, 4 files

    [root@ken tomcat]# cd webapps/
    [root@ken webapps]# ll
    total 20
    drwxr-xr-x 14 root root 4096 Oct  5 12:09 docs          #tomcat帮助文档
    drwxr-xr-x  6 root root 4096 Oct  5 12:09 examples      #web应用实例
    drwxr-xr-x  5 root root 4096 Oct  5 12:09 host-manager  #管理
    drwxr-xr-x  5 root root 4096 Oct  5 12:09 manager       #管理
    drwxr-xr-x  3 root root 4096 Oct  5 12:09 ROOT          #默认网站根目录
     
    tomcat日志
     
    [root@ken3 logs]# cd /usr/local/tomcat/logs/
    [root@ken3 logs]# ls
    catalina.2019-01-25.log  host-manager.2019-01-25.log  localhost_access_log.2019-01-25.txt
    catalina.out             localhost.2019-01-25.log     manager.2019-01-25.log
     
    #tomcat的实时日志catalina.out
    [root@ken3 logs]# tail -f catalina.out                
    25-Jan-2019 15:03:50.314 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
    25-Jan-2019 15:03:50.319 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1,598] milliseconds
    25-Jan-2019 15:07:28.455 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
    25-Jan-2019 15:07:28.456 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
    25-Jan-2019 15:07:28.466 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
    25-Jan-2019 15:07:28.479 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
    25-Jan-2019 15:07:28.538 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
    25-Jan-2019 15:07:28.549 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
    25-Jan-2019 15:07:28.551 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
    25-Jan-2019 15:07:28.552 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]
     
    tomcat主配置文件server.xml详解
     
    <?xml version='1.0' encoding='utf-8'?>
    <!--
    <Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
        port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
        shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
    -->
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />
      </GlobalNamingResources>
      <!--service服务组件-->
      <Service name="Catalina">
        <!--
        connector:接收用户请求,类似于httpd的listen配置监听端口.
            port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
            address:指定连接器监听的地址,默认为所有地址(即0.0.0.0)
            protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
            minProcessors服务器启动时创建的处理请求的线程数
            maxProcessors最大可以创建的处理请求的线程数
            enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
            redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
            acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
            connectionTimeout指定超时的时间数(以毫秒为单位)
        -->
        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

        <!--engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host
            defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
        -->
        <Engine name="Catalina" defaultHost="localhost">
          <!--Realm表示存放用户名,密码及role的数据库-->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
          <!--
          host表示一个虚拟主机
            name指定主机名
            appBase应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
            unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
            autoDeploy:在tomcat启动时,是否自动部署。
            xmlValidation:是否启动xml的校验功能,一般xmlValidation="false"。
            xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。
          -->
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
            <!--
            Context表示一个web应用程序,通常为WAR文件
                docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
                path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
                reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序
            -->
            <Context path="" docBase="" debug=""/>

            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
        </Engine>
      </Service>
    </Server>
    tomcat的三个端口
     
    Tomcat主配置文件Server.xml文件里面有三个端口
    第一个:接收SHUTDOWN指令
        port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
        shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
    -->
    <Server port="8005" shutdown="SHUTDOWN">
     
    第二个:接收HTTP协议
       connector:接收用户请求,类似于httpd的listen配置监听端口.
            port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
     redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
      <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
     
    第三个:接收AJP协议
      protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
     
    tomcat多实例部署
     
    第一步:复制tomcat目录
    [root@ken3 local]# cp -a tomcat tomcat1
    [root@ken3 local]# cp -a tomcat tomcat2
     
    第二步:修改配置文件
    tomcat1
    [root@ken3 local]# vim tomcat1/conf/server.xml
    ...
    22 <Server port="8011" shutdown="SHUTDOWN">
    ...
    69     <Connector port="8081" protocol="HTTP/1.1"
    ...
    tomcat2
    [root@ken3 local]# vim tomcat1/conf/server.xml
    ...
    22 <Server port="8012" shutdown="SHUTDOWN">
    ...
    69     <Connector port="8082" protocol="HTTP/1.1"
    ...
    tomcat2
     
    第三步:启动多实例
    [root@ken3 local]# tomcat2/bin/startup.sh
    Using CATALINA_BASE:   /usr/local/tomcat2
    Using CATALINA_HOME:   /usr/local/tomcat2
    Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar
    Tomcat started.
    [root@ken3 local]# ss -tnl
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port             
    LISTEN      0      128                              *:111                                          *:*                 
    LISTEN      0      128                              *:22                                           *:*                 
    LISTEN      0      100                      127.0.0.1:25                                           *:*                 
    LISTEN      0      1                 ::ffff:127.0.0.1:8005                                        :::*                 
    LISTEN      0      100                             :::8009                                        :::*                 
    LISTEN      0      1                 ::ffff:127.0.0.1:8011                                        :::*                 
    LISTEN      0      1                 ::ffff:127.0.0.1:8012                                        :::*                 
    LISTEN      0      128                             :::111                                         :::*                 
    LISTEN      0      100                             :::8080                                        :::*                 
    LISTEN      0      128                             :::80                                          :::*                 
    LISTEN      0      100                             :::8081                                        :::*                 
    LISTEN      0      100                             :::8082                                        :::*                 
    LISTEN      0      128                             :::22                                          :::*                 
    LISTEN      0      100                            ::1:25                                          :::*  
     
    第四步:浏览器访问测试
    tomat1
     
     tomcat2
     
    tomcat搭建集群
     
    第一步:修改配置文件
    [root@ken ~]# cd /usr/local/tomcat1/webapps/
    [root@ken webapps]# ls
    docs  examples  host-manager  manager  ROOT
    [root@ken webapps]# mv ROOT/* /ken/1^C
    [root@ken webapps]# mkdir /ken/2
    [root@ken webapps]# mv ROOT/* /ken/2
    [root@ken webapps]# echo "111" > ROOT/index.html
    另外一台写上111以便区分
     
    第二步:安装nginx
    [root@ken ~]# yum install nginx -y
     
    第三步:配置nginx
      [root@ken ~]# vim /etc/nginx/nginx.conf
    ...
      upstream ken {         
            server 192.168.4.190:8081;      #定义转发地址
            server 192.168.4.190:8082;
        }

        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /usr/share/nginx/html;

            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

            location / {
            proxy_pass http://ken;   #转发至代理
            }
    ...
     
    第四步:检查nginx配置并重启
    [root@ken ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@ken ~]# systemctl restart nginx
     
    第五步:测试
    浏览器输出本机IP地址即可
    进行刷新
     

    人生一世,草木一秋。 众生无我,苦乐随缘。
  • 相关阅读:
    使用 awk 命令统计文本
    Mysql基础及系统函数(分享)
    存储过程 :字段按逗号拆分并插入到关联表
    Spring Security SavedRequestAwareAuthenticationSuccessHandler类
    自制Springboot Starter
    vue3 input中回车生成标签
    NOMURA Programming Contest 2022(AtCoder Beginner Contest 253)
    Educational Codeforces Round 129 (Rated for Div. 2)
    Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
    2022 Google Kick Start Round C
  • 原文地址:https://www.cnblogs.com/hao6/p/12863330.html
Copyright © 2020-2023  润新知