Создание веб-ролей и рабочих ролей 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 использует Драйверы Microsoft для 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.