设为首页 收藏本站
查看: 664|回复: 0

[经验分享] Tomcat专题二: JDK安装以及tomcat基本环境安装和使用

[复制链接]

尚未签到

发表于 2018-11-30 06:15:34 | 显示全部楼层 |阅读模式
  

  tomcat专题二:jdk安装以及tomcat基本安装和使用
  

      书接tomcat专题一,在这一节将介绍一下java运行环境的安装以及tomcat的基本安装和使用。可能有人会问安装tomcat跟java运行环境有什么关系?正像专题一介绍的那样,tomcat本身只是一个业务框架,一个WEB容器,其底层还是基于jvm虚拟机来运行java程序的字节码文件。可以认为tomcat负责接受上层的应用请求,然后将请求的java程序交与jvm虚拟机执行并返回结果,这之间形成了一个调用关系,这在下面的tomcat启动时我会点出来。
  
  系统环境准备:
  OS: CentOS 6.4x64
  software:  /root/soft
  jdk:   jdk-7u51-linux-x64.tar.gz
  tomcat:  apache-tomcat-7.0.42.tar.gz
  
  1.JDK安装
      在生成环境中,安装java环境都是选择安装JDK,既包括JRE,也包括其它一些开发使用的java类库。
  
  安装过程:
  [root@node10 soft]# ls
  apache-tomcat-7.0.42.tar.gz  jdk-7u51-linux-x64.tar.gz
  [root@node10 soft]# tar  -zxvfjdk-7u51-linux-x64.tar.gz
  [root@node10 soft]# ls
  apache-tomcat-7.0.42.tar.gz  jdk1.7.0_51 jdk-7u51-linux-x64.tar.gz
  [root@node10 soft]# mv jdk1.7.0_51 /usr/local/jdk1.7
  [root@node10 soft]# cd /usr/local/
  [root@node10 local]# ls
  bin  etc  games  include jdk1.7  lib  lib64 libexec  sbin  share src
  [root@node10 local]#
  
      经过上面的过程,jdk软件包已经安装到系统中了。安装看起来很简单,不用怀疑,安装过程就是这么的简单。但是有人疑问了,这个时候如果你在系统中执行java命令或者javac命令,返回的结果将是没有这个命令。看下面的测试:
  
  [root@node10 local]# java
  -bash: /usr/bin/java: No suchfile or directory
  [root@node10 local]# javac
  -bash: javac: command notfound
  [root@node10 local]
  
      这时有人可能就怀疑了,不是说jdk已经安装好了吗,为什么执行命令报没有找到命令呢。这个问题就涉及到系统环境变量的问题。在linux系统中有一个特殊的环境变量PATH(其实在任何操作系统中都有),该变量保存了系统常见命令所在的路径信息,当执行命令时,shell默认会依次查找PATH变量中导出的路径中是否有该可执行文件,如果有就会顺序执行并返回结果,如果没有就会报没有发现这个命令。
      通常来说软件的安装有三种形式,一种是rpm包安装,rpm包安装的软件都是经过特殊的定制,会按照系统的根文件系统目录树架构将所要安装的软件包所包含的文件放到相应的目录中,因此rpm包安装的软件,安装之后就可以执行命令;而另外两种方式,一个是二进制文件解压安装,一个是源码包编译安装,这两种方式通常是自行指定路径,因此安装的文件不再系统默认的路径下面,所以当执行命令时,在PATH变量所导出的路径中找不到相关可执行文件就会报错。因此,上面所执行的java或者javac命令的报错就是这个原因。
  
  设置JDK环境变量:
  [root@node10 local]# vim/etc/profile
  在该文件的最后,添加如下内容:
  JAVA_HOME=/usr/local/jdk1.7
  JRE_HOME=$JAVA_HOME/jre
  PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/rt.jar
  export JAVA_HOME JRE_HOMEPATH CLASSPATH
  
  保存退出
  root@node10 local]# source/etc/profile   //重新加载该文件
  [root@node10 local]# java
  Usage: java [-options] class[args...]
             (to execute a class)
     or java [-options] -jar jarfile [args...]
             (to execute a jar file)
  where options include:
      -d32     use a 32-bit data model if available
      -d64     use a 64-bit data model if available
      -server     to select the "server" VM
                    The default VM is server.
  
      -cp
      -classpath
                    A : separated list ofdirectories, JAR archives,
                    and ZIP archives to searchfor class files.
      -D=
                    set a system property
      -verbose:[class|gc|jni]
    ..................此处省略显示信息         
  [root@node10 local]# javac
  Usage: javac
  where possible optionsinclude:
    -g                         Generate all debugginginfo
    -g:none                    Generate no debugging info
    -g:{lines,vars,source}     Generate only some debugging info
    -nowarn                    Generate no warnings
    -verbose                   Output messages about whatthe compiler is doing
    -deprecation               Output source locations wheredeprecated APIs are used
    -classpath           Specify where to find user classfiles and annotation processors
    -cp                  Specify where to find userclass files and annotation processors
    -sourcepath          Specify where to find input sourcefiles
    -bootclasspath       Override location of bootstrap classfiles
    -extdirs             Override location of installedextensions
    -
  .........................此处省略显示信息
  
  
      从上面的信息可见,通过导出java的环境变量,java和javac命令就可以正确执行了。
  
      到此,jdk的安装就结束了。
  
  
  
  2.tomcat基本安装使用
      tomcat的安装和JDK类似,这里也是采用二进制安装包进行安装
  
  安装步骤:
  [root@node10 soft]# ls
  apache-tomcat-7.0.42.tar.gz  jdk-7u51-linux-x64.tar.gz
  [root@node10 soft]# tar -zxvf apache-tomcat-7.0.42.tar.gz
  [root@node10 soft]# ls
  apache-tomcat-7.0.42  apache-tomcat-7.0.42.tar.gz  jdk-7u51-linux-x64.tar.gz
  [root@node10 soft]# mv apache-tomcat-7.0.42 /usr/local/tomcat7
  [root@node10 soft]# cd  /usr/local/
  [root@node10 local]# ls
  bin  etc games  include  jdk1.7 lib  lib64  libexec sbin  share
  src  tomcat7
  [root@node10 local]#
  
      到这里,tomcat软件也安装完成了。
  
  启动tomcat软件:
  [root@node10 tomcat7]# pwd
  /usr/local/tomcat7
  [root@node10 tomcat7]# ls
  bin  conf lib  LICENSE  logs NOTICE  RELEASE-NOTES  RUNNING.txt temp  webapps  work
  [root@node10 tomcat7]# cd  bin/
  [root@node10 bin]# ls
  bootstrap.jar       commons-daemon.jar            cpappend.bat  setclasspath.bat  startup.bat           tool-wrapper.bat
  catalina.bat        commons-daemon-native.tar.gz  daemon.sh    setclasspath.sh   startup.sh            tool-wrapper.sh
  catalina.sh         configtest.bat                digest.bat    shutdown.bat      tomcat-juli.jar       version.bat
  catalina-tasks.xml  configtest.sh                 digest.sh     shutdown.sh       tomcat-native.tar.gz  version.sh
  [root@node10 bin]#
  
      从上面的信息可见,在bin目录下是一堆的脚本文件用来控制tomcat的启动,停止。其中.bat是基于windows平台的,.sh是基于linux平台的。这里面有个特殊的脚本就是catalina.sh,其实tomcat是一个学名,而tomcat的代码名称叫做catalina。因此这个脚本既可以控制tomcat的启动,停止,还可以查看关于tomcat自身的一些相关信息,下面一一来介绍:
  
  
  启动tomcat:
  [root@node10 bin]#./startup.sh   //该命令用来在linux下启动tomcat
  Using CATALINA_BASE:   /usr/local/tomcat7
  Using CATALINA_HOME:   /usr/local/tomcat7
  Using CATALINA_TMPDIR:/usr/local/tomcat7/temp
  Using JRE_HOME:        /usr/local/jdk1.7/jre
  Using CLASSPATH:      /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
  [root@node10 bin]#
     
      这里观察一下tomcat的启动输出信息,是不是看到了JRE_HOME,对,这就是此前导出的java运行环境的变量JRE_HOME,从这里可以看出,tomcat调用了java虚拟机:jvm。因此要想tomcat正常工作,则必须安装JDK或者JRE。
  查看catalina的输出日志:
  [root@node10 logs]# pwd
  /usr/local/tomcat7/logs
  [root@node10 logs]# ls
  catalina.2014-11-16.log  host-manager.2014-11-16.log  localhost_access_log.2014-11-16.txt
  catalina.out             localhost.2014-11-16.log     manager.2014-11-16.log
  
      切换到tomcat的日志目录,在该目录下默认会有好几个日志文件,这里先关注下catalina.out文件,其它的会在tomcat体系结构中详细解释
      catalina.out文件之tomcat启动时的所有信息的输出文件,该文件还会记录tomcat的访问详细记录信息,因此该文件是了解tomcat工作正常与否的重要文件。所有关于tomcat的排错都要依赖查看此文件的信息。就包括tomcat是否正常启动,也要查看该文件、
  
  [root@node10 logs]# tail -fcatalina.out
  Nov 16, 2014 11:57:10 PMorg.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying webapplication directory /usr/local/tomcat7/webapps/examples
  Nov 16, 2014 11:57:10 PMorg.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web applicationdirectory /usr/local/tomcat7/webapps/manager
  Nov 16, 2014 11:57:10 PMorg.apache.coyote.AbstractProtocol start
  INFO: StartingProtocolHandler ["http-bio-8080"]
  Nov 16, 2014 11:57:10 PMorg.apache.coyote.AbstractProtocol start
  INFO: Starting ProtocolHandler["ajp-bio-8009"]
  Nov 16, 2014 11:57:10 PMorg.apache.catalina.startup.Catalina start
  INFO: Server startup in 10039ms
  
      上面的信息是查看catalina.out文件显示的信息,只有看到最后的几个start信息,以及server startup信息,并确保没有任何的错误信息输出,此时才能表明tomcat已经正常启动并可以使用了。
  

      这里要强调一下的是,在生成环境中,因为线上的程序部署根据其程序的大小等部署时长不一样,这就导致了tomcat启动的时候也不一样,因此当你使用startup.sh启动tomcat程序后,发现无法访问页面,但是查看tomcat监听的端口也正常监听,这个时候你就要注意很有可能是你的tomcat启动还没有完成,还处在部署程序的过程中。因此通常最好的习惯是,查看catalina.out文件确保tomcat程序启动完成。
  
      从上面的信息可见,tomcat默认监听的http协议端口是8080端口,下面来访问下tomcat的测试页:

  

  当看到上面的测试页正常显示时,表明tomcat软件本身已经成功安装。
  
  停止tomcat:
  [root@node10 bin]#./shutdown.sh
  Using CATALINA_BASE:   /usr/local/tomcat7
  Using CATALINA_HOME:   /usr/local/tomcat7
  Using CATALINA_TMPDIR:/usr/local/tomcat7/temp
  Using JRE_HOME:        /usr/local/jdk1.7/jre
  Using CLASSPATH:      /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
  [root@node10 bin]#
  
  
  catalina.sh脚本:
      该脚本非常重要,其实startup.sh,shutdown.sh都是调用该脚本来完成tomcat的启动和停止工作,查看下该脚本的使用:
  [root@node10 bin]#./catalina.sh --help
  Using CATALINA_BASE:   /usr/local/tomcat7
  Using CATALINA_HOME:   /usr/local/tomcat7
  Using CATALINA_TMPDIR:/usr/local/tomcat7/temp
  Using JRE_HOME:        /usr/local/jdk1.7/jre
  Using CLASSPATH:      /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
  Usage: catalina.sh ( commands... )
  commands:
    debug             Start Catalina in a debugger
    debug -security   Debug Catalina with a security manager
    jpda start        Start Catalina under JPDA debugger
    run               Start Catalina in the currentwindow
    run -security     Start in the current window with securitymanager
    start             Start Catalina in a separatewindow
    start -security   Start in a separate window with securitymanager
    stop              Stop Catalina, waiting up to 5seconds for the process to end
    stop n            Stop Catalina, waiting up to nseconds for the process to end
    stop -force       Stop Catalina, wait up to 5 seconds andthen use kill -KILL if still running
    stop n -force     Stop Catalina, wait up to n seconds andthen use kill -KILL if still running
    configtest        Run a basic syntax check on server.xml- check exit code for result
    version           What version of tomcat are yourunning?
  Note: Waiting for the processto end and use of the -force option require that $CATALINA_PID is defined
  
      从上面的信息可以看出,catalina.sh自身就可以实现tomcat的停止,启动等工作,还能设置以什么样的方式启动和停止,还能查看tomcat自身的版本信息。
  example:
  [root@node10 bin]#./catalina.sh version
  Using CATALINA_BASE:   /usr/local/tomcat7
  Using CATALINA_HOME:   /usr/local/tomcat7
  Using CATALINA_TMPDIR:/usr/local/tomcat7/temp
  Using JRE_HOME:        /usr/local/jdk1.7/jre
  Using CLASSPATH:      /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
  Server version: ApacheTomcat/7.0.42
  Server built:   Jul 2 2013 08:57:41
  Server number:  7.0.42.0
  OS Name:        Linux
  OS Version:     2.6.32-279.el6.x86_64
  Architecture:   amd64
  JVM Version:    1.7.0_51-b13
  JVM Vendor:     Oracle Corporation
  [root@node10 bin]#】
  
  关于其它的使用选项自行研究,不是很难。
  
  
  3.使用jdk提供的命令监控jvm的运行状况
    sun jdk免费提供了监控和故障处理命令,在jdk的bin目录下

