Tomcat配置详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、Tomcat定义

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的

java基础

Java体系结构包括四个独立但相关的技术:

java编程语言:是使用其他语言所开发的一种能够通过自我解释或者编译的方式转换成机器语言的一种开发环境;

java API:是为该编程语言中提供各种既定的功能模块;开发软件时可以直接使用这些功能模块;而不用在写代码;

java class文件格式:所有利用API开发的源代码都要经过编译以后转换成class格式的字节码;转换后为类文件;

Java VM的主要任务是装载class文件并且执行其中的字节码。Java VM包含一个类装载器(class loader),它可以从程序和API装载class文件;而Java API的类只在程序执行中需要时才会被装载。

Tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现;但由于遵守apache开源协议,tomcat却又为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS.

Tomcat大致是由JDK、servlet和jsp组成的。

所以安装tomcat需要先安装jdk。

安装JDK

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@node1 ~] # ls
anaconda - ks.cfg  install.log.syslog     php - 5.4 . 26.tar .bz2
install.log      jdk - 7u9 - linux - x64.rpm  xcache - 3.1 . 0.tar .bz2
[root@node1 ~] # rpm -ivh jdk-7u9-linux-x64.rpm
[root@node1 ~] # rpm -ql jdk | less
/ etc
/ etc / .java
/ etc / .java / .systemPrefs
/ etc / .java / .systemPrefs / .system.lock
/ etc / .java / .systemPrefs / .systemRootModFile
/ etc / init.d / jexec
/ usr
/ usr / java
/ usr / java / jdk1. 7.0_09
/ usr / java / jdk1. 7.0_09 / COPYRIGHT
[root@node1 ~] # ll /usr/java/
total  4
lrwxrwxrwx   1  root root    16  Mar  23  09 : 18  default  - / usr / java / latest
drwxr - xr - 10  root root  4096  Mar  23  09 : 18  jdk1. 7.0_09
lrwxrwxrwx   1  root root    21  Mar  23  09 : 18  latest  - / usr / java / jdk1. 7.0_09

配置环境变量:

1
2
3
4
5
6
7
8
9
10
[root@node1 ~] # vim /etc/profile.d/java.sh
export  JAVA_HOME = / usr / java / latest
export  PATH = $JAVA_HOME / bin :$PATH
                                                                                                                                                                                                                                                                                                                                                                                                                                                 
[root@node1 ~] # . /etc/profile.d/java.sh
[root@node1 ~] # 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@node1 ~] # tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[root@node1 ~] # ln -sv /usr/local/apache-tomcat-7.0.42 /usr/local/tomcat
` / usr / local / tomcat ' -> `/usr/local/apache-tomcat-7.0.42'
[root@node1 tomcat] # vim /etc/profile.d/tomcat.sh
export  CATALINA_HOME = / usr / local / tomcat
export  PATH = $CATALINA_HOME / bin :$PATH
[root@node1 tomcat] # . /etc/profile.d/tomcat.sh
[root@node1 ~] # catalina.sh version
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@node1 ~] # 测试配置正常
#启动测试
[root@node1 ~] # 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@node1 ~] # netstat -tunlp | grep java
tcp         0       0  ::: 8080                      ::: *                         LISTEN       2010 / java       
tcp         0       0  ::: 8009                      ::: *                         LISTEN       2010 / java       
[root@node1 ~] #

提供启动脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[root@node1 ~] # vim /etc/rc.d/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME = / usr / java / latest
CATALINA_HOME = / usr / local / tomcat
export JAVA_HOME CATALINA_HOME
#exec $CATALINA_HOME/bin/catalina.sh $*
start() {
    $CATALINA_HOME / bin / catalina.sh configtest &>  / dev / null
    if  [ $?  - ne  0  ];then
         echo  "Error in configuration file,check with tomcat configuration file."
         exit  5
    fi
    if  pidof java &>  / dev / null;then
         echo  "Tomcat is running...."
                 exit  4
    else
         exec  $CATALINA_HOME / bin / catalina.sh start
    fi
}
stop() {
   pidof java &>  / dev / null
   if  [ $?  - ne  0  ];then
         echo  "Tomcat is stoped..."
   else
      $CATALINA_HOME / bin / catalina.sh stop
   fi
}
configtest() {
   pidof java &>  / dev / null
   if  [ $?  - eq  0  ];then
         echo  "Tomcat is running,please stop the test."
         exit  3
   else
      exec  $CATALINA_HOME / bin / catalina.sh configtest
   fi
}
version() {
      exec  $CATALINA_HOME / bin / catalina.sh version
}
case $ 1  in
   start)
         start ;;
   stop)
         stop ;;
   restart)
         stop
         sleep  1
         start ;;
   configtest)
         configtest ;;
   version)
         version ;;
   * )
   echo  "Usage: `basename $0` {start|stop|restart|configtest|version}"
   exit  1  ;;
esac
                                                                                                                                                                                                                                                                                                                                                                                                              
[root@node1 ~] # chmod +x /etc/rc.d/init.d/tomcat
[root@node1 ~] # chkconfig --add tomcat
[root@node1 ~] # service tomcat restart
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
#测试正常

二、配置文件详解:

1
2
3
4
5
6
7
8
9
10
11
[root@node1 conf] # ls
Catalina         catalina.properties  logging.properties  server.xml.bak    web.xml
catalina.policy  context.xml          server.xml          tomcat - users.xml
                                                                                                                                                                                                                                    
#server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
#web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
#tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
#catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
#catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat6在启动时会事先读取此文件的相关设置;
#logging.properties: Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;
#context.xml:所有host的默认配置信息;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[root@node1 conf] # vim server.xml
<?xml version = '1.0'  encoding = 'utf-8' ?>
<Server port = "8005"  shutdown = "SHUTDOWN" >
#port: 接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005;
shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;
   <Listener className = "org.apache.catalina.security.SecurityListener"  / >
#className用于实现此Server容器的完全限定类的名称,默认为org.apache.catalina.core.StandardServer;
   <Listener className = "org.apache.catalina.core.AprLifecycleListener"  SSLEngine = "on"  / >
   <Listener className = "org.apache.catalina.core.JasperListener"  / >
   <Listener className = "org.apache.catalina.core.JreMemoryLeakPreventionListener"  / >
   <Listener className = "org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"  / >
   <Listener className = "org.apache.catalina.core.ThreadLocalLeakPreventionListener"  / >
   <GlobalNamingResources>