SlideShare une entreprise Scribd logo
1  sur  30
Андрей Кулешов
Деловые решения
Про что мы говорим?
 Деплоймент (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

Contenu connexe

Tendances

The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Artur Baranok
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesArtur Baranok
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Cisco Russia
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.Igor Shkulipa
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
инструментарий
инструментарийинструментарий
инструментарийigdweb
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?Aleksey Stukalov
 
Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2areconster
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...zfconfua
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)Ontico
 
VMware vSphere 5 - обзор новых возможностей (RUS)
VMware vSphere 5 - обзор новых возможностей (RUS)VMware vSphere 5 - обзор новых возможностей (RUS)
VMware vSphere 5 - обзор новых возможностей (RUS)areconster
 
быстрый старт.pptx
быстрый старт.pptxбыстрый старт.pptx
быстрый старт.pptxSaaS.ru Portal
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"LogeekNightUkraine
 

Tendances (20)

The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопе
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
инструментарий
инструментарийинструментарий
инструментарий
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?
 
Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2Фундамент для облака. Что нового в vSphere 5. Часть 2
Фундамент для облака. Что нового в vSphere 5. Часть 2
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
 
VMware vSphere 5 - обзор новых возможностей (RUS)
VMware vSphere 5 - обзор новых возможностей (RUS)VMware vSphere 5 - обзор новых возможностей (RUS)
VMware vSphere 5 - обзор новых возможностей (RUS)
 
быстрый старт.pptx
быстрый старт.pptxбыстрый старт.pptx
быстрый старт.pptx
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
 

Similaire à Web deployment

Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
летняя школа д1 (домашнее задание)
летняя школа д1 (домашнее задание)летняя школа д1 (домашнее задание)
летняя школа д1 (домашнее задание)Vyacheslav Checkmasov
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Igor Sazonov
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Share Point Workflow
Share Point WorkflowShare Point Workflow
Share Point WorkflowMaximKo
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Andrey Taritsyn
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...SQALab
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеYandex
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 

Similaire à Web deployment (20)

Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
летняя школа д1 (домашнее задание)
летняя школа д1 (домашнее задание)летняя школа д1 (домашнее задание)
летняя школа д1 (домашнее задание)
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Share Point Workflow
Share Point WorkflowShare Point Workflow
Share Point Workflow
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Instalarea DSpace
Instalarea DSpaceInstalarea DSpace
Instalarea DSpace
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
IIS7 possibilities
IIS7 possibilitiesIIS7 possibilities
IIS7 possibilities
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 

Plus de GetDev.NET

Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 

Plus de GetDev.NET (20)

Go
GoGo
Go
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
AngularJS
AngularJSAngularJS
AngularJS
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 

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