Статьи

Создание веб-роли PHP в Azure

Ранее на этой неделе я опубликовал обзор «нового» Windows Azure SDK для PHP . В этом посте я обещал глубже погрузиться в несколько областей SDK. В этой статье я начну выполнять это обещание с рассмотрения того, как использовать Windows Azure PowerShell для создания и публикации веб-роли PHP в Windows Azure. Я предполагаю, что вы создали учетную запись Windows Azure .

Примечание . Если вы хотите просто разместить веб-сайт PHP в Windows Azure, вам следует использовать веб-сайты Windows Azure. В течение бесплатного пробного периода вы можете бесплатно создать до 10 веб-сайтов и до 3-х экземпляров каждого сайта. Если вашему сайту требуется больше лошадиных сил, вы можете перейти в «зарезервированный» режим (хотя этот режим не является бесплатным — см. « Информация о ценах» для получения дополнительной информации). Однако если вы создаете приложение, для которого требуется настраиваемая установка PHP, многоуровневое приложение, приложение, требующее расширенного администрирования, или приложение, требующее расширенной работы в сети, то вам следует рассмотреть веб-роли Windows Azure (т. Е. Платформу Windows Azure. Предложение как услуга).

Основным командлетом PowerShell для создания веб-роли PHP является командлет Add-AzurePHPWebRole . Этот командлет создает локальный каталог, который является готовым к развертыванию приложением PHP (хотя он очень прост — он просто отображает вывод phpinfo ). Вам просто нужно добавить свой код и развернуть его. При развертывании приложения в Windows Azure проект установит PHP и соответствующим образом настроит IIS с помощью установщика веб-платформы. Установленная версия PHP — это последняя версия PHP, доступная через установщик веб-платформы (на момент написания этой статьи это PHP 5.3.13). Установка PHP полностью настраивается — вы можете предоставить свой собственный файл php.ini и каталог расширений, который будет использоваться установкой PHP.

Примечание . Команда Windows Azure надеется в ближайшем будущем сделать выбор из нескольких версий PHP. Кроме того, команда работает над добавлением поддержки разработки и развертывания веб- и рабочих ролей на платформах, отличных от Windows, добавляя команды, доступные в средствах командной строки Windows Azure для Mac и Linux .

Общий обзор командлетов см. В разделе Как использовать Windows Azure PowerShell .

Получить инструменты

Самый простой способ получить командлеты Windows Azure PowerShell — это установить Windows Azure SDK для PHP: загрузить Windows Azure SDK для PHP . По этой ссылке будет загружен установщик веб-платформы и настроен для установки командлетов PowerShell и эмуляторов Windows Azure:

установить на PHP-SDK

Если вы предпочитаете устанавливать только командлеты PowerShell (а не эмуляторы), нажмите кнопку «назад» …

Кнопка назад

… И выберите Windows Azure PowerShell:

только что PowerShell

Импортируйте ваши настройки публикации

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

1. Запустите Windows Azure PowerShell с повышенными привилегиями (в меню « Пуск» найдите Windows Azure PowerShell , щелкните правой кнопкой мыши и выберите « Запуск от имени администратора» ).

2. Загрузите настройки публикации, выполнив команду ниже. Это откроет ваш веб-браузер и потребует от вас входа с учетными данными Windows Azure. ( Запишите, где вы сохранили файл .publishsettings .)

Get-AzurePublishSettingsFile

3. Импортируйте настройки публикации с помощью этой команды:

Import-PublishSettingsFile <путь к загруженному файлу .publishsettings>

Создать PHP веб-роль

После импорта параметров публикации создайте веб-роль PHP, выполнив следующие действия:

1. Создайте новый проект Azure. Обратите внимание, что эта команда создаст новый каталог с именем myAzureProject и автоматически изменит на него каталоги.

New-AzureServiceProject myAzureProject

2. В каталоге myAzureProject (или как вы называете свой проект Azure) добавьте веб-роль PHP:

Add-AzurePHPWebRole myWebRole

