Tomcat7的基本配置
运行环境:Ubuntu 14.04,Tomcat7.0.52.0
Tomcat7在阿里云和华为云经历过不同的环境部署,阿里云依靠主机自带的磁盘(高效云盘)即可满足基本使用,华为云(私有云)的主机自带的磁盘由于是SATA盘,主要是使用挂载的SAS或者SSD盘,将程序运行的目录和日志目录放在挂载的盘。下面总结部署Tomcat7需要调整的几方面。
1.设置JVM运行的相关变量
编辑Tomcat7启动脚本/usr/share/tomcat7/bin/catalina.sh
,在原有代码的最前方加入以下内容:
JAVA_OPTS="-server -Xms1024m -Xmx8192m -XX:PermSize=128M -XX:MaxPermSize=256m"
Xms是程序启动占用的内存大小,值大一点启动速度会快点;Xmx是程序所能占用的最大内存,这个值可以是主机内存大小的80%,部署Tomcat7的主机一般占内存的也只有它了;XX:PermSize是设定内存的永久保存区域;XX:MaxPermSize是设定最大内存的永久保存区域。
如果在Tomcat7启动的时候,查看日志输出显示程序在生成SessionID的时间比较长时,可以在上面加入的代码的基础上再加入下面这行内容:
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
加入之后可重启对比加入前后Tomcat7的启动完成时长。
2.设置日志编码格式,中文不会乱码
编辑Tomcat7启动脚本/usr/share/tomcat7/bin/catalina.sh
,在原有关于JAVA_OPTS
的参数设置之后再加入以下内容:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
这样能保证Tomcat7的日志文件catalina.out
的内容中文不会乱码。
3.多台Tomcat7使用Redis实现Session共享
多台Tomcat7设置Session共享主要在Tomcat7的lib加入两个所需的lib包以及在Tomcat7的配置文件目录的context.xml
文件中配置Redis的相关参数以实现Session共享。所需的lib包分别为jedis-2.2.0.jar
和tomcat-redis-session-manager-1.2-tomcat-7.jar
。
将两个jar包上传到Tomcat安装目录下的lib
文件夹下,例如这边默认的位置是/usr/share/tomcat7/lib
。上传完成后还需要设置两个jar的文件权限:
#chmod 777 jedis-2.2.0.jar #chmod 777 tomcat-redis-session-manager-1.2-tomcat-7.jar
编辑Tomcat7的context.xml
配置文件,设置Redis的相关参数,在配置中加入:
<!--tomcat-redis-session-manager--> <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="127.0.0.1" port="6379" password="foobar" database="0" maxInactiveInterval="60" />
至此,在Tomcat7使用Redis实现Session共享的配置已完成。
4.更改Tomcat7的应用发布目录的路径
在Tomcat7的配置文件目录的server.xml
文件中编辑<Host></Host>
标签中编辑appBase
的值,appBase原本的值是默认的webapps:
<Host name="localhost" appBase="/data/webapps" unpackWARs="true" autoDeploy="true"> </Host>
保存配置后,检查你所设置的应用发布目录的所有者是不是tomcat7,如果不是的话还需要变更一下目录的所有者,否则重启后日志会提示权限不足:
#chown -R tomcat7:tomcat7 /data/webapps/
重启Tomcat7使新的应用发布目录生效,可访问Tomcat的地址以及查看日志文件确认是否更改成功。
5.更改Tomcat7的日志目录的路径
确保新的日志文件目录的所有者是tomcat7:
#chown -R tomcat7:tomcat7 /data/logs/
需要调整三个配置文件的内容:
(1)/var/lib/tomcat7/conf/server.xml
<Host></Host>
标签下的<Valve />
标签的directory
属性改为新的日志文件目录:
<Host name="localhost" appBase="/data/webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
(2)/var/lib/tomcat7/conf/logging.properties
所有涉及日志的directory
都改为新的日志文件目录:
1catalina.org.apache.juli.FileHandler.level = FINE # 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.directory = /data/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE # 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.directory = /data/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost.
(3)/usr/share/tomcat7/bin/catalina.sh
Tomcat的启动脚本文件,在文件的顶部有对环境变量作出说明,我们需要设置的变量是CATALINA_OUT
,在文件有效代码的最前方对该变量进行赋值:
CATALINA_OUT="/data/logs/catalina.out" # OS specific support. $var _must_ be set to either true or false. cygwin=false darwin=false os400=false
重启Tomcat7使新的日志目录生效,可查看日志文件确认是否更改成功。