Web deployment

3,644 views
3,511 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,644
On SlideShare
0
From Embeds
0
Number of Embeds
640
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Web deployment

  1. 1. Андрей КулешовДеловые решения
  2. 2. Про что мы говорим? Деплоймент (deployment, развёртывание) – установка (или обновление) программного обеспечения (в нашем случае – веб-сайта) на целевом оборудовании Говоря просто – процесс, в результате которого сайт, который работал на машине разработчика, начал работать на специально под него выделенном оборудовании и программном обеспечении.
  3. 3. В чем сложность задачи? Задача по деплойменту сферического сайта в вакууме: переместить файлы в папку, на которую настроен Web-server (IIS)
  4. 4. Внезапно-1.Изменение настроек Место назначения – удаленная машина На которой нужно внести изменения в реестр И добавить несколько DLL в GAC И перелопатить половину Web.config файла, отключая отладочный режим компиляции и тестовые настройки приёма электронных платежей
  5. 5. Внезапно-2.Разделение и безопасность Место назначения – удаленная машина На которой проблематично получить полномочия администратора Или которая стоит в запертой комнате, людей туда пускают под роспись, и вы – не из заветного списка А кроме копирования файлов, надо ещё поправить ключик в реестре И изменить строки подключения к базе данных Пароля к которой тоже не дают
  6. 6. Ожидаемо, но неприятноПоддержание актуальныхнастроек В любом крупном развивающемся проекте встает задача поддержания актуальной конфигурации А чаще – нескольких актуальных конфигураций (отдел тестирования, отдел приемки, боевой сервер)
  7. 7. Web Deployment Web Deployment – решение от Microsoft Вышло одновременно с Visual Studio 2010, включена в неё как часть технологии “one- click deployment”
  8. 8. Два сценария работыонлайн и оффлайн В онлайн-сценарии пакет подготовливается и немедленно устанавливается на целевом сервере (WMSVC, Web Deployment Handler) В оффлайн-сценарии пакет (zip-архив) подготовливается и вручную передается администратору web-сервера IIS, отвечающему за установку сайтовприложений
  9. 9. Преобразованиеконфигурационных файлов  Концепция файлов трансформаций  Каждый файл соответствует одной Build Configuration  С добавлением новых конфигураций сборки можно добавлять и новые файлы трансформаций
  10. 10. Язык преобразований Основан на XSLT, но значительно упрощен Позволяет найти нужную запись среди подобных по ключу, заменить XML-элемент полностью, удалить или заменить XML - аттрибуты
  11. 11. Пример файла преобразования<?xml version="1.0"?><configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;InitialCatalog=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>
  12. 12. Один клик – два шага Делай раз: - применяются преобразования конфигурационных файлов - подготавливается пакет Делай два: - вызывается утилита msdeploy.exe, которая доставляет пакет и применяет параметры пакета
  13. 13. ДемоРазвёртывание из VS 2010
  14. 14. Параметры пакета WebDeployment Неочевидно для вновь прибывших Изменение Web.config != параметры deployment Особенно неочевидно это для строк подключения к БД, к которым зачастую применяется и то, и другое Используйте Web.config Transformations, когда необходимые значения параметров известны на этапе компиляции Используйте Web Deploy Parametrization, когда значения параметров известны только на этапе установки
  15. 15. Развёртывание пакета вручную Делегируется системному администратору Больше возможностей изменить конфигурацию IIS автоматически прямо в процессе установки
  16. 16. ДемоРазвёртывание вручную на IIS
  17. 17. Разворачивание приложения с базой Выбираем, какие базы разворачивать (можно автоматически импортировать из Web.config) Можем запускать любые скрипты на целевой машине Задаем строку подключения для создания базы – т.е. можем выполнять код под специальной учетной записью с повышенными привилегиями По умолчанию системные таблицы не мигрируют (проблемы с EF 3.1)
  18. 18. ДемоРазвёртывание приложения сSQL Server-базой данных
  19. 19. Недостатки в разворачивании баз Скрипт выполняется на клиенте, а не на сервере => необходим доступ к базе через Firewall После первого разворачивания нужно вручную исключать из деплоймент пакета добавление скриптов создания базы Каждый SQL-скрипт обновления структуры/данных нужно также подключать вручнуюВывод (персональный) из недостатков Деплоймент баз данных при помощи Web Deployment может быть эффективно использован для доставки баз вместе с продуктами одноразовой установки (движки блогов, форумов и т.д.) Для решения задачи постоянного обновления лучше искать другие технологии
  20. 20. Работа с консолью msdeploy.exe – приложение, отвечающее за всё Достаточно большое количество опциональных параметров Три основных параметра: -source: … (источник – пакет,папка, сервер…) -desc: … (получатель – папка, сервер, хэндлер…) -verb: … (применяемое действие) Позволяет применять правила (напр.: не удалять файлы в получателе) Позволяет выбирать множество различных провайдеров
  21. 21. Дополнительные провайдеры Web Deploy, помимо собственно копирования файлов, поддерживает большое количество функциональных провайдеров Примеры: setacl (правка списков доступа безопасности файловой системы ACL) gacinstall (устанавливает сборку в GAC) cert (устаналивает сертификат для сайта) runcommand (выполнение произвольной команды) regValue (установка значений реестра) Вместо явного их указания, провадеры можно перечислить в файле манифеста (manifest.xml) Но их настройку, в общем случае, сложно назвать тривиальной. RTFM: http://technet.microsoft.com/en- us/library/dd569040(v=ws.10).aspx
  22. 22. Включение Web Deploy вавтоматизированный билд Рекомендуется использовать язык MSBuild для автоматизации Если нам нужны Config Transformations – применяем их как отдельное действие. Возможно, потребуется установка
  23. 23. Пример MSBuild-скрипта<?xml version="1.0" encoding="utf-8"?><Project DefaultTargets="Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > <Import Project="$(MSBuildExtensionsPath)MSBuildCommunityTasksMSBuild.Community.Tasks.Targets" /> <Import Project=".GetDev.WebApplication.csproj" /> <ItemGroup> <MsDeployCommand Include="C:Program FilesIISMicrosoft Web Deploy V2msdeploy.exe" /> <MsDeployCommand Include="-source:contentpath=&quot;$(teamcity_build_checkoutDir)trunkWebGetDev.WebApplicationobj$(Platform)$(Configuration)PackagePackageTmp&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)trunkSolutionsVsSolutionVsSolution.sln" Properties="Configuration=$(Configuration)" /> <CallTarget Targets="Build" /> <CallTarget Targets="Package" /> </Target> <Target Name=Deploy DependsOnTargets=BuildSolution> <TransformXml Source="$(teamcity_build_checkoutDir)trunkWebGetDev.WebApplicationWeb.config"Transform="$(teamcity_build_checkoutDir)trunkWebGetDev.WebApplicationWeb.$(Configuration).config"Destination="$(teamcity_build_checkoutDir)trunkWebGetDev.WebApplicationobj$(Platform)$(Configuration)PackagePackageTmpWeb.config" /> <Exec Command="@(MsDeployCommand, )" /> </Target></Project>
  24. 24. Поддержка Web Deployment на IIS 7 Настройка пользователей Настройка индивидуальных прав доступа на каждое из возможных действий Выделение прав доступа на уровне сайтаПоддержка Web Deployment на IIS 6 Она есть Но, к сожалению, это всё, что я про неё знаю
  25. 25. Поддержка удаленной установкиhttp://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/
  26. 26. ДемоАдминистрированиеIIS 7 + Web Deploy
  27. 27. Заслуживает упоминанияWeb Application Gallery Галерея приложения, управляемая Microsoft Предоставляет возможность скачать и легко установить одну из множества разнообразных CMS, движков блогов, форумов, багтрекеров и т.п. Заслуживает упоминания здесь, так как основана на пакетах Web Deployment http://www.microsoft.com/web/gallery/categories.aspx (есть даже MODx CMS, о которой у нас уже предлагают рассказать)
  28. 28. Интересное чтение 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 Deployment http://vishaljoshi.blogspot.com/
  29. 29. Интересное видео Web Deployment Made Awesome: If Youre Using XCopy, Youre Doing It Wrong http://channel9.msdn.com/events/MIX/MIX10/FT14
  30. 30. Вопросы? Внимательно слушаю!  Андрей Кулешов «Деловые решения» Директорakuleshov@solforbiz.com akuleshov.tulahttp://www.solforbiz.comСпециально для http://GetDev.NET

×