Tomcat相关记录
1.从页面接收到的中文参数变成了乱码:
<Connector URIEncoding="UTF-8" port="43002" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可能是这里没有指定URIEncoding的缘故
2.关于在idea中配置tomcat,一定要记得在这里指定application context,我因为没设置这里结果一直报404.
3.第二条,修改后发现访问路径可以自己随意设置,但是部署到服务器后访问的项目名又变回来了。此时可以直接修改项目文件夹的名字。
比如说你的项目部署位置在%CATALINA_HOME%/webapp下,web-backstage/ 是你的项目文件夹,那你访问的项目名就是web-backstage,将它修改为你想要的就可以.
4.关于日志,CATALINA_OUT,它一般指向的是%CATALINA_BASE%/log/catalina.out
catalina.out会记录:
1.标准输出流,System.out,System.err
2.log4j2框架里的Console的logger
3.exception的printStackTrace()方法
4.tomcat的一些运行记录(启动、关闭、错误)
catalina.out的内容会一直增加,最后导致硬盘容量被全部占据。因此需要使用cronolog来分割日志.
首先下载cronolog,由于墙的存在,可能下不下来。从其他地方找吧。然后执行以下命令
tar xf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install
which cronolog #查看被安装到哪里
接着修改tomcat目录bin下的catalina.sh文件
#vi bin/catalina.sh
找到下面这行:
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &
类似这样的行有2处,第一处是tomcat时带“-security”参数的启动,第二处是默认tomcat启动方式,也就是else下面的那部分,我们只修改这里。
另外还要把touch “$CATALINA_OUT"这行注释掉。
完整的修改如下:
# touch "$CATALINA_OUT"
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
"$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &
else
"$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start "2>&1" | /usr/local/sbin/cronolog -S "$CATALINA_BASE"/logs/catalina_ln.out "$CATALINA_BASE"/logs/catalina.%Y-%m-%d-%H.out >> /dev/null &
fi
保存退出
重启Tomcat服务
解决方法:1.使用Log4j或Log4j2来替换默认的日志实现。2.使用
5.与tomcat相关的环境变量有:CATALINA_HOME、CATALINA_BASE,对应的属性在shell中有catalina.home、catalina.base
tomcat的目录结构包括:
bin(运行脚本目录)
conf(配置目录)
lib(核心库目录)
logs(日志目录)
temp(临时目录)
webapps(自动装载的应用程序目录)
work(JVM临时文件目录[java.io.tmpdir])
而如果要部署多个tomcat实例,其实能公用的只有bin和lib目录,其他目录conf、logs、temp、webapps、work每个tomcat实例必须拥有自己独立的备份。
因此catalina.home指向公用信息的位置,就是bin和lib的父目录。
catalina.base指向每个tomcat目录私有信息的位置,就是conf、logs、temp、webapps、work的父目录。
仅运行一个tomcat实例时,这两个属性指向的位置是相同的。
ps.一个主机上部署多个tomcat实例,待研究。
6.linux下安装tomcat,截图子tomcat官网评论区