我正在通过发布管道从Azure DevOps部署Azure应用服务,该发布管道配置为在构建代理上执行Azure应用服务部署任务。部署任务的目标是我的App Service的根目录,因此它将部署在我的'\ site \ wwwroot \'文件夹中。
我的项目是Laravel PHP Web应用程序,因此默认文档设置为'index.php'。我的应用程序已部署到“ \ site \ wwwroot \”,但是设置为默认文档的“ index.php”文件的位置却位于“ \ site \ wwwroot \”中。
不是大问题,对吧?只需将应用程序目录设置为“ \ 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上的位置。
答案 0 :(得分:0)
通过为Azure App Service提供Kudu环境变量,您可以指定从Azure DevOps(或Git,BitBucket等)将源代码部署到的位置。请查看在Azure门户的“应用程序设置”部分中为我的Azure应用程序服务配置的以下环境变量。
这使我可以指示代码的部署位置。否则,似乎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容器,并使用它(我不想这样做)。