Теперь у вас есть каркасный проект PHP / Azure. На самом деле, у вас есть очень простое PHP-приложение (отображающее вывод phpinfo ), которое готово к развертыванию. (На этом этапе вы можете перейти к разделу « Опубликовать в Windows Azure »).

Осматривая структуру каталогов, вы должны увидеть нечто похожее на это:

/myAzureProject
    deploymentSettings.json
    ServiceConfiguration.Cloud.cscfg
    ServiceConfiguration.Local.cscfg
    ServiceDefinition.csdef
        /myWebRole
            index.php
            Web.cloud.config
            Web.config
            /bin
                Microsoft.Web.Deployment.dll
                Microsoft.Web.PlatformInstaller.dll
                Microsoft.Web.PlatformInstaller.UI.dll
                setup.cmd
                setup.ps1
                setup_web.cmd
                WebpiCmdLine.exe

Теперь вы можете добавить свой код приложения в папку myWebRole . Если вы хотите добавить задачи запуска, вы можете сделать это, отредактировав файл .csdef и добавив сценарии в папку bin . Для получения дополнительной информации см. Как определить задачи запуска для роли .

Настройте свою конфигурацию PHP

Как я упоминал ранее, командлет Add-AzurePHPWebRole создает проект скаффолда, который при развертывании установит последнюю версию PHP, доступную через установщик веб-платформы. На момент написания статьи PHP 5.3.13 является доступной версией и поставляется со стандартной конфигурацией «из коробки». Однако вы можете настроить эту конфигурацию, выполнив следующие действия (пропустите шаг 2, если вы не хотите включать какие-либо пользовательские расширения):

1. Добавьте папку php в каталог bin .

2. Добавьте папку ext в каталог php и поместите в нее любые расширения PHP, которые вы хотите иметь доступными (например, php_mongo.dll ).

3. Добавьте пользовательский файл php.ini в каталог php . Вы можете включить / выключить настройки и включить расширения, как при любой другой установке PHP через этот файл .ini .

Тест в эмуляторе вычислений

Если вы установили эмуляторы Windows Azure, вы можете проверить приложение локально, выполнив следующую команду из каталога проекта:

Start-AzureEmulator

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

Включить доступ к удаленному рабочему столу

Это совершенно необязательный шаг, но я обнаружил, что включение удаленного доступа к рабочему столу очень помогает при устранении неполадок. И этот один командлет позволяет легко:

Enable-AzureServiceProjectRemoteDesktop

Вам будет предложено указать имя пользователя и пароль, которые вы будете использовать при доступе к экземпляру. После развертывания проекта (подробности в разделе ниже) вы можете получить доступ к экземпляру, войдя в портал управления , щелкнув INSTANCES на панели инструментов вашего веб-сайта, выбрав экземпляр и нажав кнопку CONNECT в нижней части страницы.

подключения

Если вы используете производственный портал, перейдите к экземпляру и щелкните значок подключения:

старый-портал

Публикация в Windows Azure

Наконец, вы можете опубликовать свой проект в Windows Azure с помощью следующей команды:

Опубликовать-AzureServiceProject

Это попытается создать облачный сервис, используя имя вашего проекта ( myAzureProject в приведенных выше примерах). Если это имя недоступно, вы можете получить ошибку. Если это произойдет, вы можете развернуть его под другим именем, используя флаг ServiceName :

Publish-AzureServiceProject –ServiceName myNewServiceName

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

Test-AzureName — Сервис «myAzureProject»

Дополнительные флаги для командлета Publish-AzureServiceProject : — Слот , — Расположение , — Подписка и — Хранилище . Дополнительные сведения об использовании этих флагов см. В разделе Как использовать Windows Azure PowerShell .

После развертывания проекта потребуется несколько минут, прежде чем он будет доступен в качестве условий Windows Azure и настроит новые виртуальные машины для каждого развертывания.

Это все на данный момент. Как обычно, дайте нам знать, если у вас есть какие-либо отзывы.

Спасибо.