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  整个配置文件中的端口号都要改

原文地址:https://www.cnblogs.com/hanxing/p/5752703.html