30
Развёртывание приложений с помощью Web Deploy Андрей Кулешов Деловые решения

Web deployment

Embed Size (px)

DESCRIPTION

http://getdev.net/Event/msdeploy Рассказ об инструменте Web Deployment (MSDeploy), возможностях развёртывания Web-приложений на серверах IIS

Citation preview

Page 1: Web deployment

Развёртывание приложений с

помощью Web Deploy

Андрей КулешовДеловые решения

Page 2: Web deployment

Про что мы говорим?Деплоймент (deployment, развёртывание) –

установка (или обновление) программного обеспечения (в нашем случае – веб-сайта) на целевом оборудовании

Говоря просто – процесс, в результате которого сайт, который работал на машине разработчика, начал работать на специально под него выделенном оборудовании и программном обеспечении.

Page 3: Web deployment

В чем сложность задачи?Задача по деплойменту

сферического сайта в вакууме:

переместить файлы в папку, на которую настроен Web-server (IIS)

Page 4: Web deployment

Внезапно-1.Изменение настроек

Место назначения – удаленная машинаНа которой нужно внести изменения в

реестрИ добавить несколько DLL в GACИ перелопатить половину Web.config

файла, отключая отладочный режим компиляции и тестовые настройки приёма электронных платежей

Page 5: Web deployment

Внезапно-2.Разделение и безопасность

Место назначения – удаленная машинаНа которой проблематично получить

полномочия администратораИли которая стоит в запертой комнате, людей

туда пускают под роспись, и вы – не из заветного списка

А кроме копирования файлов, надо ещё поправить ключик в реестре

И изменить строки подключения к базе данныхПароля к которой тоже не дают

Page 6: Web deployment

Ожидаемо, но неприятноПоддержание актуальных настроек

В любом крупном развивающемся проекте встает задача поддержания актуальной конфигурации

А чаще – нескольких актуальных конфигураций (отдел тестирования, отдел приемки, боевой сервер)

Page 7: Web deployment

Web Deployment

Web Deployment – решение от MicrosoftВышло одновременно с Visual Studio 2010,

включена в неё как часть технологии “one-click deployment”

Page 8: Web deployment

Два сценария работыонлайн и оффлайн

В онлайн-сценарии пакет подготовливается и немедленно устанавливается на целевом сервере (WMSVC, Web Deployment Handler)

В оффлайн-сценарии пакет (zip-архив) подготовливается и вручную передается администратору web-сервера IIS, отвечающему за установку сайтов\приложений

Page 9: Web deployment

Преобразование конфигурационных файлов

Концепция файлов трансформаций

Каждый файл соответствует одной Build Configuration

С добавлением новых конфигураций сборки можно добавлять и новые файлы трансформаций

Page 10: Web deployment

Язык преобразований

Основан на XSLT, но значительно упрощенПозволяет найти нужную запись среди

подобных по ключу, заменить XML-элемент полностью, удалить или заменить XML - аттрибуты

Page 11: Web deployment

Пример файла преобразования<?xml version="1.0"?><configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> <system.web> <compilation xdt:Transform="RemoveAttributes(debug)" /> <customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly" xdt:Transform="Replace"> <error statusCode="500" redirect="InternalError.htm"/> </customErrors> </system.web></configuration>

Page 12: Web deployment

Один клик – два шагаДелай раз:

- применяются преобразования конфигурационных файлов- подготавливается пакет

Делай два:- вызывается утилита msdeploy.exe, которая доставляет пакет и применяет параметры пакета

Page 13: Web deployment

ДемоРазвёртывание из VS 2010

Page 14: Web deployment

Параметры пакета Web Deployment

Неочевидно для вновь прибывшихИзменение Web.config != параметры deployment

Особенно неочевидно это для строк подключения к БД, к которым зачастую применяется и то, и другое

Используйте Web.config Transformations, когда необходимые значения параметров известны на этапе компиляции

Используйте Web Deploy Parametrization, когда значения параметров известны только на этапе установки

Page 15: Web deployment

Развёртывание пакета вручную

Делегируется системному администраторуБольше возможностей изменить

конфигурацию IIS автоматически прямо в процессе установки

Page 16: Web deployment

ДемоРазвёртывание вручную на IIS

Page 17: Web deployment

Разворачивание приложения с базой

Выбираем, какие базы разворачивать (можно автоматически импортировать из Web.config)

Можем запускать любые скрипты на целевой машине

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

По умолчанию системные таблицы не мигрируют (проблемы с EF 3.1)

Page 18: Web deployment

ДемоРазвёртывание приложения с SQL Server-базой данных

Page 19: Web deployment

Недостатки в разворачивании базСкрипт выполняется на клиенте, а не на сервере

=> необходим доступ к базе через FirewallПосле первого разворачивания нужно вручную

исключать из деплоймент пакета добавление скриптов создания базы

Каждый SQL-скрипт обновления структуры/данных нужно также подключать вручную

Вывод (персональный) из недостатковДеплоймент баз данных при помощи Web

Deployment может быть эффективно использован для доставки баз вместе с продуктами одноразовой установки (движки блогов, форумов и т.д.)

Для решения задачи постоянного обновления лучше искать другие технологии

Page 20: Web deployment

Работа с консолью

msdeploy.exe – приложение, отвечающее за всёДостаточно большое количество опциональных

параметровТри основных параметра:

-source: … (источник – пакет,папка, сервер…)

-desc: … (получатель – папка, сервер, хэндлер…)

-verb: … (применяемое действие)

Позволяет применять правила (напр.: не удалять файлы в получателе)

Позволяет выбирать множество различных провайдеров

Page 21: Web deployment

Дополнительные провайдерыWeb Deploy, помимо собственно копирования файлов,

поддерживает большое количество функциональных провайдеровПримеры: setacl (правка списков доступа безопасности файловой системы ACL)gacinstall (устанавливает сборку в GAC)cert (устаналивает сертификат для сайта)runcommand (выполнение произвольной команды)regValue (установка значений реестра)

Вместо явного их указания, провадеры можно перечислить в файле манифеста (manifest.xml)

Но их настройку, в общем случае, сложно назвать тривиальной.RTFM:

http://technet.microsoft.com/en-us/library/dd569040(v=ws.10).aspx

Page 22: Web deployment

Включение Web Deploy в автоматизированный билдРекомендуется использовать язык MSBuild

для автоматизации Если нам нужны Config Transformations –

применяем их как отдельное действие. Возможно, потребуется установка

Page 23: Web deployment

Пример MSBuild-скрипта<?xml version="1.0" encoding="utf-8"?><Project DefaultTargets="Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> <Import Project=".\GetDev.WebApplication.csproj" /> <ItemGroup> <MsDeployCommand Include='"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe"' /> <MsDeployCommand Include="-source:contentpath=&quot;$(teamcity_build_checkoutDir)\trunk\Web\GetDev.WebApplication\obj\$(Platform)\$(Configuration)\Package\PackageTmp&quot;" /> <MsDeployCommand Include="-dest:contentPath=&quot;$(DestFolder)&quot;,includeAcls=false,computername=&quot;https://$(DeployHost):8172/msdeploy.axd?Site=$(DestSiteName)&quot;,authType=Basic,userName=$(DeployUserName),password=$(DeployPassword)" /> <MsDeployCommand Include="-allowUntrusted" /> <MsDeployCommand Include="-enableRule:DoNotDeleteRule" /> <MsDeployCommand Include="-verb:sync" /> <MsDeployCommand Include=" " /> </ItemGroup>

<Target Name="BuildSolution"> <CallTarget Targets="Clean" /> <MSBuild Projects="$(teamcity_build_checkoutDir)\trunk\Solutions\VsSolution\VsSolution.sln" Properties="Configuration=$(Configuration)" /> <CallTarget Targets="Build" /> <CallTarget Targets="Package" /> </Target>

<Target Name='Deploy' DependsOnTargets='BuildSolution'> <TransformXml Source="$(teamcity_build_checkoutDir)\trunk\Web\GetDev.WebApplication\Web.config" Transform="$(teamcity_build_checkoutDir)\trunk\Web\GetDev.WebApplication\Web.$(Configuration).config" Destination="$(teamcity_build_checkoutDir)\trunk\Web\GetDev.WebApplication\obj\$(Platform)\$(Configuration)\Package\PackageTmp\Web.config" /> <Exec Command="@(MsDeployCommand, ' ')" /> </Target></Project>

Page 24: Web deployment

Поддержка Web Deployment на IIS 7

Настройка пользователейНастройка индивидуальных прав доступа

на каждое из возможных действийВыделение прав доступа на уровне сайта

Поддержка Web Deployment на IIS 6Она есть

Но, к сожалению, это всё, что я про неё знаю

Page 25: Web deployment

Поддержка удаленной установки

http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/

Page 26: Web deployment

ДемоАдминистрирование IIS 7 + Web Deploy

Page 27: Web deployment

Заслуживает упоминанияWeb Application GalleryГалерея приложения, управляемая

Microsoft Предоставляет возможность скачать и

легко установить одну из множества разнообразных CMS, движков блогов, форумов, багтрекеров и т.п.

Заслуживает упоминания здесь, так как основана на пакетах Web Deployment

http://www.microsoft.com/web/gallery/categories.aspx

(есть даже MODx CMS, о которой у нас уже предлагают рассказать)

Page 28: Web deployment

Интересное чтениеWeb Deploy 2.0 web site

http://www.iis.net/download/webdeployНастройка Web Deployment Handler

http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/

Документация MSDN по Web Deployment Tools:http://technet.microsoft.com/en-us/library/dd568996(v=ws.10).aspx

Документация по доступным провайдерам: http://technet.microsoft.com/en-us/library/dd569040(v=ws.10).aspx

Описание языка преобразованийhttp://msdn.microsoft.com/ru-ru/library/dd465326(VS.100).aspx

Блог разработчика Web Deploymenthttp://vishaljoshi.blogspot.com/

Page 29: Web deployment

Интересное видеоWeb Deployment Made Awesome: If You're

Using XCopy, You're Doing It Wronghttp://channel9.msdn.com/events/MIX/MIX10/FT14

Page 30: Web deployment

Вопросы?Внимательно слушаю!

Андрей Кулешов«Деловые решения»Директор

[email protected]://www.solforbiz.com

akuleshov.tula

Специально для http://GetDev.NET