大綱
一、Tomcat 基本配置
1.爲Tomcat提供SysV腳本
2.catalina 腳本講解
3.telnet 登錄管理Tomcat
4.配置Tomcat虛擬主機
5.Tomcat圖形管理接口
manager 管理應用程序的部署及監控
host-manager 虛擬主機的管理
6.部署JSP網站案例
佈署JavaCenter Home(開源的SNS網站)
二、Nginx反向代理Tomcat服務器
1.Nginx將請求反向代理到後端Tomcat
2.Nginx將圖片緩存到本地
3.Nginx將請求實現動靜分離
注,實驗環境說明,操作系統:CentOS 6.4 x86_64,軟件版本:jdk-7u40、apache-tomcat-7.0.42、Nginx-1.4.2,博客中所用到的軟件請到這裏下載:http://yunpan.cn/QGBCLwrZnpLMS。
一、Tomcat 基本配置
1.爲Tomcat提供SysV腳本
注,在上一篇博文中我們已經演示安裝了Tomcat,這裏我們就不在演示,不清楚的博友可以參考這篇博文,http://freeloda.blog.51cto.com/2033581/1299644,在上一篇博文中我們沒有增加,SysV腳本,在這篇博文中我們來增加一下,下面我們就來具體演示一下。
1
2
3
4
5
6
7
8
9
10
|
[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
$* |
下面我們來增加執行權限,並加入服務列表設置開機自啓動,
1
2
3
|
[root@tomcat
~] #
chmod +x /etc/init.d/tomcat [root@tomcat
~] #
chkconfig --add tomcat [root@tomcat
~] #
chkconfig tomcat --list |
tomcat 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
下面我們來啓動一下Tomcat並測試一下,
1
2
3
4
5
6
|
[root@tomcat
~] #
service 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 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
12
13
14
|
[root@tomcat
~] #
netstat -ntulp 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 1044 /sshd tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121 /master tcp
0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12988 /sshd tcp
0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13053 /sshd tcp
0 0 :::8080 :::* LISTEN 13088 /java tcp
0 0 :::22 :::* LISTEN 1044 /sshd tcp
0 0 ::1:25 :::* LISTEN 1121 /master tcp
0 0 ::1:6010 :::* LISTEN 12988 /sshd tcp
0 0 ::1:6011 :::* LISTEN 13053 /sshd tcp
0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 13088 /java tcp
0 0 :::8009 :::* LISTEN 13088 /java |
用瀏覽器訪問一下,
好了,到這裏Tomcat的SysV腳本增加完成,下面我們來說一下catalina腳本。
2.catalina 腳本講解
首先我們來查看一下這個腳本,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@tomcat
bin] #
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 .7.0_40 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.sh
-
start 啓動Tomcat
-
stop 關閉Tomcat
-
configtest 測試配置文件是否有錯
-
version 查看Tomcat版本
下面我們就來具體演示一下,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@tomcat
~] #
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 .7.0_40 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar 九月
21, 2013 11:08:26 下午 org.apache.catalina.core.AprLifecycleListener init 信息:
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 九月
21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init 信息:
Initializing ProtocolHandler [ "http-bio-8080" ] 九月
21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init 信息:
Initializing ProtocolHandler [ "ajp-bio-8009" ] 九月
21, 2013 11:08:27 下午 org.apache.catalina.startup.Catalina load 信息:
Initialization processed in 1269
ms |
注,使用configtest選項時,得關閉Tomcat,不然會報錯。
啓動Tomcat,
1
2
3
4
5
6
|
[root@tomcat
~] #
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 .7.0_40 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar |
關閉Tomcat,
1
2
3
4
5
6
|
[root@tomcat
~] #
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 .7.0_40 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar |
查看Tomcat版本,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@tomcat
~] #
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 .7.0_40 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-358.el6.x86_64 Architecture:
amd64 JVM
Version: 1.7.0_40-b43 JVM
Vendor: Oracle Corporation |
好了,catalina腳本,我們就說到這裏了,下面我們來說一下telnet管理Tomcat。
3.telnet 登錄管理Tomcat
注,在說telnet管理Tomcat之前,我們得先看一下默認的配置文件,這裏面定義了默認的管理端口,
1
2
|
[root@tomcat
~] #
vim /usr/local/tomcat/conf/server.xml <Server
port= "8005" shutdown = "SHUTDOWN" > |
說明,定義了一個管理端口爲8005,我們可以用telnet直接登錄進本機的8005端口,來執行SHUTDOWN命令,來關閉Tomcat實例。下面我們來具體演示一下,
先安裝telnet客戶端,
1
|
[root@tomcat
~] #
yum install -y telnet |
下面我們一測試並查看,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@tomcat
~] #
telnet localhost 8005 Trying
::1... telnet:
connect to address ::1: Connection refused Trying
127.0.0.1... Connected
to localhost. Escape
character is '^]' . SHUTDOWN #輸入SHOWDOWN就可以直接關閉Tomcat服務。 Connection
closed by foreign host. [root@tomcat
~] #
netstat -ntulp 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 1044 /sshd tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121 /master tcp
0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12988 /sshd tcp
0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13053 /sshd tcp
0 0 :::22 :::* LISTEN 1044 /sshd tcp
0 0 ::1:25 :::* LISTEN 1121 /master tcp
0 0 ::1:6010 :::* LISTEN 12988 /sshd tcp
0 0 ::1:6011 :::* LISTEN 13053 /sshd |
注,大家可以看到Tomcat服務器已經關閉。好了,telnet管理我們就說到這裏,下面我們來說一下,Tomcat虛擬主機的配置。
4.配置Tomcat虛擬主機
注,在說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
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
[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" > #大家可以看到,這裏是我們剛纔講解的,定義一個管理接口 <!--
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" > #定義一個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" /> #這裏定義了一個連接器,協議爲http,端口爲8080,最大連接超時爲20s,這裏還定義了一個SSL的重定向端口8443。我們可以根據需要進行修改。一般我們都用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" /> #這裏定義了一個SSL的案例,主要定義相關密鑰與證書。 --> <!--
Define an AJP 1.3 Connector on port 8009 --> <Connector
port= "8009" protocol= "AJP/1.3" redirectPort= "8443" /> #這裏定義了一個支持AJP協議的連接器。 <!--
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" > #這裏定義了一個名爲Catalina的引擎,並定義了一個默認主機爲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" > #這裏就是定義的虛擬主機。 <!--
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" /> #這裏定義了一個日誌相關的屬性。 < /Host > < /Engine > < /Service > < /Server > |
好了,在這裏我們又簡單的說明一下,配置文件下面我們就來具體演示一下怎麼配置虛擬主機。
首先,我們來修改一下配置文件,
[root@tomcat conf]# vim server.xml
#增加下面幾行
1
2
3
4
|
<Host
name= "www.test.com" appBase= "/web/webapp" unpackWARs= "true" autoDeploy= "true" > <Context
path= "/" docBase= "/web/webapp" reloadable= "true" /> < /Host > |
接下來我們來創建文檔目錄與測試頁面,
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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 > |
現在我們來測試一下我們修改的配置文件,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[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 ^[[A[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 |
注,大家可以看到,我們這裏沒有報錯,說明配置都是正確的,若配置有錯誤,會在最後一行提醒你。
再下面我們來啓動Tomcat並測試一下,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@tomcat
~] #
service 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 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar [root@tomcat
~] #
netstat -ntulp 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 1044 /sshd tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121 /master tcp
0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13368 /sshd tcp
0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13387 /sshd tcp
0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407 /sshd tcp
0 0 :::80 :::* LISTEN 13557 /java tcp
0 0 :::22 :::* LISTEN 1044 /sshd tcp
0 0 ::1:25 :::* LISTEN 1121 /master tcp
0 0 ::1:6010 :::* LISTEN 13368 /sshd tcp
0 0 ::1:6011 :::* LISTEN 13387 /sshd tcp
0 0 ::1:6012 :::* LISTEN 13407 /sshd tcp
0 0 :::8009 :::* LISTEN 13557 /java |
注,還有一點得說明一下,我這裏爲了方便測試,將默認端口8080修改爲了80端口。下面是測試效果,
爲了幫助大家理解,我們這裏再次講解一下,Host組件與Context組件以及相關屬性。
Host組件:
位於Engine容器中用於接收請求並進行相應處理的主機或虛擬主機,如前面我們自定義的內容:
1
2
3
4
|
<Host
name= "www.test.com" appBase= "/web/webapp" unpackWARs= "true" autoDeploy= "true" > <Context
path= "/" docBase= "/web/webapp" reloadable= "true" /> < /Host > |
常用屬性說明:
name:定義虛擬主機的域名
-
appBase:此Host的webapps目錄,即存放非歸檔的web應用程序的目錄或歸檔後的WAR文件的目錄路徑;可以使用基於$CATALINA_HOME的相對路徑;
-
autoDeploy:在Tomcat處於運行狀態時放置於appBase目錄中的應用程序文件是否自動進行deploy;默認爲true;
-
unpackWars:在啓用此webapps時是否對WAR格式的歸檔文件先進行展開;默認爲true;
主機別名定義:
如果一個主機有兩個或兩個以上的主機名,額外的名稱均可以以別名的形式進行定義,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<Host
name= "www.test.com" appBase= "webapps" unpackWARs= "true" > <Alias>web. test .com< /Alias > < /Host > Context組件: Context在某些意義上類似於apache中的路徑別名,一個Context定義用於標識tomcat實例中的一個Web應用程序。如下面的定義: <!--
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中,每一個context定義也可以使用一個單獨的XML文件進行,其文件的目錄爲$CATALINA_HOME/conf/<engine name>/<host name>。可以用於Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。
常用的屬性定義有:
-
docBase:相應的Web應用程序的存放位置;也可以使用相對路徑,起始路徑爲此Context所屬Host中appBase定義的路徑;切記,docBase的路徑名不能與相應的Host中appBase中定義的路徑名有包含關係,比如,如果appBase爲deploy,而docBase絕不能爲deploy-bbs類的名字;
-
path:相對於Web服務器根路徑而言的URI;如果爲空“”,則表示爲此webapp的根路徑;如果context定義在一個單獨的xml文件中,此屬性不需要定義;
-
reloadable:是否允許重新加載此context相關的Web應用程序的類;默認爲false;
爲了便於大家理解,我們這裏再定義一個Context並測試一下,
我們先來修改一下配置文件
1
2
3
4
5
6
|
[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" /> <Context
path= "/test" docBase= "/web/test" reloadable= "true" /> #增加這一行 < /Host > |
下面來增加目錄文檔與測試文件,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[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 > |
測試一下配置文件是否有錯並啓動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
34
35
36
|
[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:40:57 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:40:58 AM org.apache.coyote.AbstractProtocol init INFO:
Initializing ProtocolHandler [ "http-bio-80" ] Sep
22, 2013 2:40:58 AM org.apache.coyote.AbstractProtocol init INFO:
Initializing ProtocolHandler [ "ajp-bio-8009" ] Sep
22, 2013 2:40:58 AM org.apache.catalina.startup.Catalina load INFO:
Initialization processed in 1352
ms [root@tomcat
~] #
service 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 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar [root@tomcat
~] #
netstat -ntulp 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 1044 /sshd tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121 /master tcp
0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13587 /sshd tcp
0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13387 /sshd tcp
0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407 /sshd tcp
0 0 :::80 :::* LISTEN 13945 /java tcp
0 0 :::22 :::* LISTEN 1044 /sshd tcp
0 0 ::1:25 :::* LISTEN 1121 /master tcp
0 0 ::1:6010 :::* LISTEN 13587 /sshd tcp
0 0 ::1:6011 :::* LISTEN 13387 /sshd tcp
0 0 ::1:6012 :::* LISTEN 13407 /sshd tcp
0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 13945 /java tcp
0 0 :::8009 :::* LISTEN 13945 /java |
下面我們就用瀏覽器測試一下,
好了,到這裏我們的Tomcat虛擬主機的講解就到這裏了,下面我們來說一下Tomcat圖形管理接口。
5.Tomcat圖形管理接口
-
manager 管理應用程序的部署及監控
-
host-manager 虛擬主機的管理
我們先來看一下默認的圖形配置界面,
注,大家注意看右上角,我用紅色方框標記出來的,大家可以看有三個按鈕,分別爲
-
Server Status 主要用來查看服務器的狀態
-
Manager App 主要用來管理應用程序的部署及監控
-
Host Manager 主要用來管理虛擬主機
下面我們就來具休的配置一下,大家可以看到,你點擊任何一個按鈕都要輸入用戶名和密碼的,在我們配置之前我們先來說一下,Tomcat的Manager功能,
Manager的四個管理角色:
-
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文件,添加如下行:
1
2
3
|
<role
rolename= "manager-gui" /> <role
rolename= "admin-gui" /> <user
username= "tomcat" password= "tomcat" roles= "manager-gui,admin-gui" /> |
簡單解釋一下,Tomcat有內置的角色,我們這裏增加了兩個角色一個爲manager-gui,另一個爲admin-gui,用戶名和密碼都爲tomcat。
注,增加的內容一定要在<tomcat-users></tomcat-users>之間。不然,不會生效。好了,下面我們一來測試一下配置文件,並重新啓動一下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
34
35
36
|
[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 3:08:44 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 3:08:44 AM org.apache.coyote.AbstractProtocol init INFO:
Initializing ProtocolHandler [ "http-bio-80" ] Sep
22, 2013 3:08:44 AM org.apache.coyote.AbstractProtocol init INFO:
Initializing ProtocolHandler [ "ajp-bio-8009" ] Sep
22, 2013 3:08:44 AM org.apache.catalina.startup.Catalina load INFO:
Initialization processed in 1213
ms [root@tomcat
~] #
service 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 Using
CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar [root@tomcat
~] #
netstat -ntulp 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 1044 /sshd tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1121 /master tcp
0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 13587 /sshd tcp
0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 13387 /sshd tcp
0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 13407 /sshd tcp
0 0 :::80 :::* LISTEN 14197 /java tcp
0 0 :::22 :::* LISTEN 1044 /sshd tcp
0 0 ::1:25 :::* LISTEN 1121 /master tcp
0 0 ::1:6010 :::* LISTEN 13587 /sshd tcp
0 0 ::1:6011 :::* LISTEN 13387 /sshd tcp
0 0 ::1:6012 :::* LISTEN 13407 /sshd tcp
0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 14197 /java tcp
0 0 :::8009 :::* LISTEN 14197 /java |
好了,下面我們用瀏覽器查看一下,
注,點擊Server Status按鈕,讓你輸入用戶名和密碼。我這裏全部設置是tomcat。
然後,會出現以下界面。顯示全部服務器運行狀態!大家可以仔細的看一下,我就不帶着大家看了。
下面是應用程序部署管理界面,
下面是虛擬主機管理頁面,
注,我們一般在生產環境中用的最多是應用程序部署界面,可以進行熱佈署應用程序,很方便,大家可以嘗試一下。好了,圖形管理界面我們就說到這裏了,下面我們來說一下,Tomcat的一個小案例。我們說了那麼多,有朋友就會說了,怎麼一個案例也沒有呢?下面我們就來佈署一個社交網站的案例JavaCenter Home。