web deployment
Post on 22-May-2015
3.167 Views
Preview:
DESCRIPTION
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="$(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>
Поддержка 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