laravel - Azure 应用服务存在于子目录中时,如何设置其默认文档?
问题描述
我正在通过配置为在我的构建代理上执行 Azure App Service Deploy 任务的发布管道从 Azure DevOps 部署 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 应用程序的哪个位置。
解决方案
您可以通过为您的 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 容器并改用它(我不想这样做)。
推荐阅读
- python-3.x - 为什么 Python 的单元测试中没有 assertAll
- javascript - 在 D365 中控制文本框控件的文本
- c++ - 尽管执行完全相同的操作,为什么双 while 循环比单个 while 循环执行得更快?
- html - 我正在尝试在与输入表单的部分视图页面相同的页面上显示部分视图,但我不确定我是否正确执行
- git - 我在哪里更新 Windows 上 git bash 的环境变量
- asp.net-core-webapi - 实体框架多连接错误
- java - 在 if 条件下使用异常
- java - 无法运行带有 javaFX 捆绑依赖项的 .jar 可执行文件
- notepad++ - Notepad++ 7.7.1 使用 NPPExport 突出显示颜色语法不起作用
- python - 对具有最常见键值对的字典进行分组