jps:jvm process status tool:显示指定系统内所有的hotspot进程。每一个jvm虚拟机就显示一个bootstrap

示例

[root@node10 bin]# ps aux | grep tomcat

root      4373 25.310.6 954360 52888 pts/0    Sl   00:19   0:02 /usr/local/jdk1.7/jre/bin/java-Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar-Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7-Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrapstart

root      4404  0.0 0.1 103240   844 pts/0    S+  00:20   0:00 grep tomcat

[root@node10 bin]# jps

4405 Jps

4373 Bootstrap

[root@node10 bin]#


    从上面的信息可以看到,系统中运行了一个tomcat进程,其进程好是4373,在使用jps查看时,发现显示了一个bootstrap,其限制的id号也是4373.因此一个bootstrap就代表了一个jvm。



jstat, jvm sttistics monitoring tool: 收集并显示hotspot虚拟机各方面的数据信息

示例:

[root@node10 bin]# jstat -gcnew 4373

S0C    S1C   S0U    S1U   TT MTT DSS      EC       EU    YGC     YGCT  

576.0  576.0   0.0  576.0  1  15  288.0  4800.0   2399.2     19   0.067

[root@node10 bin]#


关于jstat这个命令,功能非常强大,之后会专门介绍一下。


jinfo:显示正在运行的hotspot虚拟机配置信息

