我正在通过配置为在我的生成代理上执行Azure应用服务部署任务的发布管道从Azure DevOps部署Azure应用服务。部署任务的目标是我的应用服务的根,因此它将部署在我的“\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应用程序上的何处。
3条答案
按热度按时间46scxncf1#
由于在将应用程序目录设置为'\site\wwwroot\public'后工作正常,因此您可以添加一个具有'site\wwwroot\public'物理路径的新虚拟应用程序,而不必更改原来的虚拟应用程序。
然后,有两个项目,例如:
关于通过Azure DevOps部署,只需将应用部署到该应用服务(site\wwwroot)即可。
之后,您可以通过[app service url]\PHP访问您的应用。
zkure5ic2#
通过为Azure应用程序服务提供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容器,并使用它代替(我不想这样做)。
kq0g1dla3#
将function /Illuminate/Foundation/helps.php/asset()函数更改为如下所示: