Tomcat的安装部署介绍

一、部署Tomcat

1.安装jdk环境

[root@tomcat ~]# yum -y install java
[root@tomcat ~]# java -version

2.安装tomcat

[root@tomcat ~]# cd /usr/local/src/
[root@tomcat src]# wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.60/bin/apache-tomcat-8.5.60.tar.gz
[root@tomcat src]# tar zxf apache-tomcat-8.5.60.tar.gz
[root@tomcat src]# cd apache-tomcat-8.5.60/
[root@tomcat apache-tomcat-8.5.60]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp
[root@tomcat apache-tomcat-8.5.60]# cd ..
[root@tomcat src]# mv apache-tomcat-8.5.60 /usr/local/tomcat8
[root@tomcat src]# /usr/local/tomcat8/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@tomcat src]# ss -lnpt | grep java
LISTEN     0      1       [::ffff:127.0.0.1]:8005                  [::]:*                   users:(("java",pid=11616,fd=66))
LISTEN     0      100       [::]:8080                  [::]:*                   users:(("java",pid=11616,fd=54))

网页访问:

192.168.229.201:8080

二、多实例部署

1.一台服务器上部署多个tomcat

[root@tomcat src]# cp -ra /usr/local/tomcat8/ /usr/local/tomcat8_2
[root@tomcat src]# cd /usr/local/tomcat8_2/
[root@tomcat tomcat8_2]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp
[root@tomcat tomcat8_2]# cd conf/
[root@tomcat conf]# ls
Catalina             context.xml           logging.properties  tomcat-users.xsd
catalina.policy      jaspic-providers.xml  server.xml          web.xml
catalina.properties  jaspic-providers.xsd  tomcat-users.xml
[root@tomcat conf]# vim server.xml
修改3个端口
<Server port="8006" shutdown="SHUTDOWN">
   <Connector port="8081" protocol="HTTP/1.1"
                  redirectPort="8444" />
[root@tomcat conf]# /usr/local/tomcat8_2/bin/startup.sh
[root@tomcat conf]# ss -lnpt | grep java

2.jps命令

[root@tomcat conf]# yum -y install java-devel
[root@tomcat conf]# jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]
[root@tomcat conf]# jps -lv
[root@tomcat conf]# jps -ml

3.tomcat的server.xml配置文件

[root@tomcat conf]# vim server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
  <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
     <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  <Engine name="Catalina" defaultHost="localhost">
   <Realm className="org.apache.catalina.realm.LockOutRealm">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

4.自定义目录
在host name处添加

[root@tomcat conf]# vim server.xml
...

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
<Context path="/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
</Context>
...
[root@tomcat conf]# mkdir -p /data/project
[root@tomcat conf]# vim web.xml
<param-value>false</param-value>
改为
<param-value>true</param-value>
[root@tomcat conf]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat conf]# /usr/local/tomcat8/bin/startup.sh

5.网页访问
192.168.229.201:8080/shop

[root@tomcat conf]# cd /data/project/
[root@tomcat project]# touch index1.jsp
[root@tomcat project]# touch index2.jsp
[root@tomcat project]# vim meminfo.jsp
<%
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 memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>

三、远程监控

1.Tomcat开启JMX远程调试功能

[root@tomcat project]# cd /usr/local/tomcat8/bin/
[root@tomcat bin]# vim catalina.sh
添加:
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.229.201 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8080 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
[root@tomcat bin]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/lib/management/
[root@tomcat management]# cp jmxremote.password.template jmxremote.password
[root@tomcat management]# vim jmxremote.password
# monitorRole  QED
# controlRole   R&D
改为
monitorRole  asd123
controlRole  asd123
[root@tomcat management]# chmod 600 jmxremote.password
[root@tomcat management]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat management]# /usr/local/tomcat8/bin/startup.sh

2.通过本地机远程连接调用
jconsole
后台管理
需要注释刚才添加在catalina.sh中的内容

