• tomcat介绍与搭建


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

    Tomcat和nginx,apache,lighttpd等web服务样,具有处理html页面功能,它还是一个servlet和jsp容器,独立的servlet容器是tomcat默认模式,不过处理html能力不如 nginx/apache服务器


    安装TOMCAT需要的软件 JDK

    下载JDK和 tomcat

    JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    Tomcat下载:http://tomcat.apache.org/

    安装部署JAVA环境(JDK)

    解压缩到application目录下
    tar xf jdk-8u60-linux-x64.tar.gz -C /application/

    软连接
    ln -s /application/jdk1.8.0_60 /application/jdk

    配置环境变量
    sed -i.ori '$a export JAVA_HOME=/application/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile

    生效
    source /etc/profile

    检测
    java -version
    java version "1.8.0_60"
    Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
    Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)


    安装Tomcat

    解压缩到目录
    tar xf apache-tomcat-8.0.27.tar.gz -C /application/

    创建软连接
    ln -s /application/apache-tomcat-8.0.27 /application/tomcat

    修改环境变量
    echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile

    生效
    source /etc/profile

    授权
    chown -R root.root /application/jdk/ /application/tomcat/

    tail -4 /etc/profile
    export JAVA_HOME=/application/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    export TOMCAT_HOME=/application/tomcat

    Tomcat目录介绍
    cd /application/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

    cd 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
    /application/tomcat/bin/startup.sh
    关闭
    /application/tomcat/bin/shutdown.sh


    端口8080


    访问测试
    http://192.168.70.131:8080/

     

    日志
    cd /application/tomcat/logs/

    locatlhosts_access_log .txt 定时写入 访问日志
    catalina.out 实时日志

    配置文件

    conf

    server.xml 主配置文件
    tomcat-users.xml #→Tomcat管理用户配置文件


    编辑tomcat-users.xml(要在最后一行上面插入)
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
    </tomcat-users>

    账户tomcat 密码tomcat
    #重启
    /application/tomcat/bin/shutdown.sh
    /application/tomcat/bin/startup.sh

    访问测试
    http://192.168.70.131:8080/

    非常不安全

    cd /application/tomcat/webapps/
    删除
    docs examples host-manager manager

    把ROOT目录下文件删掉
    就保留ROOT空目录

    • engine:核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
    • host:类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。
    • context:定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。
    • connector:接收用户请求,类似于httpd的listen配置监听端口的。
    • service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。service内部有两个connector,一个engine。因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
    • server:表示一个运行于JVM中的tomcat实例。
    • Valve:阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
    • logger:日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
    • realm:可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
    • UserDatabaseRealm:使用JNDI自定义的用户认证库。
    • MemoryRealm:认证信息定义在tomcat-users.xml中。
    • JDBCRealm:认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。

    3.3.3 配置文件注释

    1. <?xml version='1.0' encoding='utf-8'?>
    2. <!--
    3. <Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
    4. port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
    5. shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
    6. -->
    7. <Server port="8005" shutdown="SHUTDOWN">
    8. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
    9. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    10. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    11. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    12. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
    13. <GlobalNamingResources>
    14. <Resource name="UserDatabase" auth="Container"
    15. type="org.apache.catalina.UserDatabase"
    16. description="User database that can be updated and saved"
    17. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    18. pathname="conf/tomcat-users.xml" />
    19. </GlobalNamingResources>
    20. <!--service服务组件-->
    21. <Service name="Catalina">
    22. <!--
    23. connector:接收用户请求,类似于httpd的listen配置监听端口.
    24. port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
    25. address:指定连接器监听的地址,默认为所有地址(即0.0.0.0)
    26. protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
    27. minProcessors服务器启动时创建的处理请求的线程数
    28. maxProcessors最大可以创建的处理请求的线程数
    29. enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
    30. redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
    31. acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
    32. connectionTimeout指定超时的时间数(以毫秒为单位)
    33. -->
    34. <Connector port="8080" protocol="HTTP/1.1"
    35. connectionTimeout="20000"
    36. redirectPort="8443" />
    37. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    38. <!--engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host
    39. defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
    40. -->
    41. <Engine name="Catalina" defaultHost="localhost">
    42. <!--Realm表示存放用户名,密码及role的数据库-->
    43. <Realm className="org.apache.catalina.realm.LockOutRealm">
    44. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    45. resourceName="UserDatabase"/>
    46. </Realm>
    47. <!--
    48. host表示一个虚拟主机
    49. name指定主机名
    50. appBase应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
    51. unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
    52. autoDeploy:在tomcat启动时,是否自动部署。
    53. xmlValidation:是否启动xml的校验功能,一般xmlValidation="false"。
    54. xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。
    55. -->
    56. <Host name="localhost" appBase="webapps"
    57. unpackWARs="true" autoDeploy="true">
    58. <!--
    59. Context表示一个web应用程序,通常为WAR文件
    60. docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
    61. path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
    62. reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序
    63. -->
    64. <Context path="" docBase="" debug=""/>
    65. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    66. prefix="localhost_access_log" suffix=".txt"
    67. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    68. </Host>
    69. </Engine>
    70. </Service>
    71. </Server>

    部署站点

    cd /application/tomcat/webapps/
    wget
    memtest.war

    war包会怎么解压
    drwxr-xr-x 3 root root 4096 4月 10 15:22 memtest
    -rw-r--r-- 1 root root 643 4月 10 2018 memtest.war


    访问
    http://192.168.70.131:8080/memtest/meminfo.jsp

    JVM memory detail info :
    Max memory:454MB
    Total memory:44MB
    Free memory:13MB
    Available memory can be used is :423MB


    JVM容量大小

    自定义站点目录

    默认站点存放目录 tomcat/webapps/ROOT/目录下面

    两种方法
    1将站点目录拷贝到 tomcat/webapps/ROOT/

    2修改配置文件
    vim /application/tomcat/conf/server.xml
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
    [root@tomcat ~]# /application/tomcat/bin/shutdown.sh
    [root@tomcat ~]# /application/tomcat/bin/startup.sh

    多实例Tomcat多实例
    创建4个多实例
    cd /application/
    cp -a apache-tomcat-8.0.27/ tomcat8_1
    cp -a apache-tomcat-8.0.27/ tomcat8_2
    cp -a apache-tomcat-8.0.27/ tomcat8_3
    cp -a apache-tomcat-8.0.27/ tomcat8_4


    修改配置文件(修改 shutdown端口,tomcat端口)

    sed -i '22s#8005#8011#;69s#8080#8081#' /application/tomcat8_1/conf/server.xml
    sed -i '22s#8005#8012#;69s#8080#8082#' /application/tomcat8_2/conf/server.xml
    sed -i '22s#8005#8013#;69s#8080#8083#' /application/tomcat8_3/conf/server.xml
    sed -i '22s#8005#8014#;69s#8080#8084#' /application/tomcat8_4/conf/server.xml


    启动多实例
    for i in {1..4};do /application/tomcat8_$i/bin/startup.sh;done

    netstat -lntup|grep java
    tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 20763/java
    tcp 0 0 :::8009 :::* LISTEN 20763/java
    tcp 0 0 ::ffff:127.0.0.1:8011 :::* LISTEN 20869/java
    tcp 0 0 :::8080 :::* LISTEN 20763/java
    tcp 0 0 :::8081 :::* LISTEN 20869/java
    tcp 0 0 :::8082 :::* LISTEN 20879/java
    tcp 0 0 :::8083 :::* LISTEN 20889/java
    tcp 0 0 :::8084 :::* LISTEN 20902/java

    nginx+tomcat集群


    cp /application/nginx/conf/nginx.conf{,.20180410}

    [root@tomcat ~]# vim /application/nginx/conf/nginx.conf
    upstream web_pools {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
    }
    server {
    listen 80;
    server_name localhost;
    location / {
    root html;
    index index.jsp index.html index.htm;
    proxy_pass http://web_pools;
    }
    }
    [root@tomcat ~]# /application/nginx/sbin/nginx -t
    [root@tomcat ~]# /application/nginx/sbin/nginx

    echo "This is 8081">/application/tomcat8_1/webapps/ROOT/index.jsp
    echo "This is 8081">/application/tomcat8_2/webapps/ROOT/index.jsp

    监控

    cat meminfo.jsp
    <%
    Runtime rtm = Runtime.getRuntime();
    long mm = rtm.maxMemory()/1024/1024;
    long tm = rtm.totalMemory()/1024/1024;
    long fm = rtm.freeMemory()/1024/1024;

    out.println("JVM memory detail info :<br>");
    out.println("Max memory:"+mm+"MB"+"<br>");
    out.println("Total memory:"+tm+"MB"+"<br>");
    out.println("Free memory:"+fm+"MB"+"<br>");
    out.println("Available memory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
    %>

    Zabbix监控TOMCAT

    如果zabbix是yum安装的,还需要

    yum install -y java java-devel zabbix-java-gateway

    源码安装需要加--enable-java参数

    zabbix安装

    tomcat 开启远程管理

    vim /application/tomcat/bin/catalina.sh

    97行

    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=12345
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.rmi.server.hostname=192.168.70.131"

    添加hosts

    192.168.70.131 lb-01

    重启tomcat

     /application/tomcat/bin/shutdown.sh 

     /application/tomcat/bin/startup.sh 

    检查端口

    lsof -i:12345
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    java 22340 root 20u IPv6 1826934 0t0 TCP *:italk (LISTEN)

    zabbix_server开启java poller。zabbix_java开启java gateway

    [root@zabbix ~]# /application/zabbix/sbin/zabbix_java/startup.sh

    [root@zabbix ~]# netstat -lntup|grep 10052
    tcp 0 0 :::10052 :::* LISTEN 21532/java

    vim /application/zabbix/etc/zabbix_server.conf

    JavaGateway=127.0.0.1

    JavaGatewayPort=10052

     StartJavaPollers=5

    重启zabbix

    /etc/init.d/zabbix_server restart

    配置zabbix

     

  • 相关阅读:
    Java基础00-循环语句7
    Java基础00-分支语句6
    Java基础00-数据输入5
    Java基础00-运算符4
    Java基础00-基础语法3
    Java基础00-第一个程序2
    第十四题
    第十三题
    第十二题
    第十题
  • 原文地址:https://www.cnblogs.com/sky00747/p/8780679.html
Copyright © 2020-2023  润新知