Поделиться через


Создание веб-ролей и рабочих ролей PHP

Обзор

Внимание

Облачные службы (классическая версия) теперь устарела для всех клиентов с 1 сентября 2024 года. Все существующие запущенные развертывания будут остановлены и завершены корпорацией Майкрософт, и данные будут постоянно потеряны начиная с октября 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой. Это новая модель развертывания на основе Azure Resource Manager.

В этом руководстве показано, как создать веб-роли PHP или рабочие роли в среде разработки Windows, выбрать определенную версию PHP из доступных версий, изменить конфигурацию PHP, включить расширения и, наконец, развернуть в Azure. Здесь также описывается, как создать веб-роль или рабочую роль для использования среды выполнения PHP (с настраиваемой конфигурацией и расширениями), которая предоставляется пользователем.

Azure предоставляет три вычислительные модели для запуска приложений: веб-приложения Azure, виртуальные машины Azure и облачные службы Azure. Все три модели поддерживают PHP. Облачные службы — это модель обслуживания типа платформа как услуга (PaaS), в рамках которой используются веб-роли и рабочие роли. Веб-роль облачной службы предоставляет выделенный веб-сервер служб IIS, на котором размещаются интерфейсные веб-приложения. Рабочая роль может выполнять асинхронные, длительные или бессрочные задачи независимо от взаимодействия пользователя или ввода.

Подробнее об этих моделях можно узнать в статье о вариантах размещения вычислительных сред, предоставляемых Azure.

загрузить Azure SDK для PHP?

Пакет Azure SDK для PHP состоит из нескольких компонентов. В этой статье используются два из них: Azure PowerShell и эмуляторы Azure. Эти два компонента можно установить при помощи установщика веб-платформы Майкрософт. Подробнее: Установка и настройка Azure PowerShell.

Создание проекта облачных служб

Первым шагом в создании веб-роли или рабочей роли PHP является создание проекта службы Azure. Проект службы Azure служит логическим контейнером для веб-ролей и рабочих ролей, а также содержит определения службы проекта (CSDEF) и файлы конфигурации службы (CSCFG).

Чтобы создать новый проект службы Azure, запустите Azure PowerShell от имени администратора и выполните следующую команду.

PS C:\>New-AzureServiceProject myProject

Эта команда создает новый каталог (myProject), в который можно добавить веб-роли и рабочие роли.

Добавление веб-ролей PHP и ролей работников

Чтобы добавить в проект веб-роль PHP, выполните следующую команду из корневого каталога проекта.

PS C:\myProject> Add-AzurePHPWebRole roleName

Для рабочей роли используйте следующую команду:

PS C:\myProject> Add-AzurePHPWorkerRole roleName

Примечание.

Параметр roleName является необязательным. Если он опущен, имя роли будет создано автоматически. Первая веб-роль создается с именем WebRole1, вторая — WebRole2 и т. д. Первая рабочая роль создается с именем WorkerRole1, вторая — WorkerRole2 и т. д.

Использование собственной среды выполнения PHP

В некоторых случаях вместо выбора встроенной среды выполнения PHP и настройки ее, как описано ранее, может потребоваться предоставить собственную среду выполнения PHP. Например, вы можете использовать в рабочей роли или веб-роли ту же среду выполнения PHP, что и в среде разработки. Этот процесс упрощает выполнение поведения приложения в рабочей среде.

Настройка собственной среды выполнения PHP для веб-роли

Чтобы использовать в веб-роли собственную среду выполнения PHP, выполните приведенные ниже действия.

  1. Создайте проект службы Azure и добавьте веб-роль PHP, как описано ранее в этой статье.

  2. Создайте папку php в папке bin, которая находится в корневом каталоге веб-роли, затем добавьте в папку php среду выполнения PHP (все двоичные файлы, файлы конфигурации, вложенные папки и т. д.).

  3. (НЕОБЯЗАТЕЛЬНО) Если среда выполнения PHP использует драйверы Майкрософт для PHP для SQL Server, необходимо настроить веб-роль для установки SQL Server Native Client 2012 при подготовке. Для этого добавьте установщик sqlncli.msi x64 в папку bin в корневом каталоге веб-роли. Скрипт запуска, описанный на следующем шаге, запустит установщик без вмешательства пользователя при подготовке роли. Если среда выполнения PHP не использует драйверы Майкрософт для PHP для SQL Server, можно удалить следующую строку из скрипта, показанного на следующем шаге:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Чтобы службы IIS использовали вашу среду PHP для обработки запросов для страниц .php, определите задачу запуска, изменяющую настройки IIS. Для этого откройте setup_web.cmd файл (в bin файле корневого каталога веб-роли) в текстовом редакторе и замените его содержимое следующим скриптом:

    @ECHO ON
    cd "%~dp0"
    
    if "%EMULATED%"=="true" exit /b 0
    
    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
    SET PHP_FULL_PATH=%~dp0php\php-cgi.exe
    SET NEW_PATH=%PATH%;%RoleRoot%\base\x86
    
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%',maxInstances='12',idleTimeout='60000',activityTimeout='3600',requestTimeout='60000',instanceMaxRequests='10000',protocol='NamedPipe',flushNamedPipe='False']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PATH',value='%NEW_PATH%']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%PHP_FULL_PATH%'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/handlers /+"[name='PHP',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='%PHP_FULL_PATH%',resourceType='Either',requireAccess='Script']" /commit:apphost
    %WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /"[fullPath='%PHP_FULL_PATH%'].queueLength:50000"
    
  5. Добавьте файлы приложения в корневой каталог веб-роли, который становится корневым каталогом веб-сервера.

  6. Опубликуйте приложение, как описано в разделе "Публикация приложения".

