Виртуальный путь портит развертывание - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь автоматизировать развертывание php в Azure Devops.
В существующей среде у службы приложения есть виртуальный путь, указывающий на сайт \ wwwroot \ public: enter image description here

При развертывании все данные копируются в этот каталог, а не, как ожидается, на сайт \ 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, поэтому все они перестают работать.

Таким образом, единственное решение, по-видимому, заключается в установке виртуального пути к сайту \ wwwroot \ public для страницы. работать. И если я разверну его, я временно изменю его на site \ wwwroot. Мне это не нравится, но, похоже, это самое чистое решение.

1 Ответ

0 голосов
/ 12 октября 2019

Ответ отредактирован после изменения вопроса

Спасибо за предоставленную информацию.

Согласно первому скриншоту, вы установили корневой путь по умолчанию как 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, чтобы расширить путь:

Указано значение Виртуальныйapplication :

enter image description here

Поскольку это необязательный аргумент, если вы не указали его значение, оно развернет веб-приложение в корневом каталоге. путь по умолчанию.

Способ 2 для расширения пути:

Другой способ - развертывание с папкой.

  1. Использование Копированиефайловая задача , чтобы скопировать файлы ZIP в папку public, которая в папке артефактов похожа на .../a/public.

enter image description here

Укажите $(Build.ArtifactStagingDirectory) в поле ввода Пакет или папку задачи развертывания службы приложений Azuer.

enter image description here

Теперь, после успешного выполнения задачи развертывания, вы увидите, что файл ZIP находится в папке public в службе приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...