示例:

输出的信息比较多,这里就不贴了,请自行查看。


jmap:生成某hotspot虚拟机的内存转储快照

示例

[root@node10 bin]# jmap 4373

Attaching to process ID 4373, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.51-b03

0x0000000000400000   7K     /usr/local/jdk1.7/jre/bin/java

0x0000003ae4c00000   153K   /lib64/ld-2.12.so

0x0000003ae5000000   22K    /lib64/libdl-2.12.so

0x0000003ae5400000   1873K  /lib64/libc-2.12.so

0x0000003ae5800000   142K   /lib64/libpthread-2.12.so

0x0000003ae6000000   584K   /lib64/libm-2.12.so

0x0000003ae6400000   45K    /lib64/librt-2.12.so

0x0000003ae7000000   111K   /lib64/libresolv-2.12.so

0x0000003ae7400000   91K    /lib64/libgcc_s-4.4.6-20120305.so.1

0x00007f2b5886e000   26K    /lib64/libnss_dns-2.12.so

0x00007f2b58c8a000   250K   /usr/local/jdk1.7/jre/lib/amd64/libsunec.so

0x00007f2b60034000   44K    /usr/local/jdk1.7/jre/lib/amd64/libmanagement.so

0x00007f2b6026d000   112K   /usr/local/jdk1.7/jre/lib/amd64/libnet.so

