20200830154244

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.jartomcat-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 &quot;%r&quot; %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使新的日志目录生效,可查看日志文件确认是否更改成功。

发表评论