一般在开发环境中,咱们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/shutdown.sh来关闭tomcat。 而在生产环境中,咱们要配置tomcat使其以daemon方式运行,这是由于:javascript
将tomcat配置成守护进程须要借助apache-commons-daemon项目的jsvc工具, 该工具一般包含在tomcat包中(bin/commons-daemon-native.tar.gz)php
1. 配置JAVA_HOME, CATALINA_HOME两个环境变量css
export JAVA_HOME=/opt/jdk export CATALINA_HOME=/opt/tomcat
2. 编译安装jsvchtml
cd $CATALINA_HOME/bin tar -xvf commons-daemon-native.tar.gz cd commons-daemon-1.0.x-native-src/unix ./configure make cp jsvc ../..
3. 建立运行tomcat的普通用户tomcat前端
useradd -s /sbin/nologin tomcat
4. 修改$CATALINA_HOME的所属用户户和用户组,使tomcat能够用tomcat这个普通用户运行java
chown -R $CATALINA_HOME tomcat chgrp -R $CATALINA_HOME tomcat
5. 修改制做tomcat启动脚本linux
$CATALINA_HOME/bin/daemon.sh是tomcat官方为咱们提供的启动脚本,咱们只须要修改便可。nginx
将该脚本复制到/etc/init.d中程序员
cp $CATALINA_HOME/bin/daemon.sh /etc/init.d/tomcat
有注释位置加入chkconfig配置,使得该脚本能够被chkconfig识别,从而配置成开机启动web
#chkconfig: 2345 85 15
因为service命令会去除系统环境变量,所以在脚本开始位置加入如下内容:
JAVA_HOME=/opt/jdk CATALINA_HOME=/opt/tomcat TOMCAT_USER=tomcat
6. 设置tomcat开机启动
chkconfig tomcat on
通过上面的配置,tomcat就可以以守护进程方式运行了,并且会随开机启动而启动。
7. 使用service方式启动关闭tomcat
service tomcat start service tomcat stop
1. 版本安全
升级当前tomcat版本为最新稳定版本。
在升级版本中,须要注意两点:
尽可能避免跨大版本的升级
将当前老版本的server.xml , catalina.sh, web.xml和tomcat-users.xml进行备份,而后部署完新的tomcat后,将这些配置文件覆盖过去。
2. 隐藏版本信息
当tomcat出现404或其它错误时,就会显示当前版本信息,为避免针对某一版本的攻击,咱们应该将其隐藏或假装
版本信息的显示是由一个jar包控制的,该jar包存放在tomcat安装目录下的lib目录下,名称为catalina.jar.
经过jar xf命令解压这个jar包会获得两个目录META-INF和org, 经过修改org/apache/catalina/util/ServerInfo.properties文件中的serverinfo字段来实现更改tomcat版本信息:
[root@localhost ~]# cat org/apache/catalina/util/SererInfo.properties | grep -v '^$|#' server.info=Apache Tomcat/7.0.53 server.number=7.0.53.0 serer.built=Mar 25 2014 06:20:16
固然还有另一种方法来隐藏或假装版本信息,这两种方法本质是同样的:
[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.53/lib [root@localhost lib]# mkdir -p org/apache/catalina/util [root@localhost lib]# cd org/apache/catalina/util [root@localhost util]# vim ServerInfo.properties server.info=nolinux # 若是想修改为其它版本号,把这个地方的值改为其它值就好了
修改完成以后,重启tomcat便可看到效果!
1. 优化web.xml
servlet与其它适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式。经过它能够配置你web应用的相关选项,tomcat在启动的时候会读取这个文件,完成你开发的系统的一些初始化操做。
它能够作以下事情:
因为在生产环境中,tomcat不会直接对公网提供服务,前端确定有apache或nginx,所以,默认主页或自定义错误页,咱们都在前端的apache或nginx中完成;另外也有多是由程序员在项目内的WEB-INF/web.xml中去作定义。
在tomcat新版本中,默认已经禁止列目录功能。
下面是几种觉的功能,在web.xml中的表现形式:
站点默认主页:
自定义错误页:
定义会话超时时间:
禁止列目录:
2. tomcat-user.xml的优化
该文件中包含用户名,角色及密码。 负责提供webapps下manager项目的登陆认证管理。
在生产环境中,咱们须要将该文件所有注释。
3. 优化server.xml
maxThreads链接数限制:
maxThreads是tomcat所能接受的最大链接数。 通常设置不要超过8000, 若是你的网站访问量很是大可以使用多个tomcat实例的方法,即在一个服务器上启动多个tomcat,而后作负载均衡。
tomcat和php不一样,php能够按照cpu和内存的状况去配置链接数,因此上万很正常。 但java还须要注意jvm的参数配置。若是不注意就会由于jvm参数太小而崩溃。
多个虚拟主机:
强烈建议不要使用tomcat的虚拟主机功能,推荐一个tomcat实例启动一个站点。即,能够启动多个tomcat,而不是一个tomcat里包含多个虚拟主机。 由于tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到全部的应用程序。
压缩传输:
tomcat也支持gzip压缩功能。 能够在server.xml配置文件中的Connector节点中配置以下参数,来实现对指定资源类型进行压缩。
compression="on" # 打开压缩功能 compressionMinSize="50" # 启用压缩的输出内容大小,默认为2KB noCompressionUserAgents="gozilla, traviata" # 对于如下的浏览器,不启用压缩 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 哪些资源类型须要压缩
要注意的是,对于文本信息好比txt, html, css,javascript进行压缩,效果很是好。而对文件,图片,视频不要压缩。
4. 管理AJP端口:
AJP是为tomcat与HTTP服务器之间通讯而定制的协议,能提供较高的通讯速度和效率。若是前端是apache的话,会使用到AJP这个链接器,若是是nginx,就用不上了,所以须要注销掉:
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
5. 更改关闭tomcat实例的指令
server.xml中定义了能够直接关闭tomcat实例的管理端口。 咱们经过 telnet链接上该端口以后,输入shutdown便可关闭。值得注意的是,虽然实例关闭了,可是进程仍是存在的。因为默认的端口和指令都很简单,默认端口是8005, 指令为SHUTDOWN. 所以咱们要改得复杂一点(固然,新版本的tomcat管理端口监听在127.0.0.1):
<Server port="8005" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">
6. 更改tomcat服务监听端口:
<Connector port="8080" address="172.16.100.1" />
7.关闭war自动部署:
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
8. 禁用tomcat管理页面:
删除webapps目录下的全部文件,还涉及到管理页面的2个配置文件host-manager.xml和manager.xml也要删除,这两个文件在tomcat安装 目录下的conf/Catalina/localhost目录下。
9. 使用普通用户启动tomcat
在启动以前须要将tomcat安装目录下全部文件的属主和属组都设置为指定的用户。
1. tomcat内存优化
tomcat内存优化主要是对tomcat启动参数优化,咱们能够在tomcat启动脚本catalina.sh中设置JAVA——OPTS参数。
JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
参数说明:
-server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -Xmx java虚拟机可以使用的最大内存; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域
-Xmx 默认为物理内存的1/4, 实际建议不大于4GB;通常建议设置-Xms = -Xmx
-server 必定要做为第一个参数,在多个cpu时性能 佳
-Xms 初始heap大小,使用的最小内存,cpu性能 高时能够设置的大一些