web deployment
DESCRIPTION
http://getdev.net/Event/msdeploy Рассказ об инструменте Web Deployment (MSDeploy), возможностях развёртывания Web-приложений на серверах IISTRANSCRIPT
![Page 1: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/1.jpg)
Развёртывание приложений с
помощью Web Deploy
Андрей КулешовДеловые решения
![Page 2: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/2.jpg)
Про что мы говорим?Деплоймент (deployment, развёртывание) –
установка (или обновление) программного обеспечения (в нашем случае – веб-сайта) на целевом оборудовании
Говоря просто – процесс, в результате которого сайт, который работал на машине разработчика, начал работать на специально под него выделенном оборудовании и программном обеспечении.
![Page 3: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/3.jpg)
В чем сложность задачи?Задача по деплойменту
сферического сайта в вакууме:
переместить файлы в папку, на которую настроен Web-server (IIS)
![Page 4: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/4.jpg)
Внезапно-1.Изменение настроек
Место назначения – удаленная машинаНа которой нужно внести изменения в
реестрИ добавить несколько DLL в GACИ перелопатить половину Web.config
файла, отключая отладочный режим компиляции и тестовые настройки приёма электронных платежей
![Page 5: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/5.jpg)
Внезапно-2.Разделение и безопасность
Место назначения – удаленная машинаНа которой проблематично получить
полномочия администратораИли которая стоит в запертой комнате, людей
туда пускают под роспись, и вы – не из заветного списка
А кроме копирования файлов, надо ещё поправить ключик в реестре
И изменить строки подключения к базе данныхПароля к которой тоже не дают
![Page 6: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/6.jpg)
Ожидаемо, но неприятноПоддержание актуальных настроек
В любом крупном развивающемся проекте встает задача поддержания актуальной конфигурации
А чаще – нескольких актуальных конфигураций (отдел тестирования, отдел приемки, боевой сервер)
![Page 7: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/7.jpg)
Web Deployment
Web Deployment – решение от MicrosoftВышло одновременно с Visual Studio 2010,
включена в неё как часть технологии “one-click deployment”
![Page 8: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/8.jpg)
Два сценария работыонлайн и оффлайн
В онлайн-сценарии пакет подготовливается и немедленно устанавливается на целевом сервере (WMSVC, Web Deployment Handler)
В оффлайн-сценарии пакет (zip-архив) подготовливается и вручную передается администратору web-сервера IIS, отвечающему за установку сайтов\приложений
![Page 9: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/9.jpg)
Преобразование конфигурационных файлов
Концепция файлов трансформаций
Каждый файл соответствует одной Build Configuration
С добавлением новых конфигураций сборки можно добавлять и новые файлы трансформаций
![Page 10: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/10.jpg)
Язык преобразований
Основан на XSLT, но значительно упрощенПозволяет найти нужную запись среди
подобных по ключу, заменить XML-элемент полностью, удалить или заменить XML - аттрибуты
![Page 11: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/11.jpg)
Пример файла преобразования<?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](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/12.jpg)
Один клик – два шагаДелай раз:
- применяются преобразования конфигурационных файлов- подготавливается пакет
Делай два:- вызывается утилита msdeploy.exe, которая доставляет пакет и применяет параметры пакета
![Page 13: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/13.jpg)
ДемоРазвёртывание из VS 2010
![Page 14: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/14.jpg)
Параметры пакета Web Deployment
Неочевидно для вновь прибывшихИзменение Web.config != параметры deployment
Особенно неочевидно это для строк подключения к БД, к которым зачастую применяется и то, и другое
Используйте Web.config Transformations, когда необходимые значения параметров известны на этапе компиляции
Используйте Web Deploy Parametrization, когда значения параметров известны только на этапе установки
![Page 15: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/15.jpg)
Развёртывание пакета вручную
Делегируется системному администраторуБольше возможностей изменить
конфигурацию IIS автоматически прямо в процессе установки
![Page 16: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/16.jpg)
ДемоРазвёртывание вручную на IIS
![Page 17: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/17.jpg)
Разворачивание приложения с базой
Выбираем, какие базы разворачивать (можно автоматически импортировать из Web.config)
Можем запускать любые скрипты на целевой машине
Задаем строку подключения для создания базы – т.е. можем выполнять код под специальной учетной записью с повышенными привилегиями
По умолчанию системные таблицы не мигрируют (проблемы с EF 3.1)
![Page 18: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/18.jpg)
ДемоРазвёртывание приложения с SQL Server-базой данных
![Page 19: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/19.jpg)
Недостатки в разворачивании базСкрипт выполняется на клиенте, а не на сервере
=> необходим доступ к базе через FirewallПосле первого разворачивания нужно вручную
исключать из деплоймент пакета добавление скриптов создания базы
Каждый SQL-скрипт обновления структуры/данных нужно также подключать вручную
Вывод (персональный) из недостатковДеплоймент баз данных при помощи Web
Deployment может быть эффективно использован для доставки баз вместе с продуктами одноразовой установки (движки блогов, форумов и т.д.)
Для решения задачи постоянного обновления лучше искать другие технологии
![Page 20: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/20.jpg)
Работа с консолью
msdeploy.exe – приложение, отвечающее за всёДостаточно большое количество опциональных
параметровТри основных параметра:
-source: … (источник – пакет,папка, сервер…)
-desc: … (получатель – папка, сервер, хэндлер…)
-verb: … (применяемое действие)
Позволяет применять правила (напр.: не удалять файлы в получателе)
Позволяет выбирать множество различных провайдеров
![Page 21: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/21.jpg)
Дополнительные провайдеры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](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/22.jpg)
Включение Web Deploy в автоматизированный билдРекомендуется использовать язык MSBuild
для автоматизации Если нам нужны Config Transformations –
применяем их как отдельное действие. Возможно, потребуется установка
![Page 23: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/23.jpg)
Пример 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="$(teamcity_build_checkoutDir)\trunk\Web\GetDev.WebApplication\obj\$(Platform)\$(Configuration)\Package\PackageTmp"" /> <MsDeployCommand Include="-dest:contentPath="$(DestFolder)",includeAcls=false,computername="https://$(DeployHost):8172/msdeploy.axd?Site=$(DestSiteName)",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](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/24.jpg)
Поддержка Web Deployment на IIS 7
Настройка пользователейНастройка индивидуальных прав доступа
на каждое из возможных действийВыделение прав доступа на уровне сайта
Поддержка Web Deployment на IIS 6Она есть
Но, к сожалению, это всё, что я про неё знаю
![Page 25: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/25.jpg)
Поддержка удаленной установки
http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/
![Page 26: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/26.jpg)
ДемоАдминистрирование IIS 7 + Web Deploy
![Page 27: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/27.jpg)
Заслуживает упоминанияWeb Application GalleryГалерея приложения, управляемая
Microsoft Предоставляет возможность скачать и
легко установить одну из множества разнообразных CMS, движков блогов, форумов, багтрекеров и т.п.
Заслуживает упоминания здесь, так как основана на пакетах Web Deployment
http://www.microsoft.com/web/gallery/categories.aspx
(есть даже MODx CMS, о которой у нас уже предлагают рассказать)
![Page 28: Web deployment](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/28.jpg)
Интересное чтение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](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/29.jpg)
Интересное видео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](https://reader036.vdocuments.site/reader036/viewer/2022062513/555e1c64d8b42a6a4c8b465a/html5/thumbnails/30.jpg)
Вопросы?Внимательно слушаю!
Андрей Кулешов«Деловые решения»Директор
[email protected]://www.solforbiz.com
akuleshov.tula
Специально для http://GetDev.NET