先要提供jdk-7u9-linux-x64.rpm(如以上版本)

安装jdk(java需要用到的编译开发工具)

[root@libincla ~]# rpm -vih jdk-7u9-linux-x64.rpm
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
    rt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/rt.pack
    jsse.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/jsse.pack
    charsets.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/charsets.pack
    tools.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/lib/tools.pack
    localedata.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/ext/localedata.pack

安装完后会在/usr/java里出现

image

将JDK提供一些功能编辑到/etc/profile.d/java.sh,以便方便使用。

image

source一下配置文件,使用命令 java -version查看java虚拟机的信息。

[root@libincla ~]# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

下一步,安装tomcat,把tomcat安装到/usr/local目录下。

[root@libincla ~]# tar xf  apache-tomcat-7.0.42.tar.gz  -C  /usr/local

它会生成一个叫apache-tomcat-7.0.42的目录,为了方便以后的定义配置简便快捷,可以创建一个链接叫tomcat。

[root@libincla local ]# ln -sv apache-tomcat-7.0.42  tomcat
`tomcat' -> `apache-tomcat-7.0.42'

默认tomcat要部署的应用程序的目录为

[root@libincla webapps]# pwd
/usr/local/tomcat/webapps
[root@libincla webapps]# ls
docs  examples  host-manager  manager  ROOT

在tomcat目录中有个work目录,用来将webapps存放的文件编译成.class结尾的类文件。

强烈推荐将tomcat中bin目录下的脚本文件导出至系统,需要编辑/etc/profile.d/tomcat.sh,在里面添加

image

[root@libincla manager]# catalina.sh version(这里运行成功表示可以看到tomcat的版本以及CPU名称,架构等等信息)
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/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-431.el6.x86_64
Architecture:   amd64
JVM Version:    1.7.0_09-b05
JVM Vendor:     Oracle Corporation
[root@libincla manager]# version.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java

比较规范的作法是用catalina.sh调用/usr/local/tomcat/bin下的脚本,查看catalina。sh的帮助信息。

[root@libincla manager]# catalina.sh --help
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/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 current window
  run -security     Start in the current window with security manager
  start             Start Catalina in a separate window
  start -security   Start in a separate window with security manager
  stop              Stop Catalina, waiting up to 5 seconds for the process to end
  stop n            Stop Catalina, waiting up to n seconds for the process to end
  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
  stop n -force     Stop Catalina, wait up to n seconds and then 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 you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined

由于catalina默认监听在8080端口上,在启动之前首先要保证你的8080端口没有被占用,然后在去开启服务,catalina.sh start

[root@libincla manager]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@libincla manager]# ss -tnlp | grep 8080
LISTEN     0      100                      :::8080                    :::*      users:(("java",4760,40))

然后客户端win7访问一下,汤姆猫就算安装成功啦。

image

=========================================================================

tomcat:是由java编程语言编写的web container(Servlet,JSP),每个java项目运行起来以后都表现为一个jvm进程。它的运行过程大概是tomcat由classloader装载到JVM上运行的。

JDK主要提供JVM虚拟机,而JVM虚拟机自己有版本的依赖性。而运行在JVM虚拟机上的java程序却没有依赖性。

tomcat安装时生成的各目录以及定义,例如:

