Follow Me Widget

понедельник, 22 октября 2012 г.

Настраиваем Git развертывание для виртуальных машин Windows Azure.

Привет всем! Сегодня я постараюсь подробно описать процесс настройки Git-публикации для виртуальных машин в Windows Azure. Многие из Вас уже знают, что Windows Azure предоставляет разработчикам возможность публикации приложений в облаке посредством Git (подробное описание этого процесса можно найти здесь http://habrahabr.ru/company/microsoft/blog/150086/), но немногие знают что Git публикация функционирует за счет так называемого проекта Kudu.
Kudu - это механизм, обеспечивающий в Windows Azure возможность развертывания Ваших приложений при помощи Git. Он распространяется под open source лицензией и доступен на GitHub (https://github.com/projectkudu/kudu). Большим преимуществом данного механизма является то, что он имеет способность запускаться вне среды Windows Azure. Это значит, что мы можем беспрепятственно загрузить его себе на машину и настроить Git развертывание в своей локальной среде. Учитывая эту особенность, было бы очень неплохо настроить подобный механизм для виртуальных машин Windows Azure. Именно это мы и попытаемся сделать.
Итак, прежде всего нам необходима целевая виртуальная машина, на которой будет разворачиваться наше приложение. Создать ее можно на портале Windows Azure в разделе Virtual Machines. Для наших целей можно воспользоваться опцией поднятия машины из галереи, что является наиболее быстрым вариантом.

Windows Server 2012 Azure

Как только виртуальная машина будет настроена и запущена, мы сможем удаленно зайти на нее посредством протокола RDP и перейти к следующему шагу. На втором шаге нам необходимо склонировать удаленный репозиторий Kudu на нашу виртуальную машину и запустить мастер настройки нового приложения. Давайте последовательно это выполним. В первую очередь установим клиент Git для Windows. Для этого перейдем на сайт http://msysgit.github.com/, скачаем и установим программный комплекс (можно воспользоваться любым альтернативным клиентом Git). Как только инсталляция завершится, запустим git bash и склонируем репозиторий в любой каталог на диске С: (для тестирования жизнеспособности решения этот диск нас полностью устроит). Адрес репозитория можно найти на https://github.com/projectkudu/kudu.

Безымянный
Для клонирования Kudu запустим следующую команду в git bash.

git clone https://github.com/projectkudu/kudu.git

Результат операции должен выглядеть следующим образом.

GitKudu

Следующим шагом будет билд проекта. Для этого найдем в нашем каталоге файл [kudu_installation_dir]/kudu/build.cmd и запустим его с правами администратора. Процесс сборки проекта может длиться до 1 минуты, после чего нам необходимо будет создать новый сайт на локальном инстансе IIS для запуска консоли управления Kudu. Новый сайт необходимо направить на подкаталог [kudu_installation_dir]/kudu/Kudu.Web. Вот как это выглядит на IIS-инстансе виртуальной машины:

KuduEnv

Мы используем кастомный 8080 порт, оставляя свободным 80-й порт, который будет использоваться основным приложением. Так как Kudu требует для своего правильного функционирования прав администратора, необходимо запустить наш пул приложений под менее ограниченным аккаунтом. Для этого перейдем в раздел Application Pools и в расширенных настройках пула сменим его Identity. На моей машине есть пользователь Administrator, который вполне нам подойдет.

AppPool

После этого, не выходя из удаленного терминала, откроем браузер и проверим правильно ли работает сайт путем перехода по ссылке http://localhost:8080. Если все удачно настроено, мы должны увидеть консоль управления Kudu.


Как видим при первом запуске установленных приложений нет, поэтому нам необходимо создать новое. Делается это очень просто, путем выбора пункта меню Create Application, при этом все что нам необходимо будет сделать дальше - это выбрать имя создаваемого приложения Давайте остановимся на имени GitWithKudu.


Как только мы нажмем кнопку "Create Application", на локальном для виртуальной машины веб-сервере будут созданы 2 сайта: один предназначен для запуска основного приложения, а второй для поддержки Git-развёртывания. Вот как созданная нами инфраструктура будет выглядеть в итоге:

Сайт Kudu Enrironment - это Kudu-консоль управления всеми приложениями веб-сервера. Сайт kudu_gitwithkudu - наше приложение, разворачиваемое посредством Git. Сайт kudu_service_gitwithkudu -  вспомогательное приложение, через которое будет происходить публикация. Давайте теперь снова на минутку вернемся к консоли управления Kudu. После создания нового приложения мы увидим следующий результат:
Как видим на этой странице представлена очень полезная информация. Тут мы можем найти адрес нашего Git-репозитория, адрес самого приложения, а также несколько вспомогательных вкладок, позволяющих отслеживать историю публикаций, изменять конфигурацию и т.д. По умолчанию Kudu использует простой механизм случайного выбора портов для основного приложения и deployment-сервиса, поэтому мы видим, что наше приложение будет использовать не стандартный порт 36263. Для его смены можно воспользоваться обычной техникой изменения привязок сайта в IIS Manager, что собственно мы и сделаем для перевода сайта на 80-й порт. 
На этом все работы, связанные с настройкой нашей целевой виртуальной машины, можно считать завершенными. Все, что нам осталось сделать - это развернуть наше приложение посредством созданной инфраструктуры. Напомню, что после окончания настройки Kudu у нас появилось 3 сайта:
  1. http://gitdeploy.cloudapp.net:8080 -  консоль управления Kudu
  2. http://gitdeploy.cloudapp.net - тестовое приложение
  3. http://gitdeploy.cloudapp.net:60972 - deployment-сервис
*gitdeploy.cloudapp.net - это доменное имя нашей виртуальной машины, задается на стадии ее создания.
Но прежде чем приступить к разворачиванию приложения необходимо добавить порт 60972 в список разрешенных портов на портале Windows Azure. В конечном итоге наша секция Endpoints должна выглядеть подобным образом:
Как только новая точка с портом 60972 будет добавлена можно приступить к публикации. Для этого нам необходимо выполнить простую последовательность действий. Сначала создадим пустой каталог на диске и запустим git bash для него. Воспользуемся командой
git init
,для инициализации нового Git-репозитория. Добавим новый файл в репозиторий под названием index.html. Содержимое данного файла представлено ниже:
<html>
<head>
<title>
Windows Azure Kudu Engine!
</title>
</head>
<body>
<h1>
Hello Windows Azure!
</h1>
</body>
</html>
После создания файла последовательно выполним 2 git-команды:
git add .
git commit -m "First commit"
Нам осталось развернуть новый файл в облаке. Для этого выполним следующую git-комманду:
git push http://gitdeploy.cloudapp.net:60972/gitwithkudu.git
Для проверки откроем в браузере сайт http://gitdeploy.cloudapp.net. Мы должны увидеть наши изменения на сервере:
Кроме того в консоли управления Kudu во вкладке Deployments можно отследить всю историю развертываний:
Как видим мы успешно настроили Git-развёртывание для виртуальной машины Windows Azure на базе проекта Kudu. Несмотря на то, что этот проект еще молод и имеет ряд недостатков, я считаю его достаточно перспективным и интересным. На этом всё, спасибо за внимание! Надеюсь пост был интересным и познавательным.

Комментариев нет: