[轉(zhuǎn)][筆記] 3.Tomcat系列之服務(wù)器的基本配置

轉(zhuǎn)自陳明乾的博客古涧,可能有一定更新垂券。

轉(zhuǎn)原文聲明:
原創(chuàng)作品,允許轉(zhuǎn)載羡滑,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章 原始出處 菇爪、作者信息和本聲明。否則將追究法律責(zé)任柒昏。http://freeloda.blog.51cto.com/2033581/1300915

大綱


一凳宙、Tomcat 基本配置

  • 1.為Tomcat提供SysV腳本
  • 2.catalina 腳本講解
  • 3.telnet 登錄管理Tomcat
  • 4.配置Tomcat虛擬主機(jī)
  • 5.Tomcat圖形管理接口
    • manager 管理應(yīng)用程序的部署及監(jiān)控
    • host-manager 虛擬主機(jī)的管理
  • 6.部署JSP網(wǎng)站案例
    • 布署JavaCenter Home(開源的SNS網(wǎng)站)

注,本文的測試的操作系統(tǒng)為 CentOS 6.8 x86_64昙楚,軟件版本為 jdk-8u101近速、apache-tomcat-7.0.70。

軟件下載地址:

一堪旧、Tomcat 基本配置


1.為Tomcat提供SysV腳本


注,在上一篇博文中我們已經(jīng)演示安裝了Tomcat奖亚,這里我們就不在演示淳梦,不清楚的博友可以參考這篇博文,http://freeloda.blog.51cto.com/2033581/1299644昔字,在上一篇博文中我們沒有增加爆袍,SysV腳本,在這篇博文中我們來增加一下作郭,下面我們就來具體演示一下陨囊。

[root@tomcat ~]# vim /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
CATALINA_HOME=/usr/local/tomcat #注意你的腳本路徑
export CATALINA_HOME
# export CATALINA_OPTS="-Xms128m -Xmx256m"
exec $CATALINA_HOME/bin/catalina.sh $*

下面我們來增加執(zhí)行權(quán)限,并加入服務(wù)列表設(shè)置開機(jī)自啟動夹攒,

[root@tomcat ~]# chmod +x /etc/init.d/tomcat
[root@tomcat ~]# chkconfig --add tomcat
[root@tomcat ~]# chkconfig tomcat --list

tomcat 0:關(guān)閉 1:關(guān)閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關(guān)閉

下面我們來啟動一下Tomcat并測試一下蜘醋,

[root@tomcat1 ~]# /etc/init.d/tomcat 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/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

查看一下啟動的端口號,

[root@tomcat1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1094/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1173/master
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      5821/java
tcp        0      0 :::8009                     :::*                        LISTEN      5821/java
tcp        0      0 :::8080                     :::*                        LISTEN      5821/java
tcp        0      0 :::22                       :::*                        LISTEN      1094/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1173/master

測試訪問一下:

Snip20160801_15.png

好了咏尝,到這里Tomcat的SysV腳本增加完成压语,下面我們來說一下catalina腳本。

2.catalina 腳本講解


首先我們來查看一下這個(gè)腳本编检,

[root@tomcat1 ~]# catalina.sh -h
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_101/
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

注胎食,從幫助上來看,這個(gè)腳本使用還是挺簡單的允懂。下面我們來說幾個(gè)常用的選項(xiàng)厕怜,

catalina.sh

  • start 啟動Tomcat
  • stop 關(guān)閉Tomcat
  • configtest 測試配置文件是否有錯(cuò)
  • version 查看Tomcat版本

下面我們就來具體演示一下,

[root@tomcat1 ~]# catalina.sh configtest
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
...
INFO: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
Aug 02, 2016 8:17:49 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Aug 02, 2016 8:17:49 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 02, 2016 8:17:49 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Aug 02, 2016 8:17:49 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1374 ms

注,使用configtest選項(xiàng)時(shí)粥航,得關(guān)閉Tomcat琅捏,不然會報(bào)錯(cuò)。

啟動Tomcat躁锡,

[root@tomcat1 ~]# 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/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

關(guān)閉Tomcat午绳,

[root@tomcat1 ~]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@tomcat1 ~]#

查看Tomcat版本,

