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 - аттрибуты
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 –
применяем их как отдельное действие.
Возможно, потребуется установка
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