小诺文档中心 小诺文档中心
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

kevin

运维界的菜鸟
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • shell编程

  • 消息队列

  • web

    • nginx
    • nginx
    • Nginx_day01
    • Nginx_day02
    • Nginx_day03
    • Nginx_day04
    • Nginx_day05
    • nginx配置文件模板
    • php笔记
    • tomcat
    • ELK

    • 自动化运维

    • linux

    • DevOps
    • web
    xiaonuo
    2022-06-24
    目录

    tomcat

    Java web 环境搭建

    # 一、初识 Tomcat

    Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。Tomcat 是 Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。

    # 二、Java web 环境:Nginx+JDK+Tomcat+MySQL

    a. 所有服务部署在同一个主机上,也可分开部署 b. Nginx 默认开启的是 80 端口,用来接收用户的 web 请求 c. Tomcat 默认开启的是 8080 端口,用来接收 Nginx 转发过来的 web 请求

    # 三、环境部署流程

    1.安装 JDK(java 解析器) 1、首先安装 gcc

    yum -y install gcc

    2、将软件包上传、解压、并移至指定位置

    mv 解压缩目录 /usr/local/jdk1.7

    3、配置 JDK 的环境变量

    vim /etc/profile

    #添加以下内容 export JAVA_HOME=/usr/local/jdk1.7 export JAVA_BIN=/usr/local/jdk1.7/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    source /etc/profile

    4、查看 java 是否安装成功

    java -version

    2.安装 tomcat 1、将软件包上传、解压、并复制到指定目录下

    cp -a 解压目录 /usr/local/tomcat 2、配置 Tomcat 的环境变量

    2、配置 Tomcat 的环境变量

    vim /etc/profile

    export TOMCAT_HOME=/usr/local/tomcat export PATH=$PATH:$TOMCAT_HOME/bin

    source /etc/profile

    3、将 tomcat 的启动脚本赋予执行权限

    chmod +x /usr/local/tomcat/bin/* 4、开启 tomcat

    4、开启 tomcat

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

    netstat -antp #查看端口,确认是否启动

    5、在客户端访问页面进行测试 192.168.10.20:8080

    四、部署 JAVA 的 WAR 包

    1、在 /usr/local/tomcat/conf/server.xml 配置文件中的 server 区域中添加标红内容

    2、将 war 包拷贝到 webapps 目录中

    cp -a test.war /usr/local/tomcat/webapps/ 4、删除网站的 ROOT 目录

    rm -rf ROOT 4、重启 tomcat 服务

    3、删除网站的 ROOT 目录

    rm -rf ROOT

    4、重启 tomcat 服务

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

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

    5、测试 使用客户端浏览访问 Nginx 服务的端口

    注意:原本的 tomcat 使用 8080 端口进行访问,也可以将端口修改为 80 使用 IP 直接访问,修改 /usr/local/tomcat/conf/server.xml 配置中的 8080 改变为 80(切记不要和其他 web 服务器冲突)

    五、创建多个 tomcat 实例(拓展)

    1、首先将 tomcat 进行停止

    /usr/local/tomcat/bin/catalina.sh stop 2、拷贝原来的 Tomcat 到另外一个目录,如 tomcat-2,清除 logs 目录

    2、拷贝原来的 Tomcat 到另外一个目录,如 tomcat-2,清除 logs 目录

    cp -a tomcat/ tomcat-2

    rm -rf tomcat-2/logs/*

    3、修改 Tomcat-2 中的/conf/server.xml 文件,把 shutdown 和 Connector 端口修改成另外的数值, 关闭端口修改为 8006,连接端口修改为 8090

    4、修改 startup.sh 和 shutdown.sh 文件 在第一行均加入:export CATALINA_HOME=/usr/local/tomcat-2 5、启动 tomcat

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

    /usr/local/tomcat-2/bin/catalina.sh start

    netstat -antp #查看 8080 和 8090 端口是否正常启动

    6、查看结果 浏览 http://192.168.10.20:8080 浏览 http://192.168.10.20:8090 可以直接将 8090 写入配置好的 Nginx 负载均衡中

    JSP WebApp目录结构 主页配置:默认按以下顺序查找主页文件index.html,index.htm、index.jsp WEB-INF/:当前WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml配置文件 META-INF/:类似于WEB-INF,也是配置信息,浏览器无法访问 classes/:类文件,当前webapp需要的类 lib/:当前应用依赖的jar包

    基于部署实现WEB的管理

    http://192.168.200.237:8090/manager/status

    vim conf/tomcat-users.xml #加下面两行,指定用户和密码 修改webapps/manager/META-INF/context.xml 看正则表达式就知道是本地访问了,由于当前访问地址是192.168.x.x,可以修改正则为 allow="127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1|192.168.\d+.\d+"

    # centos6启动脚本

    #!/bin/bash  
    #  
    # tomcat startup script for the Tomcat server  
    #  
    # chkconfig: 345 80 20  
    # description: start the tomcat deamon  
    #  
    # Source function library  
    . /etc/rc.d/init.d/functions
    prog=tomcat
    export JAVA_HOME=/opt/jdk
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    export CATALANA_HOME=/opt/tomcat8
    tomcat_port=8080
     
    case "$1" in
    start)
        tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
        if [ "$tomcat_PID" != "" ]
            then
            echo "Tomcat had started"
            echo "Tomcat_PID="${tomcat_PID}
            echo "if you want to restart Tomcat,please excute restart command!"
        else
            echo "Starting Tomcat..."  
            $CATALANA_HOME/bin/startup.sh
        fi
        ;;
    stop)
        tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
        if [ "$tomcat_PID" != "" ]
            then
            echo "Stopping Tomcat..."  
            $CATALANA_HOME/bin/shutdown.sh
        else
            echo "Tomcat hadn't started,please excute start command!"
        fi
        ;;
    restart)
    #获取tomcat的进程ID
        #TomcatID=$(ps -ef |grep tomcat |grep -w $CATALANA_HOME|grep -v 'grep'|awk '{print $2}')
        tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
        #echo "tomcat_PID="$tomcat_PID
     
        if [ "$tomcat_PID" != "" ]
            then
            echo "Tomcat had started,we will stopping Tomcat and Starting Tomcat next 2 second..."
            echo "Stopping Tomcat..."  
            $CATALANA_HOME/bin/shutdown.sh
            echo ""
            echo "...............waiting 2 second.................."
            echo ""
            sleep 2
            echo -n "Starting Tomcat..."  
            $CATALANA_HOME/bin/startup.sh
     
        else
            echo "Tomcat hadn't starting"
            echo -n "Starting Tomcat..."  
            $CATALANA_HOME/bin/startup.sh
        fi
     
            ;;
    *)
        echo "Usage: $prog {start|stop|restart}"  
        ;;
    esac
    exit 0
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69

    # systemctl 启动脚本

    [Unit]
    Description=Tomcat
    #After=syslog.target network.target remote-fs.target nss-lookup.target
    After=syslog.target network.target
    [Service]
    Type=forking
    Environment="JAVA_HOME=/opt/jdk" 
    ExecStart=/opt/tomcat8/bin/startup.sh
    ExecStop=/opt/tomcat8/bin/shutdown.sh
    PrivateTmp=true
    User=root
    Group=root
    [Install]
    WantedBy=multi-user.target
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # tomcat参数优化

    tomcat进行参数性能优化,具体优化的地方如下:

    Linux内核的优化
    服务器资源配置的优化
    Tomcat参数优化
    配置负载集群优化
    

    这里着重讲解tomcat 参数的优化:server.xml文件,关闭DNS 查询、配置最大并发等参数。 maxThreads:tomcat 起动的最大线程数,即同时处理的任务个数,默认值为200 acceptCount:当 tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为 100 当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。

    打开/conf/server.xml

    配置多个 tomcat 实例,方法也很简单,只需要在服务器上 cp 多个 tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。

    为了提升整个网站的性能,还需要在 tomcat 前面架设 nginx web 反向代理服务器,用以提高用户高速访问。

    linux修改TOMCAT_HOME/bin/catalina.sh

    JAVA_OPTS="-server -Xms32g -Xmx32g -XX:NewSize= -XX:MaxNewSize= " -server:服务器模式 -Xms:堆内存初始化大小 -Xmx:堆内存空间上限 -XX:NewSize=:新生代空间初始化大小 -XX:MaxNewSize=:新生代空间最大值

    JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g -XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods"

    常用属性: maxThreads:最大线程数,默认200 minSpareThreads:最小空闲线程数 maxSpareThreads:最大空闲线程数 acceptCount:当启动线程满了之后,等待队列的最大长度,默认100 URIEncoding:URI地址编码格式,中文建议使用UTF-8 enableLookups:是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP就行 compression:是否启用传输压缩机制,建议“on",CPU和流量的平衡 compressionMinSize:启用压缩传输的数据流最小值,单位是字节 compressableMimeType:定义启用压缩功能的MIME

    php笔记
    ELK笔记

    ← php笔记 ELK笔记→

    最近更新
    01
    postgresql安装
    06-24
    02
    oracle笔记
    06-24
    03
    opengauss笔记
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2019-2022 kevin | 小诺运维
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×