[root@tomcat1 ~]# 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/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.70
Server built:   Jun 15 2016 16:27:45 UTC
Server number:  7.0.70.0
OS Name:        Linux
OS Version:     2.6.32-642.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_101-b13
JVM Vendor:     Oracle Corporation

好了映之,catalina腳本拦焚,我們就說到這里了,下面我們來說一下telnet管理Tomcat杠输。

3.telnet 登錄管理Tomcat


注赎败,在說telnet管理Tomcat之前,我們得先看一下默認(rèn)的配置文件蠢甲,這里面定義了默認(rèn)的管理端口僵刮,

[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">

說明,定義了一個(gè)管理端口為8005鹦牛,我們可以用telnet直接登錄進(jìn)本機(jī)的8005端口搞糕,來執(zhí)行SHUTDOWN命令,來關(guān)閉Tomcat實(shí)例曼追。下面我們來具體演示一下窍仰,

先安裝telnet客戶端,

[root@tomcat ~]# yum install -y telnet

下面我們一測試并查看礼殊,

[root@tomcat1 ~]# telnet localhost 8005
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.

[root@tomcat1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1094/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1173/master
tcp        0      0 :::22                       :::*                        LISTEN      1094/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1173/master
[root@tomcat1 ~]#

注驹吮,大家可以看到Tomcat服務(wù)器已經(jīng)關(guān)閉。好了晶伦,telnet管理我們就說到這里碟狞,下面我們來說一下,Tomcat虛擬主機(jī)的配置婚陪。

4.配置Tomcat虛擬主機(jī)


注族沃,在說Tomcat虛擬主機(jī)之前,咱們來詳細(xì)的看看默認(rèn)的配置文件近忙,雖然在上一篇博客中全部有講解竭业,在這篇博客中我還是再和大家簡單說一下,下面是默認(rèn)配置文件及舍。大家可以看到未辆,絕大部分的配置文件是注釋,包含在``锯玛、全是注釋咐柜。下面我們就來具體的看看兼蜈,注釋我們就不說了,說具體的定義的內(nèi)容

[root@tomcat ~]# cat /usr/local/tomcat/conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements. See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<!-- Note: A "Server" is not itself a "Container", so you may not
   define subcomponents such as "Valves" at this level.
   Documentation at /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN"> #大家可以看到拙友,這里是我們剛才講解的为狸,定義一個(gè)管理接口
 <!-- Security listener. Documentation at /docs/config/listeners.html
 <Listener className="org.apache.catalina.security.SecurityListener" />
 -->
 <!--APR library loader. Documentation at /docs/apr.html -->
 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
 <Listener className="org.apache.catalina.core.JasperListener" />
 <!-- Prevent memory leaks due to use of particular java/javax APIs-->
 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 <!-- Global JNDI resources
    Documentation at /docs/jndi-resources-howto.html
 -->
 <GlobalNamingResources>
  <!-- Editable user database that can also be used by
     UserDatabaseRealm to authenticate users
  -->
  <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>
 <!-- A "Service" is a collection of one or more "Connectors" that share
    a single "Container" Note: A "Service" is not itself a "Container",
    so you may not define subcomponents such as "Valves" at this level.
    Documentation at /docs/config/service.html
  -->
 <Service name="Catalina"> #定義一個(gè)Service命令為Catalina
  <!--The connectors can use a shared executor, you can define one or more named thread pools-->
  <!--
  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="150" minSpareThreads="4"/>
  -->
  <!-- A "Connector" represents an endpoint by which requests are received
     and responses are returned. Documentation at :
     Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
     Java AJP Connector: /docs/config/ajp.html
     APR (HTTP/AJP) Connector: /docs/apr.html
     Define a non-SSL HTTP/1.1 Connector on port 8080
  -->
  <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" /> #這里定義了一個(gè)連接器,協(xié)議為http遗契,端口為8080辐棒,最大連接超時(shí)為20s,
                               #這里還定義了一個(gè)SSL的重定向端口8443牍蜂。我們可以根據(jù)需要進(jìn)行修改漾根。
                               #一般我們都用80端口與443端口。
  <!-- A "Connector" using the shared thread pool-->
  <!--
  <Connector executor="tomcatThreadPool"
        port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />
  -->
  <!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the JSSE configuration, when using APR, the
     connector should be using the OpenSSL style configuration
     described in the APR documentation -->
  <!--
  <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS" /> #這里定義了一個(gè)SSL的案例(被注釋了)鲫竞,主要定義相關(guān)密鑰與證書辐怕。
  -->
  <!-- Define an AJP 1.3 Connector on port 8009 -->
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #這里定義了一個(gè)支持AJP協(xié)議的連接器。
  <!-- An Engine represents the entry point (within Catalina) that processes
     every request. The Engine implementation for Tomcat stand alone
     analyzes the HTTP headers included with the request, and passes them
     on to the appropriate Host (virtual host).
     Documentation at /docs/config/engine.html -->
  <!-- You should set jvmRoute to support load-balancing via AJP ie :
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
  -->
  <Engine name="Catalina" defaultHost="localhost"> #這里定義了一個(gè)名為Catalina的引擎从绘,并定義了一個(gè)默認(rèn)主機(jī)為localhost寄疏。
   <!--For clustering, please take a look at documentation at:
     /docs/cluster-howto.html (simple how to)
     /docs/config/cluster.html (reference documentation) -->
   <!--
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
   -->
   <!-- Use the LockOutRealm to prevent attempts to guess user passwords
      via a brute-force attack -->
   <Realm className="org.apache.catalina.realm.LockOutRealm">
    <!-- This Realm uses the UserDatabase configured in the global JNDI
       resources under the key "UserDatabase". Any edits
       that are performed against this UserDatabase are immediately
       available for use by the Realm. -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
        resourceName="UserDatabase"/>
   </Realm>
   <Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true"> #這里就是定義的默認(rèn)虛擬主機(jī)。
    <!-- SingleSignOn valve, share authentication between web applications
       Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    <!-- Access log processes all example.
       Documentation at: /docs/config/valve.html
       Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt"
        pattern="%h %l %u %t "%r" %s %b" /> #這里定義了一個(gè)日志相關(guān)的屬性僵井。
   </Host>
  </Engine>
 </Service>
</Server>

好了陕截,在這里我們又簡單的說明一下,配置文件下面我們就來具體演示一下怎么配置虛擬主機(jī)批什。首先艘策,我們來修改一下配置文件,

[root@tomcat conf]# vim server.xml

增加下面幾行

<Host name="www.test.com" appBase="/web/webapp"
   unpackWARs="true" autoDeploy="true">
     <Context path="/" docBase="/web/webapp" reloadable="true"/>
</Host>

接下來我們來創(chuàng)建文檔目錄與測試頁面渊季,

[root@tomcat ~]# mkdir -pv /web/webapp
[root@tomcat ~]# cd /web/webapp
[root@tomcat webapp]# vim index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
 <head>
  <title>JSP test page.</title>
 </head>
 <body>
  <% out.println("Welcome to test. Site, http://www.test.com"); %>
 </body>
</html>

現(xiàn)在我們來測試一下我們修改的配置文件,

[root@tomcat ~]# service tomcat stop
Using CATALINA_BASE:  /usr/local/tomcat
Using CATALINA_HOME:  /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:    /usr
Using CLASSPATH:    /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@tomcat service tomcat configtest
Using CATALINA_BASE:  /usr/local/tomcat
Using CATALINA_HOME:  /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:    /usr
Using CLASSPATH:    /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Sep 22, 2013 2:15:47 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-80"]
Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 22, 2013 2:15:47 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1294 ms

注罚渐,大家可以看到却汉,我們這里沒有報(bào)錯(cuò),說明配置都是正確的荷并,若配置有錯(cuò)誤合砂,會在最后一行提醒你。
再下面我們來啟動Tomcat并測試一下源织,

[root@tomcat1 ~]# 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/jdk1.8.0_101/
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

[root@tomcat1 webapp]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1094/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1173/master
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      6196/java
tcp        0      0 :::8009                     :::*                        LISTEN      6196/java
tcp        0      0 :::8080                     :::*                        LISTEN      6196/java
tcp        0      0 :::22                       :::*                        LISTEN      1094/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1173/master

用 elinks 測試一下:

Snip20160802_16.png

為了幫助大家理解翩伪,我們這里再次講解一下,Host組件與Context組件以及相關(guān)屬性谈息。

Host組件:
位于Engine容器中用于接收請求并進(jìn)行相應(yīng)處理的主機(jī)或虛擬主機(jī)缘屹,如前面我們自定義的內(nèi)容:

<Host name="www.test.com" appBase="/web/webapp"
   unpackWARs="true" autoDeploy="true">
     <Context path="/" docBase="/web/webapp" reloadable="true"/>
</Host>

常用屬性說明:

name:定義虛擬主機(jī)的域名

  • appBase:此Host的webapps目錄,即存放非歸檔的web應(yīng)用程序的目錄或歸檔后的WAR文件的目錄路徑侠仇;可以使用基于$CATALINA_HOME的相對路徑轻姿;
  • autoDeploy:在Tomcat處于運(yùn)行狀態(tài)時(shí)放置于appBase目錄中的應(yīng)用程序文件是否自動進(jìn)行deploy犁珠;默認(rèn)為true;
  • unpackWars:在啟用此webapps時(shí)是否對WAR格式的歸檔文件先進(jìn)行展開互亮;默認(rèn)為true犁享;

主機(jī)別名定義:

如果一個(gè)主機(jī)有兩個(gè)或兩個(gè)以上的主機(jī)名,額外的名稱均可以以別名的形式進(jìn)行定義豹休,如下:

<Host name="www.test.com" appBase="webapps" unpackWARs="true">
 <Alias>web.test.com</Alias>
</Host>
<!--Context組件:
Context在某些意義上類似于apache中的路徑別名炊昆,一個(gè)Context定義用于標(biāo)識tomcat實(shí)例中的一個(gè)Web應(yīng)用程序。如下面的定義:-->
  <!-- Tomcat Root Context -->
  <Context path="" docBase="/web/webapps"/>
  <!-- buzzin webapp -->
  <Context path="/bbs"
   docBase="/web/threads/bbs"
   reloadable="true">
  </Context>
  <!-- chat server -->
   <Context path="/chat" docBase="/web/chat"/>
  <!-- darian web -->
  <Context path="/darian" docBase="darian"/>    

在Tomcat中威根,每一個(gè)context定義也可以使用一個(gè)單獨(dú)的XML文件進(jìn)行凤巨,其文件的目錄為

$CATALINA_HOME/conf/<engine name>/<host name>。

可以用于Context中的XML元素有Loader医窿,Manager磅甩,Realm,Resources和WatchedResource姥卢。

常用的屬性定義有:

  • docBase:相應(yīng)的Web應(yīng)用程序的存放位置卷要;也可以使用相對路徑,起始路徑為此Context所屬Host中appBase定義的路徑独榴;切記僧叉,docBase的路徑名不能與相應(yīng)的Host中appBase中定義的路徑名有包含關(guān)系,比如棺榔,如果appBase為deploy瓶堕,而docBase絕不能為deploy-bbs類的名字;
  • path:相對于Web服務(wù)器根路徑而言的URI症歇;如果為空“”郎笆,則表示為此webapp的根路徑;如果context定義在一個(gè)單獨(dú)的xml文件中忘晤,此屬性不需要定義宛蚓;
  • reloadable:是否允許重新加載此context相關(guān)的Web應(yīng)用程序的類;默認(rèn)為false设塔;

為了便于大家理解凄吏,我們這里再定義一個(gè)Context并測試一下,

<Host name="www.test.com" appBase="/web/webapp"
          unpackWARs="true" autoDeploy="true">
          <Context path="/" docBase="/web/webapp" reloadable="true"/>
          <Context path="/test" docBase="/web/test" reloadable="true"/>
</Host>

下面來增加目錄文檔與測試文件闰蛔,

[root@tomcat webapp]# mkdir /web/test
[root@tomcat webapp]# cd /web/test
[root@tomcat test]# vim index.jsp
<%@ page language="java" %>
<html>
 <head><title>TomcatA</title></head>
 <body>
  <h1><font color="red">TomcatA </h1>
  <table align="centre" border="1">
   <tr>
    <td>Session ID</td>
  <% session.setAttribute("abc","abc"); %>
    <td><%= session.getId() %></td>
   </tr>
   <tr>
    <td>Created on</td>
    <td><%= session.getCreationTime() %></td>
   </tr>
  </table>
 </body>
</html>

測試一下配置文件是否有錯(cuò)并啟動Tomcat腔丧,

[root@tomcat1 conf]# /etc/init.d/tomcat stop
[root@tomcat1 conf]# /etc/init.d/tomcat configtest
..
INFO: Initialization processed in 1352 ms

[root@tomcat1 conf]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1094/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1173/master
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      6773/java
tcp        0      0 :::8009                     :::*                        LISTEN      6773/java
tcp        0      0 :::8080                     :::*                        LISTEN      6773/java
tcp        0      0 :::22                       :::*                        LISTEN      1094/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1173/master

下面我們就用 elinks 測試一下兴垦,

Snip20160802_17.png

好了,到這里我們的Tomcat虛擬主機(jī)的講解就到這里了,下面我們來說一下Tomcat圖形管理接口错邦。

5.Tomcat圖形管理接口


  • manager 管理應(yīng)用程序的部署及監(jiān)控
  • host-manager 虛擬主機(jī)的管理

我們先來看一下默認(rèn)的圖形配置界面舆瘪,

Snip20160802_18.png

注峰弹,大家注意看右上角,我用紅色方框標(biāo)記出來的距辆,大家可以看有三個(gè)按鈕,分別為

  • Server Status 主要用來查看服務(wù)器的狀態(tài)
  • Manager App 主要用來管理應(yīng)用程序的部署及監(jiān)控
  • Host Manager 主要用來管理虛擬主機(jī)

下面我們就來具體的配置一下暮刃,大家可以看到跨算,你點(diǎn)擊任何一個(gè)按鈕都要輸入用戶名和密碼的,在我們配置之前我們先來說一下椭懊,Tomcat的Manager功能诸蚕,

Manager的四個(gè)管理角色:

  • manager-gui - allows access to the HTML GUI and the status pages
  • manager-script - allows access to the text interface and the status pages
  • manager-jmx - allows access to the JMX proxy and the status pages
  • manager-status - allows access to the status pages only

注,這里我說一下氧猬,上面的英文比較簡單我就不在里翻譯了背犯,大家自己看一下。

下面我們就來啟用manager功能盅抚,修改tomcat-user.xml文件漠魏,添加如下行:

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

簡單解釋一下,Tomcat有內(nèi)置的角色妄均,我們這里增加了兩個(gè)角色一個(gè)為manager-gui柱锹,另一個(gè)為admin-gui,用戶名和密碼都為tomcat丰包。

注禁熏,增加的內(nèi)容一定要在<tomcat-users></tomcat-users>之間。不然邑彪,不會生效瞧毙。好了,下面我們一來測試一下配置文件寄症,并重新啟動一下Tomcat

[root@tomcat1 conf]# /etc/init.d/tomcat stop
[root@tomcat1 conf]# /etc/init.d/tomcat configtest
..
INFO: Initialization processed in 1401 ms

好了宙彪,下面我們用瀏覽器查看一下,
注有巧,點(diǎn)擊Server Status按鈕您访,讓你輸入用戶名和密碼。我這里全部設(shè)置是tomcat剪决。

Snip20160802_19.png

然后,會出現(xiàn)以下界面檀训。顯示全部服務(wù)器運(yùn)行狀態(tài)柑潦!大家可以仔細(xì)的看一下,我就不帶著大家看了峻凫。

Snip20160802_20.png

下面是應(yīng)用程序部署管理界面渗鬼,

Snip20160802_21.png

下面是虛擬主機(jī)管理頁面,

Snip20160802_22.png

注荧琼,我們一般在生產(chǎn)環(huán)境中用的最多是應(yīng)用程序部署界面譬胎,可以進(jìn)行熱布署應(yīng)用程序差牛,很方便,大家可以嘗試一下堰乔。好了偏化,圖形管理界面我們就說到這里了,下面我們來說一下镐侯,Tomcat的一個(gè)小案例侦讨。我們說了那么多,有朋友就會說了苟翻,怎么一個(gè)案例也沒有呢韵卤?下面我們就來布署一個(gè)社交網(wǎng)站的案例JavaCenter Home。(我換成了一個(gè) blog 項(xiàng)目)

6.部署JSP網(wǎng)站案例


SHOP++ 是一個(gè)可免費(fèi)用于學(xué)習(xí)展示使用的JSP項(xiàng)目崇猫,我們這里使用 SHOP++ 項(xiàng)目演示JSP網(wǎng)站的部署沈条。

SHOP++ 的部分協(xié)議許可如下:

一、協(xié)議許可的權(quán)利

1诅炉、您可以在完全遵守本協(xié)議的基礎(chǔ)上蜡歹,將本軟件應(yīng)用于非商業(yè)用途(從事非盈利活動的商業(yè)機(jī)構(gòu)及非盈利性組織,將本軟件用且僅用于產(chǎn)品演示汞扎、展示及發(fā)布季稳,而并不是用來買賣及盈利的運(yùn)營活動的),而不必支付軟件商業(yè)授權(quán)費(fèi)用澈魄。

SHOP++官方網(wǎng)站:http://www.shopxx.net
SHOP++交流論壇:http://bbs.shopxx.net

首先景鼠,我們來修改一下配置文件,

[root@tomcat conf]# vim server.xml
 <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <Context path="/shop" docBase="/web/webapp/shop" reloadable="true"/>
    <Context path="/test" docBase="/web/test" reloadable="true"/>

網(wǎng)站文件放在 /web/webapp/shop 目錄下痹扇,使用瀏覽器訪問:http://192.168.0.181:8080/shop

Snip20160810_46.png

點(diǎn)擊下一步铛漓,看到環(huán)境監(jiān)測頁面,我們需要安裝 mysql:

Snip20160810_47.png

數(shù)據(jù)庫的創(chuàng)建不在這里演示了鲫构,這里在本地安裝好 mysql 之后浓恶,為 SHOP++ 創(chuàng)建一個(gè)用戶 shopuser,數(shù)據(jù)庫名為 shopxx结笨,shop++會自動創(chuàng)建數(shù)據(jù)庫:

mysql> grant all on shopxx.* to shopuser@'localhost' identified by '123456';
Query OK, 0 rows affected (0.03 sec)

mysql> grant all on shopxx.* to shopuser@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Snip20160810_48.png

填好之后包晰,點(diǎn)下一步

Snip20160810_49.png

用戶前臺地址: http://192.168.0.181:8080/shop
管理后臺地址: http://192.168.0.181:8080/shop/admin

第一次初始化需要一點(diǎn)時(shí)間,稍微等待一下炕吸。

用戶前臺:

Snip20160810_50.png

用戶管理后臺伐憾,用戶名 admin,密碼 admin :

Snip20160810_51.png

好了赫模,到這里我們的 SHOP++ 基本就配置完成了树肃,我們第一階段的基本配置就到這里,下一節(jié)我們主要講解Nginx反向代理Tomcat服務(wù)器瀑罗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胸嘴,一起剝皮案震驚了整個(gè)濱河市雏掠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劣像,老刑警劉巖乡话,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驾讲,居然都是意外死亡蚊伞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門吮铭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來时迫,“玉大人,你說我怎么就攤上這事谓晌÷尤” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵纸肉,是天一觀的道長溺欧。 經(jīng)常有香客問我,道長柏肪,這世上最難降的妖魔是什么姐刁? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮烦味,結(jié)果婚禮上聂使,老公的妹妹穿的比我還像新娘。我一直安慰自己谬俄,他們只是感情好柏靶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溃论,像睡著了一般屎蜓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钥勋,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天炬转,我揣著相機(jī)與錄音,去河邊找鬼算灸。 笑死返吻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乎婿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼街佑,長吁一口氣:“原來是場噩夢啊……” “哼谢翎!你這毒婦竟也來了捍靠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤森逮,失蹤者是張志新(化名)和其女友劉穎榨婆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒侧,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡良风,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闷供。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烟央。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖歪脏,靈堂內(nèi)的尸體忽然破棺而出疑俭,到底是詐尸還是另有隱情,我是刑警寧澤婿失,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布钞艇,位于F島的核電站,受9級特大地震影響豪硅,放射性物質(zhì)發(fā)生泄漏哩照。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一懒浮、第九天 我趴在偏房一處隱蔽的房頂上張望飘弧。 院中可真熱鬧,春花似錦嵌溢、人聲如沸眯牧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽学少。三九已至,卻和暖如春秧骑,著一層夾襖步出監(jiān)牢的瞬間版确,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工乎折, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绒疗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓骂澄,卻偏偏與公主長得像吓蘑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容