Создание веб-ролей и рабочих ролей 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, выполните приведенные ниже действия.
Создайте проект службы Azure и добавьте веб-роль PHP, как описано ранее в этой статье.
Создайте папку
php
в папкеbin
, которая находится в корневом каталоге веб-роли, затем добавьте в папкуphp
среду выполнения PHP (все двоичные файлы, файлы конфигурации, вложенные папки и т. д.).(НЕОБЯЗАТЕЛЬНО) Если среда выполнения PHP использует драйверы Майкрософт для PHP для SQL Server, необходимо настроить веб-роль для установки SQL Server Native Client 2012 при подготовке. Для этого добавьте установщик sqlncli.msi x64 в папку
bin
в корневом каталоге веб-роли. Скрипт запуска, описанный на следующем шаге, запустит установщик без вмешательства пользователя при подготовке роли. Если среда выполнения PHP не использует драйверы Майкрософт для PHP для SQL Server, можно удалить следующую строку из скрипта, показанного на следующем шаге:msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Чтобы службы 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"
Добавьте файлы приложения в корневой каталог веб-роли, который становится корневым каталогом веб-сервера.
Опубликуйте приложение, как описано в разделе "Публикация приложения".
Примечание.
Скрипт download.ps1
(в bin
папке корневого каталога веб-роли) можно удалить после выполнения описанных выше действий для использования собственной среды выполнения PHP.
Настройка собственной среды выполнения PHP для рабочей роли
Чтобы использовать в рабочей роли собственную среду выполнения PHP, выполните приведенные ниже действия.
Создайте проект службы Azure и добавьте рабочую роль PHP, как описано ранее в этой статье.
Создайте папку
php
в корневом каталоге рабочей роли, а затем добавьте в папкуphp
среду выполнения PHP (все двоичные файлы, файлы конфигурации, вложенные папки и т. д.).(НЕОБЯЗАТЕЛЬНО) Если среда выполнения PHP использует драйверы Майкрософт для PHP для SQL Server, необходимо настроить рабочую роль для установки SQL Server Native Client 2012 при подготовке. Для этого добавьте установщик sqlncli.msi x64 в корневой каталог рабочей роли. Скрипт запуска, описанный на следующем шаге, запустит установщик без вмешательства пользователя при подготовке роли. Если среда выполнения PHP не использует драйверы Майкрософт для PHP для SQL Server, можно удалить следующую строку из скрипта, показанного на следующем шаге:
msiexec /i sqlncli.msi /qn IACCEPTSQLNCLILICENSETERMS=YES
Определите задачу запуска, которая при подготовке роли добавляет исполняемый файл
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
Добавьте файлы вашего приложения в корневой каталог рабочей роли.
Опубликуйте приложение, как описано в разделе "Публикация приложения".
Запуск приложения в эмуляторах вычисления и хранения
Эмуляторы 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.