TomCat 多虛擬站點配置
系統(tǒng)
2019-08-12 01:33:23
1823 0
在網(wǎng)絡(luò)上看了許久,沒有一個真正可以解決TomCat多虛擬站點的配置問題的,經(jīng)過試驗和參考官方網(wǎng)站資料,終于解決了這個問題.
參考資料:Apache Tomcat文檔
http://tomcat.apache.org/tomcat-5.0-doc/config/host.html
在文中有這么一段話:
One or more
Host
elements are nested inside an
Engine
element. Inside the Host element, you can nest
Context
elements for the web applications associated with this virtual host. Exactly one of the Hosts associated with each Engine MUST have a name matching the
defaultHost
attribute of that Engine.
譯文:Engine元素中需要一個或多個Host元素,在Host元素里面,你必需有Context元素讓網(wǎng)站應(yīng)用程序與虛擬主機(jī)連接上,嚴(yán)密地說,每一個主機(jī)所關(guān)聯(lián)的引擎必須有一個名字跟那個引擎默認(rèn)的主機(jī)屬性匹配 .
可知,在Engine元素里面可以有多個Host,那么說,可以有在一個Engine里面設(shè)置多個服務(wù)器了,這正是我們需要的.每個Host元素里面要有一個Context元素.
根據(jù)conf\server.xml里面的說明和范例,我樣可以編寫出下面一個配置文件:
??1
<!--
?Example?Server?Configuration?File?
-->
??2
<!--
?Note?that?component?elements?are?nested?corresponding?to?their
??3
?????parent-child?relationships?with?each?other?
-->
??4
??5
<!--
?A?"Server"?is?a?singleton?element?that?represents?the?entire?JVM,
??6
?????which?may?contain?one?or?more?"Service"?instances.??The?Server
??7
?????listens?for?a?shutdown?command?on?the?indicated?port.
??8
??9
?????Note:??A?"Server"?is?not?itself?a?"Container",?so?you?may?not
?10
?????define?subcomponents?such?as?"Valves"?or?"Loggers"?at?this?level.
?11
?
-->
?12
?13
<
Server?
port
="8005"
?shutdown
="SHUTDOWN"
>
?14
?15
??
<!--
?Comment?these?entries?out?to?disable?JMX?MBeans?support?used?for?the
?16
???????administration?web?application?
-->
?17
??
<
Listener?
className
="org.apache.catalina.core.AprLifecycleListener"
?
/>
?18
??
<
Listener?
className
="org.apache.catalina.mbeans.ServerLifecycleListener"
?
/>
?19
??
<
Listener?
className
="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
?
/>
?20
??
<
Listener?
className
="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"
/>
?21
?22
??
<!--
?Global?JNDI?resources?
-->
?23
??
<
GlobalNamingResources
>
?24
?25
????
<!--
?Test?entry?for?demonstration?purposes?
-->
?26
????
<
Environment?
name
="simpleValue"
?type
="java.lang.Integer"
?value
="30"
/>
?27
?28
????
<!--
?Editable?user?database?that?can?also?be?used?by
?29
?????????UserDatabaseRealm?to?authenticate?users?
-->
?30
????
<
Resource?
name
="UserDatabase"
?auth
="Container"
?31
??????????????type
="org.apache.catalina.UserDatabase"
?32
???????description
="User?database?that?can?be?updated?and?saved"
?33
???????????factory
="org.apache.catalina.users.MemoryUserDatabaseFactory"
?34
??????????pathname
="conf/tomcat-users.xml"
?
/>
?35
?36
??
</
GlobalNamingResources
>
?37
?38
??
<!--
?A?"Service"?is?a?collection?of?one?or?more?"Connectors"?that?share
?39
???????a?single?"Container"?(and?therefore?the?web?applications?visible
?40
???????within?that?Container).??Normally,?that?Container?is?an?"Engine",
?41
???????but?this?is?not?required.
?42
?43
???????Note:??A?"Service"?is?not?itself?a?"Container",?so?you?may?not
?44
???????define?subcomponents?such?as?"Valves"?or?"Loggers"?at?this?level.
?45
???
-->
?46
?47
??
<!--
?Define?the?Tomcat?Stand-Alone?Service?
-->
?48
??
<
Service?
name
="Catalina"
>
?49
?50
????
<!--
?A?"Connector"?represents?an?endpoint?by?which?requests?are?received
?51
?????????and?responses?are?returned.??Each?Connector?passes?requests?on?to?the
?52
?????????associated?"Container"?(normally?an?Engine)?for?processing.
?53
?54
?????????By?default,?a?non-SSL?HTTP/1.1?Connector?is?established?on?port?8080.
?55
?????????You?can?also?enable?an?SSL?HTTP/1.1?Connector?on?port?8443?by
?56
?????????following?the?instructions?below?and?uncommenting?the?second?Connector
?57
?????????entry.??SSL?support?requires?the?following?steps?(see?the?SSL?Config
?58
?????????HOWTO?in?the?Tomcat?5?documentation?bundle?for?more?detailed
?59
?????????instructions):
?60
?????????*?If?your?JDK?version?1.3?or?prior,?download?and?install?JSSE?1.0.2?or
?61
???????????later,?and?put?the?JAR?files?into?"$JAVA_HOME/jre/lib/ext".
?62
?????????*?Execute:
?63
?????????????%JAVA_HOME%\bin\keytool?-genkey?-alias?tomcat?-keyalg?RSA?(Windows)
?64
?????????????$JAVA_HOME/bin/keytool?-genkey?-alias?tomcat?-keyalg?RSA??(Unix)
?65
???????????with?a?password?value?of?"changeit"?for?both?the?certificate?and
?66
???????????the?keystore?itself.
?67
?68
?????????By?default,?DNS?lookups?are?enabled?when?a?web?application?calls
?69
?????????request.getRemoteHost().??This?can?have?an?adverse?impact?on
?70
?????????performance,?so?you?can?disable?it?by?setting?the
?71
?????????"enableLookups"?attribute?to?"false".??When?DNS?lookups?are?disabled,
?72
?????????request.getRemoteHost()?will?return?the?String?version?of?the
?73
?????????IP?address?of?the?remote?client.
?74
????
-->
?75
?76
????
<!--
?Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080?
-->
?77
????
<
Connector
?78
port
="80"
???????????????maxHttpHeaderSize
="8192"
?79
???????????????maxThreads
="150"
?minSpareThreads
="25"
?maxSpareThreads
="75"
?80
???????????????enableLookups
="false"
?redirectPort
="8443"
?acceptCount
="100"
?81
???????????????connectionTimeout
="20000"
?disableUploadTimeout
="true"
??URIEncoding
="GB2312"
/>
?82
????
<!--
?Note?:?To?disable?connection?timeouts,?set?connectionTimeout?value
?83
?????to?0?
-->
?84
?85
????
<!--
?Note?:?To?use?gzip?compression?you?could?set?the?following?properties?:
?86
?87
???????????????compression="on"
?88
???????????????compressionMinSize="2048"
?89
???????????????noCompressionUserAgents="gozilla,?traviata"
?90
???????????????compressableMimeType="text/html,text/xml"
?91
????
-->
?92
?93
????
<!--
?Define?a?SSL?HTTP/1.1?Connector?on?port?8443?
-->
?94
????
<!--
?95
????<Connector?port="8443"?maxHttpHeaderSize="8192"
?96
???????????????maxThreads="150"?minSpareThreads="25"?maxSpareThreads="75"
?97
???????????????enableLookups="false"?disableUploadTimeout="true"
?98
???????????????acceptCount="100"?scheme="https"?secure="true"
?99
???????????????clientAuth="false"?sslProtocol="TLS"?/>
100
????
-->
101
102
????
<!--
?Define?an?AJP?1.3?Connector?on?port?8009?
-->
103
????
<
Connector?
port
="8009"
104
???????????????enableLookups
="false"
?redirectPort
="8443"
?protocol
="AJP/1.3"
?
/>
105
106
????
<!--
?Define?a?Proxied?HTTP/1.1?Connector?on?port?8082?
-->
107
????
<!--
?See?proxy?documentation?for?more?information?about?using?this.?
-->
108
????
<!--
109
????<Connector?port="8082"
110
???????????????maxThreads="150"?minSpareThreads="25"?maxSpareThreads="75"
111
???????????????enableLookups="false"?acceptCount="100"?connectionTimeout="20000"
112
???????????????proxyPort="80"?disableUploadTimeout="true"?/>
113
????
-->
114
115
????
<!--
?An?Engine?represents?the?entry?point?(within?Catalina)?that?processes
116
?????????every?request.??The?Engine?implementation?for?Tomcat?stand?alone
117
?????????analyzes?the?HTTP?headers?included?with?the?request,?and?passes?them
118
?????????on?to?the?appropriate?Host?(virtual?host).?
-->
119
120
????
<!--
?You?should?set?jvmRoute?to?support?load-balancing?via?AJP?ie?:
121
????<Engine?name="Standalone"?defaultHost="localhost"?jvmRoute="jvm1">
122
????
-->
123
124
????
<!--
?Define?the?top?level?container?in?our?container?hierarchy?
-->
125
????
<
Engine?
name
="Catalina"
?defaultHost
="ycoe.vicp.net"
>
126
127
??????
<!--
?The?request?dumper?valve?dumps?useful?debugging?information?about
128
???????????the?request?headers?and?cookies?that?were?received,?and?the?response
129
???????????headers?and?cookies?that?were?sent,?for?all?requests?received?by
130
???????????this?instance?of?Tomcat.??If?you?care?only?about?requests?to?a
131
???????????particular?virtual?host,?or?a?particular?application,?nest?this
132
???????????element?inside?the?corresponding?<Host>?or?<Context>?entry?instead.
133
134
???????????For?a?similar?mechanism?that?is?portable?to?all?Servlet?2.4
135
???????????containers,?check?out?the?"RequestDumperFilter"?Filter?in?the
136
???????????example?application?(the?source?for?this?filter?may?be?found?in
137
???????????"$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
138
139
???????????Request?dumping?is?disabled?by?default.??Uncomment?the?following
140
???????????element?to?enable?it.?
-->
141
??????
<!--
142
??????<Valve?className="org.apache.catalina.valves.RequestDumperValve"/>
143
??????
-->
144
145
??????
<!--
?Because?this?Realm?is?here,?an?instance?will?be?shared?globally?
-->
146
147
??????
<!--
?This?Realm?uses?the?UserDatabase?configured?in?the?global?JNDI
148
???????????resources?under?the?key?"UserDatabase".??Any?edits
149
???????????that?are?performed?against?this?UserDatabase?are?immediately
150
???????????available?for?use?by?the?Realm.??
-->
151
??????
<
Realm?
className
="org.apache.catalina.realm.UserDatabaseRealm"
152
?????????????resourceName
="UserDatabase"
/>
153
154
??????
<!--
?Comment?out?the?old?realm?but?leave?here?for?now?in?case?we
155
???????????need?to?go?back?quickly?
-->
156
??????
<!--
157
??????<Realm?className="org.apache.catalina.realm.MemoryRealm"?/>
158
??????
-->
159
160
??????
<!--
?Replace?the?above?Realm?with?one?of?the?following?to?get?a?Realm
161
???????????stored?in?a?database?and?accessed?via?JDBC?
-->
162
163
??????
<!--
164
??????<Realm??className="org.apache.catalina.realm.JDBCRealm"
165
?????????????driverName="org.gjt.mm.mysql.Driver"
166
??????????connectionURL="jdbc:mysql://localhost/authority"
167
?????????connectionName="test"?connectionPassword="test"
168
??????????????userTable="users"?userNameCol="user_name"?userCredCol="user_pass"
169
??????????userRoleTable="user_roles"?roleNameCol="role_name"?/>
170
??????
-->
171
172
??????
<!--
173
??????<Realm??className="org.apache.catalina.realm.JDBCRealm"
174
?????????????driverName="oracle.jdbc.driver.OracleDriver"
175
??????????connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
176
?????????connectionName="scott"?connectionPassword="tiger"
177
??????????????userTable="users"?userNameCol="user_name"?userCredCol="user_pass"
178
??????????userRoleTable="user_roles"?roleNameCol="role_name"?/>
179
??????
-->
180
181
??????
<!--
182
??????<Realm??className="org.apache.catalina.realm.JDBCRealm"
183
?????????????driverName="sun.jdbc.odbc.JdbcOdbcDriver"
184
??????????connectionURL="jdbc:odbc:CATALINA"
185
??????????????userTable="users"?userNameCol="user_name"?userCredCol="user_pass"
186
??????????userRoleTable="user_roles"?roleNameCol="role_name"?/>
187
??????
-->
188
189
??????
<!--
?Define?the?default?virtual?host
190
???????????Note:?XML?Schema?validation?will?not?work?with?Xerces?2.2.
191
???????
-->
192
??????
<
Host?
name
="ycoe.vicp.net"
?appBase
="webapps"
193
???????unpackWARs
="true"
?autoDeploy
="true"
194
???????xmlValidation
="false"
?xmlNamespaceAware
="false"
>
195
196
????????
<!--
?Defines?a?cluster?for?this?node,
197
?????????????By?defining?this?element,?means?that?every?manager?will?be?changed.
198
?????????????So?when?running?a?cluster,?only?make?sure?that?you?have?webapps?in?there
199
?????????????that?need?to?be?clustered?and?remove?the?other?ones.
200
?????????????A?cluster?has?the?following?parameters:
201
202
?????????????className?=?the?fully?qualified?name?of?the?cluster?class
203
204
?????????????name?=?a?descriptive?name?for?your?cluster,?can?be?anything
205
206
?????????????mcastAddr?=?the?multicast?address,?has?to?be?the?same?for?all?the?nodes
207
208
?????????????mcastPort?=?the?multicast?port,?has?to?be?the?same?for?all?the?nodes
209
210
?????????????mcastBindAddr?=?bind?the?multicast?socket?to?a?specific?address
211
212
?????????????mcastTTL?=?the?multicast?TTL?if?you?want?to?limit?your?broadcast
213
214
?????????????mcastSoTimeout?=?the?multicast?readtimeout
215
216
?????????????mcastFrequency?=?the?number?of?milliseconds?in?between?sending?a?"I'm?alive"?heartbeat
217
218
?????????????mcastDropTime?=?the?number?a?milliseconds?before?a?node?is?considered?"dead"?if?no?heartbeat?is?received
219
220
?????????????tcpThreadCount?=?the?number?of?threads?to?handle?incoming?replication?requests,?optimal?would?be?the?same?
amount?of?threads?as?nodes
221
222
?????????????tcpListenAddress?=?the?listen?address?(bind?address)?for?TCP?cluster?request?on?this?host,
223
????????????????????????????????in?case?of?multiple?ethernet?cards.
224
????????????????????????????????auto?means?that?address?becomes
225
????????????????????????????????InetAddress.getLocalHost().getHostAddress()
226
227
?????????????tcpListenPort?=?the?tcp?listen?port
228
229
?????????????tcpSelectorTimeout?=?the?timeout?(ms)?for?the?Selector.select()?method?in?case?the?OS
230
??????????????????????????????????has?a?wakup?bug?in?java.nio.?Set?to?0?for?no?timeout
231
232
?????????????printToScreen?=?true?means?that?managers?will?also?print?to?std.out
233
234
?????????????expireSessionsOnShutdown?=?true?means?that
235
236
?????????????useDirtyFlag?=?true?means?that?we?only?replicate?a?session?after?setAttribute,removeAttribute?has?been?called.
237
????????????????????????????false?means?to?replicate?the?session?after?each?request.
238
????????????????????????????false?means?that?replication?would?work?for?the?following?piece?of?code:?(only?for?SimpleTcpReplicationManager)
239
????????????????????????????<%
240
????????????????????????????HashMap?map?=?(HashMap)session.getAttribute("map");
241
????????????????????????????map.put("key","value");
242
????????????????????????????%>
243
?????????????replicationMode?=?can?be?either?'pooled',?'synchronous'?or?'asynchronous'.
244
???????????????????????????????*?Pooled?means?that?the?replication?happens?using?several?sockets?in?a?synchronous?way.?Ie,?
the?data?gets?replicated,?then?the?request?return.?This?is?the?same?as?the?'synchronous'?setting?except?it?uses?a?pool?of?sockets,?
hence?it?is?multithreaded.?This?is?the?fastest?and?safest?configuration.?To?use?this,?also?increase?the?nr?of?tcp?threads?
that?you?have?dealing?with?replication.
245
???????????????????????????????*?Synchronous?means?that?the?thread?that?executes?the?request,?is?also?the
246
???????????????????????????????thread?the?replicates?the?data?to?the?other?nodes,?and?will?not?return?until?all
247
???????????????????????????????nodes?have?received?the?information.
248
???????????????????????????????*?Asynchronous?means?that?there?is?a?specific?'sender'?thread?for?each?cluster?node,
249
???????????????????????????????so?the?request?thread?will?queue?the?replication?request?into?a?"smart"?queue,
250
???????????????????????????????and?then?return?to?the?client.
251
???????????????????????????????The?"smart"?queue?is?a?queue?where?when?a?session?is?added?to?the?queue,?and?the?same?session
252
???????????????????????????????already?exists?in?the?queue?from?a?previous?request,?that?session?will?be?replaced
253
???????????????????????????????in?the?queue?instead?of?replicating?two?requests.?This?almost?never?happens,?unless?there?is?a
254
???????????????????????????????large?network?delay.
255
????????
-->
256
????????
<!--
257
????????????When?configuring?for?clustering,?you?also?add?in?a?valve?to?catch?all?the?requests
258
????????????coming?in,?at?the?end?of?the?request,?the?session?may?or?may?not?be?replicated.
259
????????????A?session?is?replicated?if?and?only?if?all?the?conditions?are?met:
260
????????????1.?useDirtyFlag?is?true?or?setAttribute?or?removeAttribute?has?been?called?AND
261
????????????2.?a?session?exists?(has?been?created)
262
????????????3.?the?request?is?not?trapped?by?the?"filter"?attribute
263
264
????????????The?filter?attribute?is?to?filter?out?requests?that?could?not?modify?the?session,
265
????????????hence?we?don't?replicate?the?session?after?the?end?of?this?request.
266
????????????The?filter?is?negative,?ie,?anything?you?put?in?the?filter,?you?mean?to?filter?out,
267
????????????ie,?no?replication?will?be?done?on?requests?that?match?one?of?the?filters.
268
????????????The?filter?attribute?is?delimited?by?;,?so?you?can't?escape?out?;?even?if?you?wanted?to.
269
270
????????????filter=".*\.gif;.*\.js;"?means?that?we?will?not?replicate?the?session?after?requests?with?the?URI
271
????????????ending?with?.gif?and?.js?are?intercepted.
272
273
????????????The?deployer?element?can?be?used?to?deploy?apps?cluster?wide.
274
????????????Currently?the?deployment?only?deploys/undeploys?to?working?members?in?the?cluster
275
????????????so?no?WARs?are?copied?upons?startup?of?a?broken?node.
276
????????????The?deployer?watches?a?directory?(watchDir)?for?WAR?files?when?watchEnabled="true"
277
????????????When?a?new?war?file?is?added?the?war?gets?deployed?to?the?local?instance,
278
????????????and?then?deployed?to?the?other?instances?in?the?cluster.
279
????????????When?a?war?file?is?deleted?from?the?watchDir?the?war?is?undeployed?locally
280
????????????and?cluster?wide
281
????????
-->
282
283
????????
<!--
284
????????<Cluster?className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
285
?????????????????managerClassName="org.apache.catalina.cluster.session.DeltaManager"
286
?????????????????expireSessionsOnShutdown="false"
287
?????????????????useDirtyFlag="true"
288
?????????????????notifyListenersOnReplication="true">
289
290
????????????<Membership
291
????????????????className="org.apache.catalina.cluster.mcast.McastService"
292
????????????????mcastAddr="228.0.0.4"
293
????????????????mcastPort="45564"
294
????????????????mcastFrequency="500"
295
????????????????mcastDropTime="3000"/>
296
297
????????????<Receiver
298
????????????????className="org.apache.catalina.cluster.tcp.ReplicationListener"
299
????????????????tcpListenAddress="auto"
300
????????????????tcpListenPort="4001"
301
????????????????tcpSelectorTimeout="100"
302
????????????????tcpThreadCount="6"/>
303
304
????????????<Sender
305
????????????????className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
306
????????????????replicationMode="pooled"
307
????????????????ackTimeout="15000"/>
308
309
????????????<Valve?className="org.apache.catalina.cluster.tcp.ReplicationValve"
310
???????????????????filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
311
312
????????????<Deployer?className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
313
??????????????????????tempDir="/tmp/war-temp/"
314
??????????????????????deployDir="/tmp/war-deploy/"
315
??????????????????????watchDir="/tmp/war-listen/"
316
??????????????????????watchEnabled="false"/>
317
????????</Cluster>
318
????????
-->
319
320
321
322
????????
<!--
?Normally,?users?must?authenticate?themselves?to?each?web?app
323
?????????????individually.??Uncomment?the?following?entry?if?you?would?like
324
?????????????a?user?to?be?authenticated?the?first?time?they?encounter?a
325
?????????????resource?protected?by?a?security?constraint,?and?then?have?that
326
?????????????user?identity?maintained?across?*all*?web?applications?contained
327
?????????????in?this?virtual?host.?
-->
328
????????
<!--
329
????????<Valve?className="org.apache.catalina.authenticator.SingleSignOn"?/>
330
????????
-->
331
332
????????
<!--
?Access?log?processes?all?requests?for?this?virtual?host.??By
333
?????????????default,?log?files?are?created?in?the?"logs"?directory?relative?to
334
?????????????$CATALINA_HOME.??If?you?wish,?you?can?specify?a?different
335
?????????????directory?with?the?"directory"?attribute.??Specify?either?a?relative
336
?????????????(to?$CATALINA_HOME)?or?absolute?path?to?the?desired?directory.
337
????????
-->
338
????????
<!--
339
????????<Valve?className="org.apache.catalina.valves.AccessLogValve"
340
?????????????????directory="logs"??prefix="localhost_access_log."?suffix=".txt"
341
?????????????????pattern="common"?resolveHosts="false"/>
342
????????
-->
343
344
????????
<!--
?Access?log?processes?all?requests?for?this?virtual?host.??By
345
?????????????default,?log?files?are?created?in?the?"logs"?directory?relative?to
346
?????????????$CATALINA_HOME.??If?you?wish,?you?can?specify?a?different
347
?????????????directory?with?the?"directory"?attribute.??Specify?either?a?relative
348
?????????????(to?$CATALINA_HOME)?or?absolute?path?to?the?desired?directory.
349
?????????????This?access?log?implementation?is?optimized?for?maximum?performance,
350
?????????????but?is?hardcoded?to?support?only?the?"common"?and?"combined"?patterns.
351
????????
-->
352
????????
<!--
353
????????<Valve?className="org.apache.catalina.valves.FastCommonAccessLogValve"
354
?????????????????directory="logs"??prefix="localhost_access_log."?suffix=".txt"
355
?????????????????pattern="common"?resolveHosts="false"/>
356
????????
-->
357
????
<
Context?
docBase
="D:\WORKS\EShop\EWebShop"
?path
="/"
?reloadable
="true"
?
??????????????? workDir
="D:\WORKS\EShop\Tomcat\work\EWebShop"
>
358
????
</
Context
>
359
??????
</
Host
>
????
360
<
Host?
name
="yvor.vicp.net"
?appBase
="webapps"
unpackWARs
="true"
?autoDeploy
="true"
xmlValidation
="false"
?
??????????????? xmlNamespaceAware
="false"
>
361
????
<
Context?
docBase
="D:\WORKS\YCOE\ycoe"
?path
="/"
?reloadable
="true"
?workDir
="D:\WORKS\YCOE\Tomcat\work\ycoe"
>
362
????
</
Context
>
363
??????
</
Host
>
364
????
</
Engine
>
365
??
</
Service
>
366
</
Server
>
367
368
可以看到,這里修改了
81行修改了兩個參數(shù)值:
<
Connector
port
="80"
maxHttpHeaderSize
="8192"
?
???????????????maxThreads
="150"
?minSpareThreads
="25"
?maxSpareThreads
="75"
?
???????????????enableLookups
="false"
?redirectPort
="8443"
?acceptCount
="100"
?
???????????????connectionTimeout
="20000"
?disableUploadTimeout
="true"
??URIEncoding
="GB2312"
/>
??????? 修改port是修改Tomcat的服務(wù)端口,默認(rèn)為8080,URIEncoding改為GB2312是為了使用中文路徑
但不建議使用.
125行:
<
Engine?
name
="Catalina"
?defaultHost
="ycoe.vicp.net"
>
???????
192行:
<
Host?
name
="ycoe.vicp.net"
?appBase
="webapps"
unpackWARs
="true"
?autoDeploy
="true"
xmlValidation
="false"
?xmlNamespaceAware
="false"
>
然后再添加360行開始的<Host>元素:
<
Host?
name
="yvor.vicp.net"
?appBase
="webapps"
unpackWARs
="true"
?autoDeploy
="true"
??????? xmlValidation
="false"
? xmlNamespaceAware
="false"
>
????
<
Context?
docBase
="D:\WORKS\YCOE\ycoe"
? path
="/"
?reloadable
="true"
?
??????????? workDir
="D:\WORKS\YCOE\Tomcat\work\ycoe"
>
</
Context
>
</
Host
>
這里是設(shè)置我們的第二個虛擬網(wǎng)站的域名.
注:<Context/>里面的內(nèi)容并不是我們實際應(yīng)用的,我們可以通過另一種比較方便而且容易修改的方式來設(shè)置這些參數(shù).下面我們來做這方面的配置:
1.在%CATALINA_HOME %\conf\Catalina目錄下創(chuàng)建ycoe.vicp.net和yvor.vicp.net兩個文件夾.
2.在這兩個文件夾里面創(chuàng)建ROOT.xml文件(要以ROOT.xml為名稱,否則雖然不會出錯,但不能用
http://ycoe.vicp.net
或
http://yvor.vicp.net
直接訪問)
3.ROOT.xml的內(nèi)容如下:
<?
xml?version='1.0'?encoding='utf-8'
?>
<
Context?
docBase
="D:\WORKS\EShop\EWebShop"
?path
="/"
?reloadable
="true"
?
workDir
="D:\WORKS\EShop\Tomcat\work\EWebShop"
>
</
Context
>
根據(jù)自己的實際情況,設(shè)置這里的docBase 和workDir的路徑.docBase是說明文檔的路徑,workDir是網(wǎng)站程序的路徑,如果用相對路徑,則是在%CATALINA_HOME %\webapp目錄下,path是訪問的路徑
參考官方文檔:
Any XML file in the
$CATALINA_HOME/conf/[engine_name]/[host_name]
directory is assumed to contain a
Context
element (and its associated subelements) for a single web application. The
docBase
attribute of this
<Context>
element will typically be the absolute pathname to a web application directory, or the absolute pathname of a web application archive (WAR) file (which will not be expanded).
Any web application archive file within the application base (appBase) directory that does not have a corresponding directory of the same name (without the ".war" extension) will be automatically expanded, unless the
unpackWARs
property is set to
false
. If you redeploy an updated WAR file, be sure to delete the expanded directory when restarting Tomcat, so that the updated WAR file will be re-expanded (note that the auto deployer will automatically take care of this if it is enabled).
Any subdirectory within the
application base directory
that appears to be an unpacked web application (that is, it contains a
/WEB-INF/web.xml
file) will receive an automatically generated
Context
element, even if this directory is not mentioned in the
conf/server.xml
file. This generated Context entry will be configured according to the properties set in any
DefaultContext
element nested in this Host element. The context path for this deployed Context will be a slash character ("/") followed by the directory name, unless the directory name is ROOT, in which case the context path will be an empty string ("").
你也可以在這兩個目錄下創(chuàng)建其它xml的文件
但是這時你通過瀏覽器訪問
http://ycoe.vicp.net
或
http://yvor.vicp.net
時并不能瀏覽到你的網(wǎng)頁,因為它把這些網(wǎng)址解析到廣域網(wǎng)上去了,除非你用域名綁定.
為了讓局域本機(jī)不把這兩個網(wǎng)址解析到廣域網(wǎng)上去.我們可以通過以下設(shè)置實現(xiàn)(Windows XP,其它操作系統(tǒng)沒有試過):
1.用文本編輯器打開C:\WINDOWS\system32\drivers\etc目錄的hosts文件
2.在內(nèi)容最后另起一行,添加以下內(nèi)容:
??????????? 127.0.0.1?????? ycoe.vicp.net
??????????? 127.0.0.1?????? yvor.vicp.net
可以由上面的注釋部分了解它的作用:
#?Copyright?(c)?1993-1999?Microsoft?Corp.
#
#?This?is?a?sample?HOSTS?file?used?by?Microsoft?TCP/IP?for?Windows.
#
#?This?file?contains?the?mappings?of?IP?addresses?to?host?names.?Each
#?entry?should?be?kept?on?an?individual?line.?The?IP?address?should
#?be?placed?in?the?first?column?followed?by?the?corresponding?host?name.
#?The?IP?address?and?the?host?name?should?be?separated?by?at?least?one
#?space.
#
#?Additionally,?comments?(such?as?these)?may?be?inserted?on?individual
#?lines?or?following?the?machine?name?denoted?by?a?'#'?symbol.
#
#?For?example:
#
#??????102.54.94.97?????rhino.acme.com??????????#?source?server
#???????38.25.63.10?????x.acme.com??????????????#?x?client?host
到這里,全部的配置已經(jīng)完成了.重啟Tomcat,打開
http://ycoe.vicp.net
或
http://yvor.vicp.net
就可以看到預(yù)期的效果了.呵呵
下載相關(guān)文件
http://files.cnblogs.com/ycoe/Catalina.rar
--原創(chuàng)文章,可以隨意復(fù)制發(fā)表,但請注明出處與作者
BY YCOE
TomCat 多虛擬站點配置
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】 元
喜歡作者