随着工作中不断的使用Tomcat,以及在以前对Tomcat不熟悉时维护Tomcat服务其中所踩到的坑,想想就在这里总结一下日常管理Tomcat服务器的几点建议,至于Tomcat的安装记得以前有写过,需要可以参看:http://jim123.blog.51cto.com/4763600/1899442,当然这个也是测试安装的说明,实际生产环境可以根据以下内容结合实际修改,在这里建议在使用Tomcat时去官网下载需要使用相应大版本中的最新小版本二进制包。
1、在实际生产环境中一般一台服务器上往往会不止一个Tomcat程序,所以在有一台服务器上有多个Tomcat时就不要定义Tomcat的二进制文件的PATH(/etc/profile.d/tomcat.sh),记得以前写的是只有一个Tomcat测试就顺手定义了一下。
2、在新下载下来的Tomcat中,需要删除那些没有用的说明文件以及在webapps目录下的一切Tomcat默认页面、Tomcat说明文档、示例、默认后台等等,因为在实际生产环境中有这些页面会对Tomcat的版本等相关信息泄露,所以在解压开使用时需要删除webapps目录下一切文件,webapps目录用于存放项目包。
3、在一台服务器上有多个Tomcat时需要注意的是对Tomcat的文件夹规范的重命名,根据实际的使用情况把多个Tomcat统一归档文件夹管理,在解压开未重命名情况下都是以Tomcat的包都是以“apache-tomcat-版本号”的命名,这个绝对需要改的,还有在有在多个Tomcat之间需要注意所监听的端口,莫要让多个Tomcat之间端口冲突,这样新的冲突Tomcat是无法启动的,修改的配置文件是conf目录下的server.xml文件,除非是相应的Tomcat连接数等相关参数调优时,不然不建议项目中的一些配置直接在server.xml文件中修改,其中需要修改的有2个端口,分别是:shutdown和使用的监听端口,可以使用ss工具检查,并且在服务器的防火墙上开启相应的端口:
…略… <Server port="8005" shutdown="SHUTDOWN"> …略… <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> …略…
4、在平时启动Tomcat的时候建议使用bin目录下的startup.sh或startup.bat启动Tomcat,在未对Tomcat的配置参数做出调优调整时,Tomcat的默认缺省使用JVM的内存是新生代和老生代都是2048Mb,这一点需要注意免得一台服务器上部署太多Tomcat,资源不足,当然如果有调优过,那么建议把调优的参数统一写在bin目录下的startup.sh/startup.bat或者是catalina.sh/catalina.bat文件下,总之对Tomcat中使用JVM的内存相关参数需要统一写在一个文件下,以免后期调整Tomcat的内存参数时找不到。
5、在开源Unix系统下默认从源上Java JDK包都是openjdk,实际生产环境中可能并不是使用openjdk,所以在JDK安装时请根据实际情况选择,如果是使用非openjdk的版本时请使用yum或者apt卸载掉openjdk后去Oracle官网下载相应的JDK版本,这个也需要注意使用的版本,请结合实际需要使用的JDK去下载,如果是一台服务器上都是用同一版本,如Linux下建议下载rpm包后用yum本地安装,顺便有缺少的依赖包都解决了,还可以检查。
6、在Tomcat使用自动部署时,尤其是在做旧项目的版本更新是,尤为注意的是在Tomcat的进程没有关闭之前不能移动或者删除项目文件夹webapps中的war包,这个如果做了项目的自动部署的文件就会全没了,一定需要在Tomcat进程关闭后才能操作,特别是在实际生产环境中可能在一个Tomcat下有多个项目包时,所以在使用war做项目包的全量更新时需要注意是否有关闭Tomcat的进程。
7、在使用Tomcat时建议不要使用root用户去启动Tomcat程序,建议把Tomcat使用指定用户在指定用户下启动,当然文件的属组也要对,这样是提高Tomcat服务器的安全性,且开启系统中打开文件的最大句柄数(进程数)和最大线程数,如Centos 6系统下的:
[[email protected] ~]# vim /etc/security/limits.conf …略… * soft nofile 65535 * hard nofile 65535 [[email protected] ~]# echo "ulimit -SHn 65535" >> /etc/rc.local [[email protected] ~]# vim /etc/security/limits.d/90-nproc.conf#根据实际修改,原先1024个线程在实际生产环境中肯定是不够的 # Default limit for number of user‘s processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 65535 root soft nproc unlimited
8、对Tomcat的相关日志做相应的轮替切割,尤其是logs目录下的catalina.out,可以使用系统的logrotate工具,至于logrotate工具以前有做过相应的参数说明,在这里就不做赘述了,可以参看:http://jim123.blog.51cto.com/4763600/1880582,如:
[[email protected] ~]# vim /etc/logrotate.d/tomcat /data/tomcat/web01/logs/catalina.out { copytruncate daily rotate 30 dateext missingok nocompress create 664 tomcat tomcat } [[email protected] ~]# crontab -e 59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.conf