0x00007f2b60484000   89K    /usr/local/jdk1.7/jre/lib/amd64/libnio.so

0x00007f2b6131c000   120K   /usr/local/jdk1.7/jre/lib/amd64/libzip.so

0x00007f2b61537000   64K    /lib64/libnss_files-2.12.so

0x00007f2b61755000   214K   /usr/local/jdk1.7/jre/lib/amd64/libjava.so

0x00007f2b61980000   63K    /usr/local/jdk1.7/jre/lib/amd64/libverify.so

0x00007f2b61c8f000   14786K/usr/local/jdk1.7/jre/lib/amd64/server/libjvm.so

0x00007f2b62af8000   103K   /usr/local/jdk1.7/jre/lib/amd64/jli/libjli.so

[root@node10 bin]#



jconsole:可视化jvm管理控制台

    在使用jconsole之前,有个要注意的地方就是一定要设置好主机名和ip地址的映射关系,即要在host中添加一条记录

例如,我这里为:

#vim /etc/hosts

172.16.1.20  node10.lxm.com


示例:

#jconsole




在上面出现的窗口中,选择一个正在运行的jvm实例,然后点击connect按钮即可。

但是在jdk1.7中可能会有一个ssl连接的提示,且默认是ssl连接,连接失败,如下所示:




