虚拟路径搞乱了部署

时间:2019-10-11 15:12:07

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

我正在尝试在azure devops中自动化php部署。
在现有环境中,应用程序服务具有指向site \ wwwroot \ public的虚拟路径: enter image description here

部署时,所有数据都复制到此目录,而不是按预期复制到site \ wwwroot: enter image description here

当我创建一个新的应用程序服务(虚拟路径的默认值设置为site \ wwwroot)时,所有内容都会部署到site \ wwwroot: enter image description here

因此,我的测试表明,部署取决于Configuration -> Tab 'Path mappings' -> Virtual applications and directories下的设置。 在我看来,这似乎是个错误,因为wwwroot应该始终如其名所示是根。

如果我尝试通过添加web.config来解决此问题,则无法进行重写,因为存在某种形式的相对依赖性。

<rule name="reroute to /public" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{PATH_INFO}" pattern="^/public/" negate="true" />
    </conditions>
    <action type="Rewrite" url="\public\{R:0}" />
</rule> 

我可以看到登录页面,但是我既不能登录也无法打开任何其他链接的页面,因为php希望请求发生在@ domain.com / call上,但是重写将这些调用更改为@ domain.com / public / call,所以它们都失败了。

因此,唯一的解决方案似乎是将虚拟路径设置为site \ wwwroot \ public,以使页面正常工作。 如果我部署了,我会暂时将其更改为site \ wwwroot。我不喜欢这样,但这似乎是最干净的解决方案。

1 个答案:

答案 0 :(得分:0)

问题修改后的答案

感谢分享这些详细信息。

根据第一个屏幕截图,您已将默认根路径设置为site\wwwroot\public。这意味着无论您如何部署到所有应用程序,其根路径始终为site\wwwroot\public。因此,您的实际部署路径仍为site\wwwroot\public

但是实际上,对于原始设置(此根路径配置没有任何更改),它是site\wwwroot

如果您未在Azure门户中修改物理路径值,则Azure app service deploy task无法部署到路径site\wwwroot。因为您已将自定义的根路径设置为site\wwwroot\public

enter image description here


此外,要使路径可扩展,为什么不将默认虚拟路径设置为site\wwwroot,然后使用以下步骤之一将路径更改为site\wwwroot\public?您知道,扩展路径很容易,但是很难缩短路径级别。

方法1扩展路径:

指定虚拟应用程序的值:

enter image description here

由于这是一个可选参数,因此如果您未指定其值,它将默认将Web应用程序部署到根路径。

方法2扩展路径:

另一种方法是使用文件夹进行部署。

  1. 使用复制文件任务 ZIP 文件复制到public 该文件夹位于工件文件夹中,例如.../a/public

enter image description here

  1. 在输入框包装中指定$(Build.ArtifactStagingDirectory) 或Azuer应用服务部署任务的文件夹

enter image description here

现在,在部署任务成功之后,您将看到ZIP文件位于App服务的public文件夹中。