【问题标题】:How to Deploy Multiple Apps on Azure WebApps如何在 Azure WebApps 上部署多个应用程序
【发布时间】:2016-11-24 08:48:32
【问题描述】:

我想在同一个 Azure WebApp 上部署两个不同的应用程序,如下所示:

webapp.azurewebsites.net/api/ <-- run the Java REST API here
webapp.azurewebsites.net/site/ <- put the Angular2 app here

问题

这两个应用程序都部署在服务器上,但目前我只能使用web.config 运行 REST API,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Force HTTPS" enabled="true">
          <match url="(.*)" ignoreCase="false"/>
          <conditions>
            <add input="{HTTPS}" pattern="off"/>
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent"/>
        </rule>
      </rules>
    </rewrite>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
                  arguments="-jar D:\home\site\wwwroot\webapps\rest-api.war">
    </httpPlatform>
  </system.webServer>
</configuration>

但我无法访问服务器上的 Angular2 应用程序,也找不到如何同时配置 Java 应用程序和 Angular2 应用程序的文档。

我还尝试使用 Application settings 下 Azure 仪表板中的 Virtual applications and directories 设置来实现这一点 - 但它不起作用,我找不到关于如何实现这一点的体面文档,或者如果这是甚至可以设置Virtual applications and directories

我试图移动 Angular2 站点,但无法配置服务器以便在 Java 应用程序运行时可以访问 Angular2 应用程序。

问题

有人能给我指出一个关于如何实现这一点的好文档,或者详细描述部署过程(关于配置,例如 Azure 仪表板中的 Application settingsweb.config 文件)?

【问题讨论】:

    标签: azure web-config azure-web-app-service


    【解决方案1】:

    根据我的经验,我认为在 Azure WebApps 上部署多个应用程序的最佳方式是为您的 Azure Webapp 设置 Virtual applications and directoriesApplication Settings,请参见下图。

    作为参考,请参考SO线程Add virtual directory to existing website on Azure的答案。

    Azure 网站支持虚拟目录。有关可以通过 Azure 管理门户执行的操作,请参阅配置 Azure 网站。在 Azure 门户中,单击网站并转到配置,然后向下滚动到虚拟应用程序和目录(最后一个配置部分)。只需输入您的虚拟目录和相对于站点根目录的物理路径,然后单击保存。

    【讨论】:

    • 你知道是否可以访问server.xml并配置Tomcat服务器吗? - 问题是我无法使用嵌入式 Tomcat(来自 Spring),因为网站和嵌入式服务器存在冲突(但我可以访问嵌入式服务器的 server.xml),如果我使用虚拟目录,我无法访问 Tomcat 设置.
    • @TobiasHelbich 您无法访问server.xml 文件来配置安装在D:` (except home` 目录中的Tomcat 服务器)因为没有权限。但是您可以通过 Kudu 控制台将新的 Tomcat 服务器上传到wwwroot 目录,然后按照官方的tutorial 配置和启动/停止它。作为参考,SO 线程stackoverflow.com/questions/27926673/tomcat-8-on-azure-websites 与您的非常相似。希望对您有所帮助。
    • 作为详细的补充,我发现这篇文章很有用:c-sharpcorner.com/blogs/…
    【解决方案2】:

    关于您答案的第二部分,在调查该主题时,我发现这篇博文是对仪表板中的应用程序设置如何与 Web.config 文件交互的最佳解释: https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

    特别是——

    如果应用程序设置碰巧已经存在于您的 web.config 文件中,Windows Azure 网站将在运行时使用与您的网站关联的值自动覆盖它们。

    因此,Azure 门户中的“应用程序设置”选项卡将优先于您的 web.config 值。

    【讨论】:

    • 感谢您的快速回答,这有助于了解这两者之间的交互。但我的问题仍然是我的应用程序无法运行,也找不到任何有关如何实现此目的的文档。
    • 在本地运行时能否获得所需的行为?即在您的本地主机上?
    • 后端有一个嵌入式tomcat,并从嵌入式tomcat启动(如果没有安装tomcat,我的本地开发环境就是这种情况)。所以我无法在本地重现这个,因为我同时运行这两个应用程序但在不同的端口和服务器上。 Azure 服务器用于测试配置 - 我不关心本地设置(因为它与 Azure 不同),我只想在 Azure 系统上运行,目前这只适用于 Java 应用程序。
    • 此链接描述了与您尝试做的类似的事情:blogs.msdn.microsoft.com/tomholl/2014/09/21/…
    • 作者建议创建两个独立的项目,一个一个地部署。请注意,一个是根,另一个需要在它之后部署,并且在 Azure 应用程序设置上定义虚拟应用程序设置之后。希望这会有所帮助!
    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2018-05-21
    • 2019-07-02
    • 1970-01-01
    • 2017-08-30
    • 2018-05-01
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多