Tomcat的基本配置与使用

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat开放源代码,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

实验Linux平台:本次实验使用红帽系的CentOS 7.3

安装tomcat需要先安装Java,下面安装Java编译环境JDK。

JDK有两个版本,一个是Oracle的,另外一个是OpenJDK开源社区版的。这两个版本安装那个都行,在红帽系列的Linux系统Base仓库中集成了OpenJDK的rpm包。我在下面的实验中就使用Base仓库自带的OpenJDK进行安装。
OracleJDK官网:http://www.oracle.com/technetwork/java/index.html
OpenJDK官网 :http://openjdk.java.net/

OpenJDK:

java-VERSION-openjdk :主程序包
java-VERSION-openjdk-headless:运行环境。
java-VERSION-openjdk-devel:开发包

安装相应版本的rpm包,在CentOS 7.3的Base库中有三个版本,1.8、1.7、1.6。

[root@centos7.3 ~]#yum list all java*    #这条命令可以查看所有的yum仓库中的Java包
[root@CentOS7.3 ~]#yum -y install java-1.8.0-openjdk-devel   #安装这个开发包会把主程序包作为依赖包一并安装

注意:如果是去官网下载的包在安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径;

OpenJDK:
        JAVA_HOME=/usr
Oracle JDK:
        JAVA_HOME=/usr/java/jdk_VERSION

注意:多版本并存时,可使用 alternatives命令设定默认使用的版本;
查看当前的java版本:

java  -version

安装Tomcat

tomcat官网提供rpm包和二进制格式的,二进制格式的直接解压到指定路径就可以是使用。
官网:http://tomcat.apache.org/index.html

使用Base仓库

[root@CentOS7.3 ~]# yum -y install tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp

二进制

[root@CentOS7.3 ~]# tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/
[root@CentOS7.3 ~]# cd /usr/local
[root@CentOS7.3 ~]# ln -sv apache-tomcat-VERSION  tomcat

二进制安装后需要指定一下程序路径

vim  /etc/profile.d/tomcat.sh 
export PATH=$PATH:/usr/local/tomcat/bin

tomcat程序环境:

tomcat的目录结构
        bin :脚本,及启动时用到的类;
        conf:配置文件目录;
        lib :库文件,Java类库,jar;
        logs:日志文件目录;
        temp:临时文件目录;
        webapps:webapp的默认目录;
        work:工作目录,主要存放编译后的字节码文件;

使用二进制方式安装,使用catalina.sh 脚本对tomcat服务进行管理

catalina.sh 
        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

注:使用 -security 表示调用conf路径下的catalina.policy安全策略文件。
rpm包安装的程序环境:

### 配置文件目录:/etc/tomcat
主配置文件:server.xml 
webapps存放位置:/var/lib/tomcat/webapps/
Unit File:tomcat.service
环境配置文件:/etc/sysconfig/tomcat

tomcat的配置目录下的文件

server.xml          :主配置文件;
web.xml             :每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置;如果程序的WEB_INF目录中没有定义wem.xml就会继承这个文件的配置。
context.xml         :每个webapp都可以使用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中 ;此文件为所有的webapps提供默认配置;主要用来定义部署webapp时的背景信息。如果程序的WEB_INF目录中没有定义wem.xml就会继承这个文件的配置。
tomcat-users.xml    :用户认证的账号和密码文件;权限配置通过角色(role)实现,将用户添加在角色上就会获取这个角色的权限,此文件在tomcat启动时被装入内存,如果修改必须重启才能生效。
catalina.policy     :当使用-security选项启动tomcat时,用于为tomcat设置安全策略; 
catalina.properties :Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
logging.properties  :日志系统相关的配置;
log4j               :java自带的日志管理系统 

server.xml(主配置文件)

<Server> 服务
      <Listener >   侦听器
      <GlobalNameingResouces> 全局配置
    <Service>容器
        <connector/>  连接器
        <connector/>
            ...
        <Engine>  引擎
            <Host>  主机
                        <Context/> 
                        <Context/>
                    ...
                <Valve> 过滤器
            </Host>
            <Host>
                ...
            </Host>
            ...
        </Engine>
    </Service>
</Server>
顶级组件  :Server
服务类组件:Service
连接器组件:http, https, ajp(apache jserv protocol)
容器类    :Engine, Host, Context,可以在里面部署应用程序
被嵌套类  :valve, logger, realm, loader, manager, ...
集群类组件:listener, cluster, ...

一个server中可以有多个连接器(HTTP、HTTPS、AJP),在server有多个引擎,一个连接器只能连接到一个引擎,但是一个引擎却可以接受多个连接器的请求,在server和引擎中间有一层service(服务),作用是把连接器和引擎连接对应。

在引擎中有多个host的,host是处理请求提供服务,在一个host中可以部署多个程序,通过context实现。

部署(deploy)webapp的相关操作:

deploy:将webapp的源文件放置于目标目录(网页程序文件存放目录),配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问此webapp;将其特有的类和依赖的类通过class loader装载至JVM;

部署有两种方式:在server.xml中定义

  1. 自动部署:auto deploy

  2. 手动部署:手动部署分为冷部署和热部署
    a. 冷部署:把webapp复制到指定的位置,而后才启动tomcat;
    b. 热部署:在不停止tomcat的前提下进行部署;

      热部署工具:manager、ant脚本、tcd(tomcat client deployer)等
    

部署一台host主机

vim /etc/tomcat/server.xml

Engine

host在engine中定义


Host

<Host></Host>:主机配置需要写在Host标签内
name:主机名
appBase:此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;
unpackWARs:是否自动展开host根目录下的war格式的归档文件。
autoDeploy:在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat;
webapp归档格式:Java打包格式

war:webapp的归档文件;这个文件放在站点目录下自动展开。
.jar:EJB的类打包文件(类库);
.rar:资源适配器类打包文件;
.ear:企业级webapp; 

JSP WebAPP的组织结构:

/: webapps的根目录
index.jsp:主页文件; ...还有很多的其他.jsp文件。
WEB-INF/ :当前webapp的私有资源路径,通常用于存储当前webapp的web.xml和context.xml配置文件;不能被用户访问,被tomcat禁止通过web访问。
META-INF/:类似于WEB-INF/;
classes/ :类文件,当前webapp所提供的类;
lib/     :类文件,当前webapp所提供的类,被打包为jar格式;

手动提供一测试类应用,并冷部署:

[root@CentOS7.3 ~]#mkdir  -p  /app/web/ROOT/{classes,lib,WEB-INF}
[root@CentOS7.3 ~]#cd /app/web/ROOT/        #主机的默认应用的配置文件需要放在ROOT目录下
[root@CentOS7.3 ROOT]#vim index.jsp      #编辑一个测试页  
<%@ page language="java" %>
<%@ page import="java.util.*" %>    #导入类库
<html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        <% out.println("hello world");
        %>
    </body>
</html> 

tomcat的网页文件格式是.jsp结尾的

JSP: Java Server Page  
            类库:
            <html>
                <title>TITLE</title>
                <body>
                    <h1>...</h1>
                    <%
                        ... java code...
                    %>
                </body>
            </html>

执行过程:.jsp -->jasper--> .java --> javac --> .class --> jvm
注:编译过程中产生的java文件和class文件保存在toncat/work/Catalina/主机名/应用名/org/apache/jsp目录下
注意:基于jasper将静态输出的数据转为java代码进行输出,结果为servlet规范的代码;


将默认的主机改为test.com

测试

[root@CentOS7.3 ROOT]#systemctl start tomcat        #启动tomcat
[root@CentOS7.3 ROOT]#ss -ntl        #查看监听端口
State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port                 
LISTEN      0      128                     *:22                                  *:*                          
LISTEN      0      100                    :::8080                               :::*       #tomcat的http连接器默认使用8080端口
LISTEN      0      128                    :::22                                 :::*                  
LISTEN      0      1        ::ffff:127.0.0.1:8005                               :::*   #tomcat的管理端口,默认使用127.0.0.1的8005端口
LISTEN      0      100                    :::8009                               :::*     #tomcat的jap连接器,默认使用的8009端口
访问测试页面

热部署主机和应用

将默认主机修改回localhost

host manager


点击取消会进入如下页面

编辑用户配置文件/etc/tomcat/tomcat-users.xml
添加如下内容。需要定义在<tomcat-users></tomcat-users>标签内,

<role rolename="admin-gui"/>   #定义用户角色
<user username="tomcat" password="s3cret" roles="admin-gui"/>    配置用户和密码

默认定义的用户角色
admin-gui 允许通过web访问host manager
admin-script 允许访问文本(命令行)接口
重启tomcat,刷新页面,输入用户名密码

image.png

配置manager

添加manager用户,在tomcat-users.xml文件中

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
manager用户角色:
    manager-gui    允许用户访问基于图形界面的manager和status
    manager-script 允许用户通过命令行接口访问manager和status
    manager-jmx    允许用户通过jmx(java管理扩展)代理访问status页面,jmx可以用来接口tomcat的信息
    manager-status 允许用户查看图形和命令行接口下status信息

也可以再给原来的用户添加一个角色,如下图。

重启tomcat进入manager管理页面


在这个页面中,可以对默认主机的应用进行管理

undeploy:反部署、拆除,停止webapp,并从tomcat实例上卸载webapp;通过manager管理 
start   :启动处于停止状态的webapp;
stop    :停止webapp,不再向用户提供服务;其类依然在jvm上;
redeploy:重新部署;
expire sessions:设置会话的过期时间

添加应用


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容