由上图所示提示连接失败,此时选择:insecure connection,则会使用非ssl的方式进行重新连接,此时连接成功:

  


  

从上面的监控窗口中,可以看到很多jvm的运行状态,具体有哪些就不一一介绍了,自己分析下很容易了解。



远程连接jvm实例:

    上面的连接是连接本地的jvm实例,如果想远程监控jvm实例怎么办呢,只要进行下面的设置。

1)在服务器端设置jvm实例参数:

例如我这里的jvm服务器为:172.16.1.20

#vim /usr/local/tomcat7/bin/catalina.sh

在#OS specific support的下方加一行内容:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1090  "  


注意:这里设置的是jvm实例用于远程连接的端口号,该端口号可以根据自己的需要任意设置,显然不能和系统上已经有的端口号冲突。


2)监控端设置

#vim /etc/hosts

添加一行内容:

172.16.1.20  node10.lxm.com(被监控jvm实例的主机名)

#jconsole


  

  如上图所示,在remote process输入远程的主机名和端口号即可,点击connect

提示安全的连接失败,点击insecure connection:


从上面的信息可见,连接成功。



  jvisualvm:可视化虚拟控制台  
  #jvisualvm

  

      好,到此为止,tomcat专题二就介绍到这里。这一节主要聊一下jdk的安装已经tomcat的安装及基本使用,包括jvm虚拟机的一些监控。下一节将详细聊一聊,tomcat自身的体系结构以及主要配置文件的解析。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641268-1-1.html 上篇帖子: tomcat6和tomcat7管理员配置的区别 下篇帖子: Tomcat JDBC pool源码部析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表