zoukankan      html  css  js  c++  java
  • tomcat安装配置

    Tomcat 安全配置与性能优化

    tomcat性能调优 

    linux/centos解决Tomcat内存溢出

    Tomcat配置SSL视频课程

    JAVA技术和Tomcat入门及优化

    Tomcat 7优化前及优化后的性能对比

    tomcat配置ssl教程

    Apache支持html等静态页面 tomcat支持jsp动态页面

    不推荐编译安装 太麻烦

    centos6.5 自带的如下

    [root@zzx jvm]# yum list all |grep tomcat
    apache-tomcat-apis.noarch 0.1-1.el6 base
    glite-security-trustmanager-tomcat6.noarch 2.5.5-6.el6 epel
    jakarta-commons-collections-tomcat5.noarch 3.2.1-3.5.el6_7 base
    jakarta-commons-dbcp-tomcat5.noarch 1.2.1-13.9.el6 base
    jakarta-commons-pool-tomcat5.x86_64 1.3-12.7.el6 base
    jglobus-ssl-proxies-tomcat.noarch 2.1.0-2.el6 epel
    tomcat.noarch 7.0.65-1.el6 epel
    tomcat-admin-webapps.noarch 7.0.65-1.el6 epel
    tomcat-docs-webapp.noarch 7.0.65-1.el6 epel
    tomcat-el-2.2-api.noarch 7.0.65-1.el6 epel
    tomcat-javadoc.noarch 7.0.65-1.el6 epel
    tomcat-jsp-2.2-api.noarch 7.0.65-1.el6 epel
    tomcat-jsvc.noarch 7.0.65-1.el6 epel
    tomcat-lib.noarch 7.0.65-1.el6 epel
    tomcat-native.x86_64 1.1.34-1.el6 epel
    tomcat-servlet-3.0-api.noarch 7.0.65-1.el6 epel
    tomcat-webapps.noarch 7.0.65-1.el6 epel
    tomcat6.noarch 6.0.24-95.el6 base
    tomcat6-admin-webapps.noarch 6.0.24-95.el6 base
    tomcat6-docs-webapp.noarch 6.0.24-95.el6 base
    tomcat6-el-2.1-api.noarch 6.0.24-95.el6 base
    tomcat6-javadoc.noarch 6.0.24-95.el6 base
    tomcat6-jsp-2.1-api.noarch 6.0.24-95.el6 base
    tomcat6-lib.noarch 6.0.24-95.el6 base
    tomcat6-servlet-2.5-api.noarch 6.0.24-95.el6 base
    tomcat6-webapps.noarch 6.0.24-95.el6 base
    tomcatjss.noarch 2.1.0-4.el6 base

    documentation文档

    Deployer部署器

    extras其他组件

    官网下载core核心包

     解压 再ln              tomcat9要配jdk1.8 用jdk1.7tomcat启动后无法监听端口

    tar xf apache-tomcat-9.0.0.M9.tar.gz -C /usr/local

    cd /usr/local

    ln -sv apache-tomcat-9.0.0.M9 tomcat

    cd tomcat    bin下的catalina.sh  是核心脚本 tomcat就是catalina
           conf下的server.xml是核心配置文件  tomcat-users.xml用户配置文件 管理账号密码 web.xml应用程序部署描述符(部署:讲一个web应用程序所依赖到的类装载进JVM)

            catalina.propertiescatalina的属性配置文件          catalina.policy定义安全策略的(哪些能访问哪些不能访问的授权文件)

    一般修改xml文件 其他文件不用修改

    [root@zzx conf]# vim /etc/profile.d/tomcat.sh添加如下  

     [root@zzx conf]# . /etc/profile.d/tomcat.sh 

    [root@zzx ~]# catalina.sh version         其实就是执行/usr/local/tomcat/bin/version.sh   显示一些配置文件路径等

    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/lib/jvm/jdk1.8.0_102/jre
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    启动tomcat  或者 [root@zzx ~]# /usr/local/tomcat/bin/startup.sh

    [root@zzx ~]# catalina.sh start
    Using CATALINA_BASE: /usr/local/tomcat
    Using CATALINA_HOME: /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME: /usr/lib/jvm/jdk1.8.0_102/jre
    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

    [root@zzx ~]# jps
    5082 Jps
    5052 Bootstrap

    [root@zzx ~]# netstat -tnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1911/sshd
    tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1801/cupsd
    tcp 0 0 :::8080 :::* LISTEN 5052/java
    tcp 0 0 :::22 :::* LISTEN 1911/sshd
    tcp 0 0 ::1:631 :::* LISTEN 1801/cupsd
    tcp 0 0 ::1:25 :::* LISTEN 2036/master
    tcp 0 0 ::1:8005 :::* LISTEN 5052/java
    tcp 0 0 :::8009 :::* LISTEN 5052/java

    启动后查看日志

    [root@zzx logs]# ls /usr/local/tomcat/logs/
    catalina.2016-08-08.log

    index.html

    manager.2016-08-08.log
    catalina.out

    localhost.2016-08-08.log
    host-manager.2016-08-08.log

    localhost_access_log.2016-08-08.txt

    [root@zzx logs]# cat catalina.2016-08-08.log

     webapps/ROOT 是默认访问的位置

    [root@zzx webapps]# ls
    docs examples host-manager manager ROOT

    每个文件夹下都有WEB-INF          WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录(存放放应用程序的私有资源信息)。

    [root@zzx WEB-INF]# ls
    web.xml   应用程序的部署描述服务文件   

    [root@zzx tomcat]# cd work/Catalina/localhost/
    docs/ examples/ host-manager/ manager/ ROOT/            work目录   jsp转java再编译成.class就在这个“车间”进行

    第一次访问页面会比较慢  java转成class   后面用户再访问就比较快了  直接访问class

    添加service启动功能

     vi /etc/rc.d/init.d/tomcat  内容如下

    #!/bin/sh
    CATALINA_HOME=/usr/local/tomcat
    JAVA_HOME=/usr/lib/jvm/jdk1.8.0_102
    export CATALINA_HOME JAVA_HOME
    #export CATALINA_OPTS="-Xms128m -Xmx256m" #设置堆内存最小最大值 根据实际内存可以设置更大>一些
    exec $CATALINA_HOME/bin/catalina.sh $*

    [root@zzx init.d]# chmod +x tomcat      添加执行权限

     service tomcat stop

    进程配置文件测试 要先stop

    service tomcat configtest

    tomcat服务器web访问 http://localhost:8080/manager/html提示输入账号密码  这个账号密码设置如下

    在<tomcat-users> </tomcat-users>之间添加代码

     <role rolename="manager-gui"/>
     <user username="admin" password="admin" roles="manager-gui"/>   

       当前空闲内存、当前总内存、最大可使用内存三个数据  内存修改看下面

    优化

    1修改内存

    在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下(一般最大堆 最小堆设置的最好一样。)

    # vi TOMCAT_HOME/bin/catalina.sh
    JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

    堆内存越大,垃圾回收频率就低,但是一旦垃圾回收,需要的时间就越多。

    打个比方,桌上一堆食物,你是吃完一个,然后把袋子扔到垃圾桶;还是全部吃完,再收拾桌面。2个比较,把袋子扔到垃圾桶就一丁点时间,但是次数多;一次过收拾桌面就一次,但是你得慢慢收拾。

    另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现。   如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

    一个要注意的地方:建议把内存的最高值跟最低值的差值缩小,不然会浪费很多内存的, 最低值加大 ,最高值可以随便设,但是要根据实际的物理内存 ,如果内存设置太大了,比如设置了512M最大内存,但如果没有512M可用内存,Tomcat就不能启动,还有可能存在内存被系统回收,终止进程的情况。

    再补充一个,JVM还有个32G现象,也就是当堆内存设置为大于32-37G的时候,性能会小于设置成32G,35G内存不如32G内存。也是同样说明,堆内存不是越大越好。

    2开启gzip  修改server.xml添加如下粗体字的内容  然后重启tomcat,server tomcat stop/start         然后检测用代码  curl -I -H "Accept-Encoding: gzip,deflate" http://192.168.1.112:8080/

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    executor="tomcatThreadPool"
    URIEncoding="utf-8"
    compression="on"
    compressionMinSize="50"
    noCompressionUserAgents="gozilla, traviata"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

    配置SSL

    [root@zzx jdk1.8.0_102]# cd $JAVA_HOME/bin
    [root@zzx bin]# ./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/.keystore
    Enter keystore password:

    correct?
    [no]: y           这里注意用y就行

    后面还有一个密码

    Enter key password for <tomcat>
    (RETURN if same as keystore password):   直接回车让密码和前面的一样

    修改tomcat配置文件

    [root@zzx jdk1.8.0_102]# cd /usr/local/tomcat/conf/

    [root@zzx conf]# pwd
    /usr/local/tomcat/conf

    [root@zzx conf]# vi server.xml        下面这个8443去掉注释 修改如下 不同版本可能略有差别  这里搞了半天 人品!!

    <Connector port="8443" protocol="HTTP/1.1"
    maxThreads="150" SSLEnabled="true"
    scheme="https" secure="true" clientAuth="false"
    keystoreFile="/usr/local/tomcat/conf/.keystore" keystorePass="mima" sslProtocol="TLS"/>

    重启tomcat

    打开浏览器输入 https://192.168.1.112:8443/  就可以访问了

    多版本共存

    安装了tomcat6和tomcat9要想共存就把端口分开不要都用8080就可以了,就是修改其中一个的端口号,比如8080改成8089     keystore可以共用  8443改9443   8005改9005  8009  改 9009  整个配置文件中的端口号都要改

  • 相关阅读:
    Python--安装 pip 和 scapy
    windows设置代理
    麦子的《我奋斗了18年才和你坐在一起喝咖啡》
    Tar命令
    test
    markdown语法
    js apply call
    windows文件大小和占用空间为何不一样
    prolog笔记
    html文字超出显示省略号
  • 原文地址:https://www.cnblogs.com/hanxing/p/5752703.html
Copyright © 2011-2022 走看看