Примечание.

Скрипт download.ps1bin папке корневого каталога веб-роли) можно удалить после выполнения описанных выше действий для использования собственной среды выполнения PHP.

Настройка собственной среды выполнения PHP для рабочей роли

Чтобы использовать в рабочей роли собственную среду выполнения PHP, выполните приведенные ниже действия.

  1. Создайте проект службы Azure и добавьте рабочую роль PHP, как описано ранее в этой статье.

  2. Создайте папку php в корневом каталоге рабочей роли, а затем добавьте в папку php среду выполнения PHP (все двоичные файлы, файлы конфигурации, вложенные папки и т. д.).

  3. (НЕОБЯЗАТЕЛЬНО) Если среда выполнения PHP использует драйверы Майкрософт для PHP для SQL Server, необходимо настроить рабочую роль для установки SQL Server Native Client 2012 при подготовке. Для этого добавьте установщик sqlncli.msi x64 в корневой каталог рабочей роли. Скрипт запуска, описанный на следующем шаге, запустит установщик без вмешательства пользователя при подготовке роли. Если среда выполнения PHP не использует драйверы Майкрософт для PHP для SQL Server, можно удалить следующую строку из скрипта, показанного на следующем шаге:

    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
  4. Определите задачу запуска, которая при подготовке роли добавляет исполняемый файл php.exe в переменную среды PATH рабочей роли. Для этого откройте setup_worker.cmd файл (в корневом каталоге рабочей роли) в текстовом редакторе и замените его содержимое следующим скриптом:

    @echo on
    
    cd "%~dp0"
    
    echo Granting permissions for Network Service to the web root directory...
    icacls ..\ /grant "Network Service":(OI)(CI)W
    if %ERRORLEVEL% neq 0 goto error
    echo OK
    
    if "%EMULATED%"=="true" exit /b 0
    
    msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
    
    setx Path "%PATH%;%~dp0php" /M
    
    if %ERRORLEVEL% neq 0 goto error
    
    echo SUCCESS
    exit /b 0
    
    :error
    
    echo FAILED
    exit /b -1
    
  5. Добавьте файлы вашего приложения в корневой каталог рабочей роли.

  6. Опубликуйте приложение, как описано в разделе "Публикация приложения".

Запуск приложения в эмуляторах вычисления и хранения

Эмуляторы Azure представляют собой локальную среду, в которой можно тестировать приложения Azure перед их развертыванием в облаке. Существует несколько различий между эмуляторами и средой Azure. Чтобы лучше понять эти различия, ознакомьтесь с служба хранилища Azure эмулятором для разработки и тестирования.

Для использования эмулятора вычислений необходимо установить PHP локально. Эмулятор вычислений использует локальную установку PHP для запуска приложения.

Чтобы выполнить свой проект в эмуляторах, выполните следующую команду из корневого каталога своего проекта.

PS C:\MyProject> Start-AzureEmulator

Следующий пример выходных данных похож на то, что вы должны увидеть:

Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started

Приложение, работающее в эмуляторе, можно открыть веб-браузер и просмотреть локальный адрес, отображаемый в выходных данных (http://127.0.0.1:81 в примере выходных данных, показанных ранее).

Чтобы остановить эмуляторы, выполните следующую команду:

PS C:\MyProject> Stop-AzureEmulator

Публикация приложения

Чтобы опубликовать приложение, сначала импортируйте параметры публикации с помощью командлета Import-AzurePublishSettingsFile . После этого опубликуйте приложение, используя командлет Publish-AzureServiceProject . Подробнее о входе: Установка и настройка Azure PowerShell.

Следующие шаги

Дополнительную информацию можно найти в Центре разработчика PHP.