[root@libincla bin]# cd /usr/local/tomcat/
[root@libincla tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

bin目录:

[root@libincla tomcat]# cd bin/
[root@libincla bin]# ls
bootstrap.jar                 configtest.bat  memcached-session-manager  startup.bat           version.bat
catalina.bat                  configtest.sh   msm                        startup.sh            version.sh
catalina.sh                   cpappend.bat    setclasspath.bat           tomcat-juli.jar
catalina-tasks.xml            daemon.sh       setclasspath.sh            tomcat-native.tar.gz
commons-daemon.jar            digest.bat      shutdown.bat               tool-wrapper.bat
commons-daemon-native.tar.gz  digest.sh       shutdown.sh                tool-wrapper.sh

提供java的各种脚本,以及自举的jar文件。(自举就是当你启动tomcat的时候,默认并不是启动tomcat,而是JVM,还要tomcat自己在JVM上运行。该过程就是tomcat先启动JVM,再由JVM启动装载自己的过程。)

conf:配置文件目录  server.xml(配置的主文件),tomcat-users.xml(tomcat实现用户认证时, tomcat自己的账号密码) web.xml(tomcat的部署描述符文件)

这里***一个部署的概念,部署(deployment)就是java应用程序放在指定路径下,让JVM能够找到它,让web container找到它,必要时访问web资源能够自动加载这个应用程序的所有类文件的过程。

logs:日志,log4j(独特类)java内部专用日志管理的专用类。

lib:库文件和类库文件

temp 临时文件目录

webapps:应用程序部署的位置、路径。

work:把webapps下的所有jsp格式的页面程序文件转换成Servlet程序文件并编译成class文件,编译完的class文件都放到work目录。

重点是tomcat的配置文件都定义了哪些?

[root@libincla tomcat]# cd conf/
[root@libincla conf]# ls
Catalina  catalina.policy  catalina.properties  context.xml  logging.properties  server.xml  tomcat-users.xml  web.xml

主配置文件 server.xml

上下文文件 context.xml:每个webapp都有它自己的默认配置文件,此类配置文件正式用于部署为当前tomcat实例上所有的webapp目录下的META-INF目录中,通常用于定义会话管理器,Realm以及JDBC等。

部署描述符文件 web.xml  部署为当前tomcat实例上所有的webapp目录下提供默认部署的描述符。通常用于为webapp提供基本的Servlet定义和MEM映射表。

用户账号文件、tomcat-users.xml

catalina的策略 catalina.policy 当基于-security选项启动tomcat实例时会读取此配置文件,用于定义java的安全策略,配置访问codebase或某些java类权限。

catalina的属性 catalina.properties :Java 属性定义的文件,用于设定类加载器路径/安全包列表,以及一些调整jvm性能的信息。

logging.properties:定义日志相关的配置信息,如日志级别、文件路径等信息.

tomcat的主配置文件:

每个组件由java类实现,有些组件的实现方式不止一种,有多个组件组成,有些组件可以嵌套别人的组件。

image

补充一个概念 路径别名,将一个url路径映射至非当前网站站点根目录下的其他目录资源中去。

下面一起来看看server.xml这个主配置文件

image

image CATALINA工作起来的端口。

tomcat的工作端口 8005唯一可以接受的就是SHUTDOWN指令,用telnet连接 127.0.0.1 8005可以发送SHUTDOWN让java进程关闭掉。

[root@libincla tomcat]#  telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN  
Connection closed by foreign host

现在再查看服务,

image

另外在主配置文件中分别定义了不同的connector

1、监听在8080的连接器,可以负责响应前段的http请求

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

2、监听在8009的连接器,实现与当你的前段使用apache反向代理过来使用的ajp协议。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

再次启动tomcat可以使用catalina.sh start

[root@libincla tomcat]# catalina.sh start

当你在开启tomcat以后,在work目录中就有这些目录

image 其中最后的index_jsp.java就是index的源码,index_jsp.class就是index的类文件。我们响应给用户的就是编译好运行的index_jsp.class

下面这个主页

image

是由/tomcat/webapps/ROOT提供的

image

tomcat自带了两个webapp

manager  app(server status)webapp 部署

host-manager (各虚拟主机的管理器)

点击主页上的Manager App会出现要求用户认证的信息

image

如何点“取消”,就出现如下画面,并提示你从哪提供认证信息。

image

如果想要编辑,需要编辑/tomcat/conf/tomcat-users.xml文件

在下方任意行中插入:

<role rolename="manager-gui"/>  #定义一个叫manager-gui的角色
<user username="tomcat" password="tomcat" roles="manager-gui"/> #设定账号叫tomcat,密码叫tomcat。

然后catalin.sh stop ; catalina.sh start

[root@libincla conf]# catalina.sh stop ; catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

再次点击Manager App按钮,输入定义的账号密码(都为tomcat),再次访问出现管理页面。

image Page1

image部分解释。

image Page2

但是,如果用相同的账号密码访问Host-Manager页面,则会出现

image Error Page1

所以重新编辑tomcat-users.xml

[root@libincla conf]# vim tomcat-users.xml 添加一个新的认证的用户叫jerry

<role rolename="admin-gui"/>
<user username="jerry" password="jerry" roles="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

再次catalina.sh stop && catalina.sh start

访问页面。

image 访问成功。

下面将更深入介绍汤姆猫的更多应用。