tomcat设置问题总结

文章来源:绿盟市场 时间:2017-12-12 09:35

一、tomcat防止恶意攻击

1.tomcat的管理平台(manager)本身就是一个web 应用,可以使用localhost:8080/manager/html 访问

Tomcat8下roles="manager-gui"角色失效,暂未找到原因,可用roles="admin-gui"角色进入

该应用程序支持以下功能

Ø 从WAR文件的上传内容部署新的Web应用程序。

Ø 从服务器文件系统在指定的上下文路径上部署新的Web应用程序。

Ø 列出当前部署的Web应用程序以及这些Web应用程序当前处于活动状态的会话。

Ø 重新加载现有的Web应用程序,以反映/WEB-INF/classes或更改内容/WEB-INF/lib。

Ø 列出OS和JVM属性值。

Ø 列出可用的全局JNDI资源,用于准备<ResourceLink>嵌套在<Context>部署描述中的元素的部署工具。

Ø 启动一个已停止的应用程序(从而使其再次可用)。

Ø 停止现有的应用程序(以便它变得不可用),但不要取消部署它。

Ø 取消部署Web应用程序并删除其文档基目录(除非从文件系统部署)。

二、内存溢出解决办法

1.内存溢出分:java.lang.OutOfMemory和java.lang.OutOfMemoryError: PermGen space两种报错。一般堆内存太小会报java.lang.OutOfMemory错误,而非堆内存太小会报java.lang.OutOfMemoryError: PermGen space错误

Ø 堆内存:是在 Java 虚拟机启动时创建的,是Java代码可及的内存,是留给开发人员使用的。

Ø 非堆内存:在JVM中堆之外的内存称为非堆内存(Non-heap memory),是JVM留给 自己用的 ,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

2.JVM各参数含义:

Ø -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

Ø -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了

Ø -Xms128m JVM初始分配的堆内存

Ø -Xmx512m JVM最大允许分配的堆内存,按需分配

Ø -XX:PermSize=64M JVM初始分配的非堆内存

Ø -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

3、修改JVM参数:

分三种形式:

a) 部署在eclipse开发环境下开发运行的。

b) 部署在服务器tomcat下的以startup.bat、startup.sh启动方式运行的。

c) 部署在tomcat下做成Windows服务启动方式运行的。

l 第一种:Windows -> Preferences -> Java -> Installed JREs -> Edit->在  

l 第二种:在tomcat 目录下的bin目录下的catalina.bat打开编辑,搜索

Set "JAVA_OPTS=%JAVA_OPTS%%LOGGING_MANAGER%"

set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%"

    两行将其注销,在后面增加

 set JAVA_OPTS=-server -Xms512m -Xmx1024m -Xss512k -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true  -Dcom.sun.management.jmxremote.port=9008 

General选项卡,选择Startup type为Automatic,即开机自启动,在java选项卡中javaoption中改变相应参数。

三、部署多个tomcat

首先添加多个不同tomcat环境变量,然后在各个tomcat中修改配置参数,引用环境变量里的不同目录。


注意,如果将tomcat配置成服务的话,catalina.bat将失效,JVM参数不能读取到,jmx配置也无效,需要在程序中进行重新配置,需要在环境变量中加入CATALINA_BASE_8080,其值为:D:\tomcat-8080;同样修改startup.bat、shutdown.bat和catalina.bat文件内容,把其中所有CATALINA_ BASE替换为CATALINA_ BASE _8080。


总结:清空webapps下的manager工程或剪切,并将tomcat管理用户全部注销~~ ,包括examples,通过examples也能进行一些攻击,其它tomcat自带的web app,能删掉的都删掉 , 防火墙默认对外只开放tomcat的8080端口,升级到最新tomcat版本等。

tomcat管理用户全部注销: 

E:\tomcat-8082\conf\tomcat-users.xml

2、tomcat日志:

Ø 一是运行中的日志,localhost.2017-12-07.log它主要记录运行的一些信息,尤其是一些异常错误日志信息。

Ø 二是访问日志信息,localhost_access_log.txt它记录的访问的时间,IP,访问的资料等相关信息。

默认情况下访问日志没有打开,配置的方式如下:编辑$ {}卡塔利娜/conf/server.xml文件注:$ {}卡特琳娜的tomcat是的安装目录。把以下的注释(< - - !>)去掉即可。

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false     

其中Dcom.sun.management.jmxremote.port=9008  9008是JMX设置的端口,通过jmx端口可以用java目录中自带的jconsole或 jvisualvm监控本地程序运行状态。

l 第三种:先将tomcat启动做出Windows服务启动方式运行

1. 进入tomcat-8080/bin目录,修改 service.bat,找到以下内容,修改SERVICE_NAME为自定义的服务名:

rem Set default Service name

  set SERVICE_NAME=tomcat8080

  set DISPLAYNAME=Apache Tomcat 8.0 %SERVICE_NAME%

2.在service.bat中搜索CATALINA_HOME,并全部替换为CATALINA_HOME_8080(与环境变量名保持一致)

3.在tomcat-8080/bin目录下,找到tomcat8.exe和tomcat8w.exe,重命名为SERVICE_NAME配置的名字一致,这里重命名为tomcat8080.exe和tomcat8080w.exe

4.使用命令行进入tomcat-8080/bin,执行service.bat install

5.然后双击修改后的tomcat8080w.exe打开如图:


更多