Статьи

Леса и упаковка проекта Windows Azure на PHP


С новым выпуском
Windows Azure SDK для PHP v3.0 пришло время взглянуть на будущее. Одна из функций, с которыми мы играем, — это создание полноценной замены для текущих
доступных
инструментов командной строки Windows Azure . Эти инструменты иногда спасают жизнь, а иногда и большую PITA из-за запрограммированных значений по умолчанию и отсутствия параметров настройки. И чтобы преодолеть это последнее, вот о чем мы думаем: строительные леса.

По сути, мы будем разбивать процесс упаковки на два этапа:

  • подмости
  • упаковка

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

Кстати: обратная связь очень приветствуется! Просто прокомментируйте этот пост, и я свяжусь с вами.

Строительные леса проекта Windows Azure

Создание леса для проекта Windows Azure состоит из создания «шаблона» для вашего проекта Windows Azure. Идея состоит в том, что мы можем предоставить один или несколько стандартных лесов, которые могут сгенерировать шаблон для вас, но нет никаких ограничений на создание ваших собственных лесов (или использование сторонних лесов).

Стандартные скаффолдеры, которые в настоящее время включены, основаны на посте в блоге, который я сделал ранее о легком развертывании . Создать шаблон для проекта Windows Azure довольно просто:

Package Scaffold -p:"C:\temp\Sample" --DiagnosticsConnectionString:"UseDevelopmentStorage=true"

Эта команда создаст структуру папок в C: \ Temp \ Sample и использует скаффолдер по умолчанию (для этого требуется указать параметр «DiagnosticsConnectionString»). Ничто, однако, не мешает вам создавать свои собственные (далее в этом посте).

образ

Когда у вас есть структура папок, остается только скопировать содержимое вашего приложения в папку «PhpOnAzure.Web». В случае этого скаффолдера по умолчанию это все, что требуется для создания структуры проекта Windows Azure. Ничего сложного до сих пор, и я обещаю, что все никогда не станет сложным. Однако, если вы храбрая душа, вы можете на этом этапе настроить структуру папок, добавить наши пользовательские настройки конфигурации,…

Упаковка проекта Windows Azure

После лесов идет упаковка. Опять же, очень простая команда:

  
1 Package Create -p: " C:\temp\Sample " -dev :false

Выше будет создан файл Sample.cspkg, который вы можете сразу же развернуть в Windows Azure. Либо через портал, либо с помощью инструментов командной строки Windows Azure, которые включены в текущую версию Windows Azure SDK для PHP.

Строим свои собственные леса

Скаффолдеры на самом деле являются архивами Phar , стандартным пакетом PHP, который, по сути, представляет собой файл, содержащий исполняемый код PHP, а также такие ресурсы, как файлы конфигурации, изображения,…

Скаффолдер обычно представляет собой структуру, содержащую папку ресурсов, содержащую файлы конфигурации или полное развертывание PHP или что-то в этом роде, и файл с именем index.php, содержащий логику скаффолдинга. Давайте посмотрим на index.php .

 <?php
class Scaffolder
extends Microsoft_WindowsAzure_CommandLine_PackageScaffolder_PackageScaffolderAbstract
{
/**
* Invokes the scaffolder.
*
* @param Phar $phar Phar archive containing the current scaffolder.
* @param string $root Path Root path.
* @param array $options Options array (key/value).
*/
public function invoke(Phar $phar, $rootPath, $options = array())
{
// ...
}
}

Выглядит просто, верно? Это. Метод invoke — это единственное, что вы должны реализовать: это может быть метод, извлекающий некоторый контент в $ rootPath, а также обновляющий там некоторые файлы и… что угодно! Если вы можете представить, что мы делаем это на PHP, это возможно в скаффолдере.

Упаковка скаффолдера — это последний шаг в его создании: копирование всех файлов в файл .phar . И разве не было бы весело, если бы эта задача была легкой? Проверьте эту команду:

Package CreateScaffolder -p:"/path/to/scaffolder" -out:"/path/to/MyScaffolder.phar"

Вот и ты.

Идеи для строительных лесов

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

  • Скаффолдер, включающий полностью настроенную настроенную среду выполнения PHP (с драйвером SQL Server для PHP, Wincache,…)
  • Леса, которые позволяют удаленный рабочий стол
  • Леса, которые содержат механизм автоматического масштабирования
  • Скаффолдер, который не может существовать сам по себе, но может обеспечить дополнительную функциональность для существующего проекта Windows Azure.

Наслаждайтесь! И как я уже сказал: обратная связь очень приветствуется!

От http://blog.maartenballiauw.be/post/2011/05/30/Scaffolding-and-packaging-a-Windows-Azure-project-in-PHP.aspx