Java web应用服务器--tomcat全攻略
一、安装tomcat
1、部署Java环境
tar zxvf jdk-8u60-linux-x64.tar.gz -C /application
ln -s /application/jdk1.8.0_60 /application/jdk
sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
java --version
2、安装tomcat
tar zxvf appche-tomcat-8.0.27.tar.gz -C /application/
ln -s /application/appche-tomcat-8.0.27 /application/tomcat
echo 'export TOMCAT_HOME=/application/tomcat' >>/etc/profile
source /etc/profile
chown -R root.root /application/jdk /application/tomcat/
二、tomcat目录与重要文件介绍
1、目录介绍
bin 启动、关闭tomcat或者其他功能的脚本目录
conf 配置tomcat的xml和DTD文件
lib 存放web应用能访问的jar包
logs Catalina和其他web应用程序的日志文件
temp 临时文件
webapps web应用程序根目录
work 存放jsp编译出的servlet的.java和.class文件
webapps/docs tomcat帮助文档
webapps/examples web应用实例
webapps/host-manager 管理目录
webapps/manager 管理目录
webapps/ROOT 默认网站根目录
2、tomcat重要文件介绍
logs/catalina.out 日志文件记录所有信息,会越来越大,需要定时清空
conf/server.xml 主配置文件
conf/tomcat-users.xml 用户管理配置文件
三、tomcat配置文件
1、用户管理配置文件
#以下配置用户web页面管理功能的用户验证
vim conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
2、主配置文件
vim conf/server.xml
<Server port="8005" shutdown="SHUTDOWN"/> 控制关闭tomcat的端口和命令
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> tomcat主进程的端口和连接超时
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> httpd连接tomcat端口
<Engine name="Catalina" defaultHost="localhost"> 域名配置
<Host name="" appBase="webapps" unpackWARs="true" autoDeploy="true"> 主机名、配置网站根目录、自动解压war包、程序自动加载
<Valve className="" directory="logs" prefix="" suffix=".txt" pattern=""/> 日志目录、访问日志前缀与后缀,日志记录格式
四、web站点部署
tomcat服务器发布代码的方式有以下两种:
1、直接将程序代码放到webapps/ROOT目录下
2、将程序代码打包成war包上传到webapps/ROOT目录下,或者上传到其他目录然后修改主配置文件如下
<Host name="" appBase="" unpackWARs="" autoDeploy="">
<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
五、tomcat多实例部署
1、将tomcat安装目录复制多份并重命名
2、创建统一的网站程序目录并修改主配置文件如下
mkdir -p /data/www/www/ROOT/
sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"#appBase="/data/www/www"#' /application/tomcat8_1/conf/server.xml
sed -i '22s#8005#8012#;69s#8080#8082#;123s#appBase=".*"#appBase="/data/www/www"#' /application/tomcat8_2/conf/server.xml
3、将所有tomcat程序启动
六、tomcat集群部署
1、在nginx反向代理上定义tomcat节点池
2、在对应网站的server区块中添加一个location语句,将动态内容转发给tomcat节点池处理
七、监控tomcat
1、使用tomcat自带函数做简单监测
cat>>meminfo.jsp<<EOF
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory:"+tm+"MB"+"<br>");
out.println("Free memory:"+fm+"MB"+"<br>");
out.println("Available memory can be used is:"+(mm+fm+tm)+"MB"+"<br>");
%>
EOF
2、使用zabbix监控
1)客户端catalina.sh脚本添加如下内容开启远程监控
sed -i '97a CATALINA_OPTS="$CATALINA_OPTS\n-Dcom.sun.management.jmxremote\n-Dcom.sun.management.jmxremote.port=12345\n-Dcom.sun.management.jmxremote.authenticate=false\n-Dcom.sun.management.jmxremote.ssl=false\n-Djava.rmi.server.hostname=172.16.1.41"' /application/tomcat8_1/bin/catalina.sh
2)客户端主机名配置本地解析
3)重启tomcat
4)编译安装zabbix_server,编译选项添加以下选项:--enable-java
5)安装zabbix_java_gateway:yum -y install zabbix-java-gateway
6)启动zabbix_server_gateway:/etc/init.d/zabbix-java-gateway start
7)zabbix服务端配置文件添加如下内容监控tomcat:sed -i -e '217a JavaGateway=127.0.0.1' -e '225a JavaGatewayPort=10052' -e '235a StartJavaPollers=5' /etc/zabbix/zabbix_server.conf
8)重启zabbix_server
9)zabbix web界面创建tomcat主机并链接JMX相关模板
七、tomcat优化
1、安全优化
1)禁用管理端,将webapps目录下除ROOT目录外的其他目录移到tmp目录下并将ROOT目录内的文件也移到tmp目录下
2)降权启动,使用普通用户启动程序
3)telnet管理端口保护,shutdown端口不要设置默认的8005,关闭命令不要设置SHUTDOWN
4)ajp连接端口保护,注释该设置
2、性能优化
1)屏蔽dns解析
<COnnector port="8081" protocol="HTTP/1.1" connectionTimeout="6000" enableLookups="false" acceptCount="800" redirectPort="8443"/>
2)jvm优化
修改catalina.sh脚本,在脚本正式内容第一行添加如下内存优化配置项
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encodingUTF-8 -server -Xms1024m -Xmx1024M -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
参数说明如下:
-server:一定要作为第一个参数,这样在多个CPU时性能会更好
-Xms:最小内存
-Xmx:最大内存,建议该值与Xms都设置为物理内存的一半
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存永久保存区域
-XX:NewSize:一个新的实例的初始内存大小,必须小于Xms
-XX:MaxNewSize:一个新的实例能占用的最大内存,必须小于Xms

浙公网安备 33010602011771号