[root@tomcat management]# vim /usr/local/tomcat8/bin/catalina.sh
#CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.229.201 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8080 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
[root@tomcat management]# cd /usr/local/tomcat8/webapps/
[root@tomcat webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@tomcat webapps]# cd manager/
[root@tomcat manager]# ls
images  index.jsp  META-INF  status.xsd  WEB-INF  xform.xsl
[root@tomcat manager]# cd META-INF/
[root@tomcat META-INF]# ls
context.xml
[root@tomcat META-INF]# vim context.xml
allow="^.*$" />
[root@tomcat META-INF]# vim /usr/local/tomcat8/conf/tomcat-users.xml
添加:
<role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="manager-gui" password="asd123" roles="manager-gui"/>
  <user username="manager-script" password="asd123" roles="manager-script"/>
[root@tomcat META-INF]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat META-INF]# /usr/local/tomcat8/bin/startup.sh

3.网页访问
192.168.229.201:8080选择manager app
主机管理

[root@tomcat META-INF]# cd /usr/local/tomcat8/webapps/host-manager/
[root@tomcat host-manager]# ls
images  index.jsp  manager.xml  META-INF  WEB-INF
[root@tomcat host-manager]# cd META-INF/
[root@tomcat META-INF]# ls
context.xml
[root@tomcat META-INF]# vim context.xml
allow="^.*$" />
[root@tomcat host-manager]# vim /usr/local/tomcat8/conf/tomcat-users.xml
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="admin-gui" password="asd123" roles="admin-gui"/>
  <user username="admin-script" password="asd123" roles="admin-script"/>
[root@tomcat host-manager]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat host-manager]# /usr/local/tomcat8/bin/startup.sh

网页访问
192.168.229.201:8080选择host manager
4.部署
选择manager app进行相关部署
安全
端口防护
禁用目录浏览
隐藏信息

[root@tomcat host-manager]# vim /usr/local/tomcat8/conf/web.xml
添加:
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
[root@tomcat host-manager]# vim /usr/local/tomcat8/webapps/ROOT/notfound.jsp
<%
out.println("NOT FOUND");
%>
[root@tomcat host-manager]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat host-manager]# /usr/local/tomcat8/bin/startup.sh

5.日志切割

sed -i 's@>> "$CATALINA_OUT" 2>&1 "&"@2>\&1 |/usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-bdqn-%Y-%m-%d.log" \&@g' /usr/local/tomcat8/bin/catalina.sh

6.jvm优化
[root@tomcat management]# vim /usr/local/tomcat8/bin/catalina.sh
机子内存如果是 4G:

CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"

机子内存如果是 8G:

CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"

机子内存如果是 16G:

CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"

机子内存如果是 32G:

CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms16384m -Xmx16384m -Xmn8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"

如果是 8G 开发机

-Xms2048m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=512m

如果是 16G 开发机

-Xms4096m -Xmx4096m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=256m -XX:MaxPermSize=512m

参数说明:

-Dfile.encoding:默认文件编码

-server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的

-Xmx1024m:设置JVM最大可用内存为1024MB

-Xms1024m:设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmn1024m:设置JVM新生代大小(JDK1.4之后版本)。一般-Xmn的大小是-Xms的1/2左右,不要设置的过大或过小,过大导致老年代变小,频繁Full GC,过小导致minor GC频繁。如果不设置-Xmn,可以采用-XX:NewRatio=2来设置,也是一样的效果

-XX:NewSize:设置新生代大小

-XX:MaxNewSize:设置最大的新生代大小

-XX:PermSize:设置永久代大小

-XX:MaxPermSize:设置最大永久代大小

-XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,则年轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5

-XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。

如果设置为0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。

对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

需要注意的是,设置了 -XX:MaxTenuringThreshold,并不代表着,对象一定在年轻代存活15次才被晋升进入老年代,它只是一个最大值,事实上,存在一个动态计算机制,计算每次晋入老年代的阈值,取阈值和MaxTenuringThreshold中较小的一个为准。

-XX:+DisableExplicitGC:这个将会忽略手动调用GC的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何GC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值