Tomcat 7 简单定制
Tomcat笔记
安装
wget https://mirrors.huaweicloud.com/apache/tomcat/tomcat-7/v7.0.96/bin/apache-tomcat-7.0.96.tar.gz
tar zxvf apache-tomcat-7.0.96.tar.gz
cd apache-tomcat-7.0.96/bin
./startup.sh
配置文件
8005端口是关闭tomcat进程所用。当执行shutdown.sh关闭tomcat时就是连接8005端口执行“SHUTDOWN”命令--由此,我们直接telnet8005端口执行“SHUTDOWN”也可以成功关闭tomcat.
<Server port="8005" shutdown="SHUTDOWN">
由于我们通常使用 kill -9 pid, 改为
<Server port="-1" shutdown="SHUTDOWN">
tomcat7 默认使用bio,现修改为 nio
<Connector port="8080" protocol="HTTP/1.1"
改为
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
8009:apache httpd 反向代理tomcat时就可以使用使用ajp协议反向代理到该端口由于我们使用 Nginx 代理 tomcat,所以注释掉
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改为
<!-- Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
Tomcat 日志优化
默认情况下,Tomcat会产生这些日志
catalina.2019-08-16.log #tomcat运行的一些日志,这些日志还会输出到catalina.out,没用
catalina.out #tomcat的标准输出(stdout)和标准出错(stderr),非常重要,保留
host-manager.2019-08-16.log #虚拟主机日志,没用
localhost.2019-08-16.log #程序异常没有被捕获的时候抛出的地方,如内存溢出,比较重要,保留
localhost_access_log.2019-08-16.txt #tomcat访问日志记录,没用
manager.2019-08-16.log # 管理日志,没用
日志级别
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)
以 catalina.out 为例:
设置日志级别
1catalina.org.apache.juli.FileHandler.level = FINE
禁用日志
1catalina.org.apache.juli.FileHandler.level = OFF
输出所有
1catalina.org.apache.juli.FileHandler.level = ALL
以下为 Tomcat7 的 logging.properties 例子
[root@tomcat1 conf]# egrep -v "^#|^$" logging.properties
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.encoding = UTF-8
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
2localhost.org.apache.juli.FileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
关闭 localhost_access_log.2019-08-16.txt,修改 server.xml
<!-- Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" /> -->
效果如下:
catalina.2019-09-06.log
localhost.2019-09-07.log
catalina.out
日志处理,由于catalina.out日志时间长了会变得很大,需要定时切割。
这里我们使用 lograte 工具
[root@tomcat1 logrotate.d]# cat live
/data/tomcat/live/logs/catalina.out {
daily
dateext
rotate 3
missingok
copytruncate
compress
}
注释:
daily #每天进行
dateext #每天执行一次,同时转储旧日志时用日期格式"YYMMDD"代替简单的数字作为标记
rotate 3 #只保留3个副本
missingok #如果要轮转的文件丢失了,继续轮转而不报错
copytruncate #创建新的catalina.out副本后,截断源catalina.out文件
compress #压缩