繁体   English   中英

在 Tomcat 的根目录部署我的应用程序

[英]Deploying my application at the root in Tomcat

我有我的应用程序的战争文件。 我需要在根级别部署它。 当前 URL 是http://localhost:8080/war_name/application_name

你有几个选择:

  1. 从 tomcat 中删除开箱即用的ROOT/目录,并在部署之前将您的 war 文件重命名为ROOT.war

  2. 将您的战争部署为(从您的示例中) war_name.war并在conf/server.xml配置上下文根以使用您的战争文件:

     <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>

第一个更容易,但有点笨拙。 第二种可能是更优雅的方式。

在 tomcat v.7(原版安装)上

在您的 conf/server.xml 文件末尾添加以下内容,就在</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 中,我可以在 /ROOT 访问 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>部分

我知道我的答案与其他一些答案有些重叠,但这是一个具有一些优势的完整解决方案。 这适用于 Tomcat 8:

  1. 主应用程序从根提供服务
  2. 维护通过 Web 界面部署 war 文件。
  3. 主应用程序将在端口 80 上运行,而只有管理员可以访问管理文件夹(我意识到 *nix 系统需要超级用户才能绑定到 80,但在 Windows 上这不是问题)。

这意味着您只需要重新启动 tomcat 一次,更新后的 war 文件就可以毫无问题地部署了。

步骤 1:在 server.xml 文件中,找到连接器条目并将其替换为:

<Connector 
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

第 2 步:在<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/ 受密码保护的 web 应用程序需要privileged="true"属性。

当您部署与根 ( <Context path="/" docBase="CAS">匹配的 CAS.war 文件时,您必须在管理面板中重新加载该文件,因为它不会随着部署而刷新。

不要在您的上下文中包含<Context path="/CAS" docBase="CAS"> ,因为它会禁用管理器选项来部署战争文件。 这意味着您可以通过两种方式访问​​该应用程序: http://example.com/ : http://example.com/http://example.com/APP/

第 3 步:为了防止对 root 和 manager 文件夹的不必要访问,请为这些上下文标签添加一个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 并保持通过 Web 界面动态部署战争文件的能力时对管理 Web 应用程序文件夹的访问。

如果您想将此用于使用不同 IP 地址的多个应用程序,您可以将 IP 地址添加到连接器 ( address="143.21.2.1" )。

如果你想从根运行多个 web 应用程序,你可以复制服务标签(第二个使用不同的名称)并将<Context path="/" docBase="CAS">更改为例如<Context path="/" docBase="ICR">

删除$CATALINA_HOME/webapps/ROOT 更新$CATALINA_HOME/conf/server.xml ,确保 Host 元素如下所示:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="false" deployOnStartup="false">
  <Context path="" docBase="myApp"></Context>

它适用于 Tomcat 8。 autoDeploy 和 deployOnStartup 需要设置为 false 以防止 tomcat 两次部署myApp

最快的方式。

  1. 确保您没有部署 ROOT 应用程序,如果您有,请取消部署

  2. 将您的战争重命名为 ROOT.war,部署,仅此而已,无需更改配置

添加到@Dima的答案中,如果您使用maven来构建您的包,您可以告诉它在pom.xml中将您的 WAR 文件名设置为ROOT

<build>
    <finalName>ROOT</finalName>
</build>

默认情况下, tomcat会将ROOT.war webapp 部署到根上下文 ( / ) 中。

添加到@Rob Hruska 的 sol 中,server.xml 部分中的此设置有效:

<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>

注意:在某些情况下可能需要 override="true"。

打开 tomact 管理器 url :- http://localhost:8080/manager/html/
然后在应用程序中,您会看到部署了路径为“/”的应用程序
只需取消部署即可。
在此处输入图片说明 应用程序的 war 文件重命名ROOT.war并将其放在路径中:-
C:\\Program Files\\Apache Software Foundation\\Tomcat 8.5\\webapps
启动你的 Tomcat 不需要额外的配置。
现在我们可以在http://localhost:8080看到我们的应用程序主页或配置的 url

在我的服务器中,我正在使用它,root autodeploy 工作正常:

   <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 &quot;%r&quot; %s %b"/>
        <Context path="/mysite" docBase="mysite" reloadable="true"/>
    </Host>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM