web deployment

Post on 22-May-2015

3.167 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

помощью Web Deploy

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Web Deployment

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

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

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

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

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

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

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

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

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

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

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

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

Пример файла преобразования<?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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример 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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Интересное чтение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/

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

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

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

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

akuleshov@solforbiz.comhttp://www.solforbiz.com

akuleshov.tula

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

top related