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

 

posted @ 2018-03-12 22:31  魅力宁波  阅读(340)  评论(0)    收藏  举报