我有应用程序的 war 文件。我需要在根级别部署它。当前的 URL 是 http://localhost:8080/war_name/application_name。
http://localhost:8080/war_name/application_name
你有两个选择:
从 tomcat 删除开箱即用的 ROOT/目录,并在部署之前将 war 文件重命名为 ROOT.war。
ROOT/
ROOT.war
将 war 部署为(根据示例) war_name.war并在 conf/server.xml中配置 上下文根以使用 war 文件:
war_name.war
conf/server.xml
<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
The first one is easier, but a little more kludgy. The second one is probably the more elegant way to do it.
关于 tomcat v. 7(香草装置)
在 conf/server.xml 中,在文件末尾的 </Host>结束标记之前添加以下内容:
</Host>
<Context path="" docBase="app_name"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>
请注意 DocBase属性。这是最重要的部分。在更改根 Web 应用程序之前,要么确保已经部署了 app _ name,要么只需将未打包的 webapp (app _ name)复制到 tomcat 的 webapps 文件夹中。启动,访问 root,在那里看到你的 app _ name!
在 tomcat 7中,通过这些更改,我能够访问/处的 myAPP 和/ROOT 处的 ROOT
<Context path="" docBase="myAPP"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> <Context path="ROOT" docBase="ROOT"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>
将上面的内容添加到 server.xml 中的 <Host>部分
<Host>
最快的方法。
确保没有部署 ROOT 应用程序,如果有的话取消部署
将 war 重命名为 ROOT.war,部署,仅此而已,不需要更改配置
在我的服务器上,我正在使用这个,root 自动部署工作得很好:
<Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true"> <Alias>www.mysite.com</Alias> <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="mysite_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/> <Context path="/mysite" docBase="mysite" reloadable="true"/> </Host>
添加到@Rob Hruska 的 sol 中,在小节中的 server.xml 中的这个设置可以工作:
<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
注意: 在某些情况下可能需要覆盖 = “ true”。
删除 $CATALINA_HOME/webapps/ROOT。更新 $CATALINA_HOME/conf/server.xml,确保 Host 元素看起来像下面的文本:
$CATALINA_HOME/webapps/ROOT
$CATALINA_HOME/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false"> <Context path="" docBase="myApp"></Context>
它可以与 Tomcat 8一起工作。 autoDeploy 和 loyOnStartup 需要设置为 false,以防止 Tomcat 两次部署 myApp。
myApp
我知道我的答案与其他一些答案有些重叠,但这是一个完整的解决方案,有一些优点。这在 Tomcat 8上是可行的:
这意味着您只需要重新启动 tomcat 一次,在更新的 war 文件部署之后就没有问题了。
第一步: 在 server.xml 文件中,找到连接器条目并将其替换为:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
第二步: 在 <Host ...>标签中定义上下文:
<Host ...>
<Context path="/" docBase="CAS"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> <Context path="/ROOT" docBase="ROOT"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> <Context path="/manager" docBase="manager" privileged="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> <Context path="/host-manager" docBase="host-manager" privileged="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>
请注意,我解决了 webapp 文件夹中的所有应用程序。第一个有效地从位置切换根和主应用程序。ROOT 现在在 http://example.com/ROOT上,而主应用程序在 http://example.com/上。受密码保护的 webapps 需要 privileged="true"属性。
http://example.com/ROOT
http://example.com/
privileged="true"
当您部署与 root (<Context path="/" docBase="CAS">)匹配的 CAS.war 文件时,您必须在管理面板中重新加载该文件,因为它不会随部署而刷新。
<Context path="/" docBase="CAS">
不要在上下文中包含 <Context path="/CAS" docBase="CAS">,因为它禁用了 Manager 选项来部署 war 文件。这意味着您可以通过两种方式访问应用程序: http://example.com/和 http://example.com/APP/
<Context path="/CAS" docBase="CAS">
http://example.com/APP/
第三步: 为了防止不必要的访问根和管理器文件夹,向这些上下文标记添加一个 valve,如下所示:
valve
<Context path="/manager" docBase="manager" privileged="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Valve className="org.apache.catalina.valves.RemoteAddrValve" addConnectorPort="true" allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/> </Context>
这实质上限制了访问管理网络应用程序文件夹的人从我自己的域(假 IP 地址)和本地主机时,他们使用默认端口8080和维护的能力,通过网络界面动态部署的 war 文件。
如果您希望对使用不同 IP 地址的多个应用程序使用此方法,可以将 IP 地址添加到连接器(address="143.21.2.1")。
address="143.21.2.1"
如果您想要从根目录运行多个 Web 应用程序,您可以复制 Service 标记(第二个使用不同的名称) ,并将 <Context path="/" docBase="CAS">的 docbase 更改为例如 <Context path="/" docBase="ICR">。
<Context path="/" docBase="ICR">
打开 Tomact 管理器网址:-http://localhost:8080/manager/html/ 然后在应用程序中,您会看到一个路径为“/”的应用程序被部署 < br > 简单地取消部署。 < br > 将应用程序的 war 文件重命名为 根源之战,并将其放在 path:-< br > C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps 启动 Tomcat 不需要额外的配置。 现在我们可以在 < a href = “ http://localhost: 8080”rel = “ nofollow norefrer”> http://localhost:8080看到我们的应用程序主页或配置的 url
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
对于 @ Dima的回答,如果您使用 maven来构建包,您可以告诉它将您的 WAR 文件名设置为 pom.xml中的 ROOT:
maven
pom.xml
ROOT
<build> <finalName>ROOT</finalName> </build>
默认情况下,tomcat将把 ROOT.war webapp 部署到根上下文(/)中。
tomcat
/