Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Андрей Кулешов
Деловые решения
Про что мы говорим?
 Деплоймент (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)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)PackagePac
kageTmpWeb.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 Deployment
    http://vishaljoshi.blogspot.com/
Интересное видео
 Web Deployment Made Awesome: If You're Using
 XCopy, You're Doing It Wrong
 http://channel9.msdn.com/events/MIX/MIX10/FT14
Вопросы?
          Внимательно слушаю! 
                  Андрей Кулешов
                  «Деловые решения»
                  Директор
akuleshov@solforbiz.com            akuleshov.tula
http://www.solforbiz.com


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

More Related Content

Web deployment

  • 2. Про что мы говорим?  Деплоймент (deployment, развёртывание) – установка (или обновление) программного обеспечения (в нашем случае – веб-сайта) на целевом оборудовании  Говоря просто – процесс, в результате которого сайт, который работал на машине разработчика, начал работать на специально под него выделенном оборудовании и программном обеспечении.
  • 3. В чем сложность задачи?  Задача по деплойменту сферического сайта в вакууме: переместить файлы в папку, на которую настроен Web-server (IIS)
  • 4. Внезапно-1. Изменение настроек  Место назначения – удаленная машина  На которой нужно внести изменения в реестр  И добавить несколько DLL в GAC  И перелопатить половину Web.config файла, отключая отладочный режим компиляции и тестовые настройки приёма электронных платежей
  • 5. Внезапно-2. Разделение и безопасность  Место назначения – удаленная машина  На которой проблематично получить полномочия администратора  Или которая стоит в запертой комнате, людей туда пускают под роспись, и вы – не из заветного списка  А кроме копирования файлов, надо ещё поправить ключик в реестре  И изменить строки подключения к базе данных  Пароля к которой тоже не дают
  • 6. Ожидаемо, но неприятно Поддержание актуальных настроек  В любом крупном развивающемся проекте встает задача поддержания актуальной конфигурации  А чаще – нескольких актуальных конфигураций (отдел тестирования, отдел приемки, боевой сервер)
  • 7. Web Deployment  Web Deployment – решение от Microsoft  Вышло одновременно с Visual Studio 2010, включена в неё как часть технологии “one- click deployment”
  • 8. Два сценария работы онлайн и оффлайн  В онлайн-сценарии пакет подготовливается и немедленно устанавливается на целевом сервере (WMSVC, Web Deployment Handler)  В оффлайн-сценарии пакет (zip-архив) подготовливается и вручную передается администратору web-сервера IIS, отвечающему за установку сайтовприложений
  • 9. Преобразование конфигурационных файлов  Концепция файлов трансформаций  Каждый файл соответствует одной Build Configuration  С добавлением новых конфигураций сборки можно добавлять и новые файлы трансформаций
  • 10. Язык преобразований  Основан на XSLT, но значительно упрощен  Позволяет найти нужную запись среди подобных по ключу, заменить XML-элемент полностью, удалить или заменить XML - аттрибуты
  • 11. Пример файла преобразования <?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>
  • 12. Один клик – два шага  Делай раз: - применяются преобразования конфигурационных файлов - подготавливается пакет  Делай два: - вызывается утилита msdeploy.exe, которая доставляет пакет и применяет параметры пакета
  • 14. Параметры пакета Web Deployment  Неочевидно для вновь прибывших Изменение Web.config != параметры deployment  Особенно неочевидно это для строк подключения к БД, к которым зачастую применяется и то, и другое  Используйте Web.config Transformations, когда необходимые значения параметров известны на этапе компиляции  Используйте Web Deploy Parametrization, когда значения параметров известны только на этапе установки
  • 15. Развёртывание пакета вручную  Делегируется системному администратору  Больше возможностей изменить конфигурацию IIS автоматически прямо в процессе установки
  • 17. Разворачивание приложения с базой  Выбираем, какие базы разворачивать (можно автоматически импортировать из Web.config)  Можем запускать любые скрипты на целевой машине  Задаем строку подключения для создания базы – т.е. можем выполнять код под специальной учетной записью с повышенными привилегиями  По умолчанию системные таблицы не мигрируют (проблемы с EF 3.1)
  • 19. Недостатки в разворачивании баз  Скрипт выполняется на клиенте, а не на сервере => необходим доступ к базе через Firewall  После первого разворачивания нужно вручную исключать из деплоймент пакета добавление скриптов создания базы  Каждый SQL-скрипт обновления структуры/данных нужно также подключать вручную Вывод (персональный) из недостатков  Деплоймент баз данных при помощи Web Deployment может быть эффективно использован для доставки баз вместе с продуктами одноразовой установки (движки блогов, форумов и т.д.)  Для решения задачи постоянного обновления лучше искать другие технологии
  • 20. Работа с консолью  msdeploy.exe – приложение, отвечающее за всё  Достаточно большое количество опциональных параметров  Три основных параметра: -source: … (источник – пакет,папка, сервер…) -desc: … (получатель – папка, сервер, хэндлер…) -verb: … (применяемое действие)  Позволяет применять правила (напр.: не удалять файлы в получателе)  Позволяет выбирать множество различных провайдеров
  • 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. Включение Web Deploy в автоматизированный билд  Рекомендуется использовать язык MSBuild для автоматизации  Если нам нужны Config Transformations – применяем их как отдельное действие. Возможно, потребуется установка
  • 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)PackagePac kageTmpWeb.config" /> <Exec Command="@(MsDeployCommand, ' ')" /> </Target> </Project>
  • 24. Поддержка Web Deployment на IIS 7  Настройка пользователей  Настройка индивидуальных прав доступа на каждое из возможных действий  Выделение прав доступа на уровне сайта Поддержка Web Deployment на IIS 6  Она есть Но, к сожалению, это всё, что я про неё знаю
  • 27. Заслуживает упоминания Web Application Gallery  Галерея приложения, управляемая Microsoft  Предоставляет возможность скачать и легко установить одну из множества разнообразных CMS, движков блогов, форумов, багтрекеров и т.п.  Заслуживает упоминания здесь, так как основана на пакетах Web Deployment  http://www.microsoft.com/web/gallery/categories.aspx  (есть даже MODx CMS, о которой у нас уже предлагают рассказать)
  • 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. Интересное видео  Web Deployment Made Awesome: If You're Using XCopy, You're Doing It Wrong http://channel9.msdn.com/events/MIX/MIX10/FT14
  • 30. Вопросы? Внимательно слушаю!  Андрей Кулешов «Деловые решения» Директор akuleshov@solforbiz.com akuleshov.tula http://www.solforbiz.com Специально для http://GetDev.NET