前言
本文將解決以下問題:
- 如何將Linux下任意位置的專案(虛擬目錄)部署到tomcat?
- 如何將專案部署到服務器特定埠?
- 如何在一個服務器上部署多個web應用?
本例中 系統:Linux version 3.10.0-514.el7.x86_64、tomcat版本:8.0.30.0、jdk 版本:jdk1.8.0
場景實體
將任意目錄部署到tomcat
實作方法: 修改/增加server.xml檔案中以下配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/tomcat/apache-tomcat-8.0.30/fantasy" debug="0" privileged="true" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
解釋 :
- ntext元素:每個Context元素代表了運行在虛擬主機上的單個Web應用
- docBase 屬性:自己web應用的路徑,可以是相對路徑也可以是絕對路徑,相對路徑是相對于host的webapps,絕對路徑如上例,
- path 屬性:即要建立的虛擬目錄,是tomcat訪問這個應用的URL路徑,如果為空則代表訪問路徑為web應用的根目錄,訪問路徑:
http://ip:port、如果非空則訪問路徑:http://ip:port/path, - reloadable:如果這個屬性設為true,Tomcat服務器在運行狀態下會監視在
WEB-INF/classes和Web-INF/lib目錄CLASS檔案的改變,如果監視到有class檔案被更新,服務器自動重新加載Web應用,這樣我們可以在不重啟tomcat的情況下改變應用程式
將專案部署到tomcat任意埠
實作方法: 修改server.sml檔案中Connector 的 port 屬性,訪問方式同上
<Connector port="2727" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
解釋:
- port 屬性:指定web應用埠(暴露一個socket埠來accept客戶端的鏈接)
- protocol 屬性:使用的網路協議,表示tomcat使用何種方式來接受和處理client端請求,
HTTP/1.1是默認值,等效于org.apache.coyote.http11.Http11Protocol - connectionTimeout 屬性:當client與tomcat建立連接之后,在”connectionTimeout”時間之內,仍然沒有得到client的請求資料,此時連接將會被斷開.此值的設定需要考慮到網路穩定型,同時也有性能的考慮.它和tcp的配置選項中的”socket_timeout”仍有區別,connectionTimeout只會在鏈接建立之后,得到client發送http-request資訊前有效.
一個tomcat部署多個專案
實作方法: server.sml檔案中增加service元素
<Service name="Catalina2">
<Connector port="2727" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8445" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="fantasy" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/tomcat/apache-tomcat-8.0.30/fantasy" debug="0" privileged="true" reloadable="true"/>
<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>
解釋:
一個 service 代表一個web應用實體 ;同一個 server.xml 檔案中每個 service 的 name 值不能相同;同一個 server.xml 檔案中每個 service 的 redirectPort 、port 值不能相同
完整配置
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<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>
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/tomcat/apache-tomcat-8.0.30/webapps/ROOT" debug="0" privileged="true" reloadable="true"/>
<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>
<Service name="Catalina2">
<Connector port="2727" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8445" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="fantasy" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/root/tomcat/apache-tomcat-8.0.30/fantasy" debug="0" privileged="true" reloadable="true"/>
<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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447035.html
標籤:其他
上一篇:Python 可變物件的賦值
下一篇:用python放煙花,節約又環保
