当子目录中存在Azure App Service的默认文档时,如何设置它?

时间:2018-09-14 18:25:19

标签: laravel azure iis azure-devops azure-pipelines

我正在通过发布管道从Azure DevOps部署Azure应用服务,该发布管道配置为在构建代理上执行Azure应用服务部署任务。部署任务的目标是我的App Service的根目录,因此它将部署在我的'\ site \ wwwroot \'文件夹中。

Azure DevOps release pipeline configuration

我的项目是Laravel PHP Web应用程序,因此默认文档设置为'index.php'。我的应用程序已部署到“ \ site \ wwwroot \”,但是设置为默认文档的“ index.php”文件的位置却位于“ \ site \ wwwroot \”中。

Azure App Service Application Settings for default document and virtual application directories

不是大问题,对吧?只需将应用程序目录设置为“ \ site \ wwwroot \ public”,该应用程序即可运行,因为它现在可以找到我的默认文档(index.php)。除了一个问题。

当Azure DevOps部署到Azure应用程序服务时,它将部署到您在Azure中设置的应用程序目录。由于现在我的根目录设置为'\ site \ wwwroot \ public',以解决查找默认文档的问题,因此AzureDevops会将后续的生成部署到'\ site \ wwwroot \ public'文件夹中。

理想情况下,我想将“ index.php”文件保留在“ \ site \ wwwroot \ public”文件夹中,因为当我将其移至项目的根目录时会引起问题。我似乎无法弄清楚如何告诉Azure在我的公用文件夹中查找默认文档。我需要编写一个web.config并将其放置在我的项目根目录中以供IIS找到吗?


更新:

我仍在尝试解决我遇到的这个问题。我无法配置Azure或Azure DevOps来区分应用程序部署到的目录和服务于应用程序的目录。

我不能简单地创建两个虚拟应用程序,因为这会将我的根目录暴露给该端点。我需要能够简单地指示Azure DevOps将应用程序放置在Web App上的位置。

1 个答案:

答案 0 :(得分:0)

通过为Azure App Service提供Kudu环境变量,您可以指定从Azure DevOps(或Git,BitBucket等)将源代码部署到的位置。请查看在Azure门户的“应用程序设置”部分中为我的Azure应用程序服务配置的以下环境变量。

Environment variable configured for the source code management path (SCM_REPOSITORY_PATH and SCM_TARGET_PATH Kudu variables)

这使我可以指示代码的部署位置。否则,似乎Kudu的默认源代码管理路径来自您的虚拟应用程序路径。

进一步阅读: https://github.com/projectkudu/kudu/wiki/Deploying-inplace-and-without-repository


更新:

看来,尽管您可以使用Kudu环境变量配置代码部署的位置,但您仍然只能使用虚拟应用程序的文件夹名称。

例如,如果我将SCM_TARGET_PATH设置为\home\sites\app,并且我有一个虚拟应用程序,其虚拟路径为/,而物理路径为\home\sites\app\public,则Azure DevOps将部署您的编码到\home\sites\app\public中,而不是预期的\home\sites\app中。

这是一个很大的不便,我无法托管Laravel应用程序,因为我的连续部署将无法以Azure当前的工作方式运行。我将不得不将代码发布到Docker容器,并使用它(我不想这样做)。