Какие могут быть хорошие способы развертывания веб-приложений ASP.Net? - PullRequest
6 голосов
/ 15 сентября 2008

В настоящее время мы разворачиваем веб-приложения, создавая базу данных и запуская сценарии SQL через анализатор запросов. Затем мы копируем выходные данные из «Опубликовать веб-сайт» и настраиваем этот веб-сайт в IIS.

Мы видели websetup в visual studio, но эта часть, похоже, недостаточно документирована. Например, нам не ясно, как запросить у пользователя IP-адрес и пароль SQL-сервера. Мы также стараемся, чтобы сайты, развернутые таким образом, появлялись в папках типа http://example.com/project, вместо http://example.com.

Тогда возникают проблемы с тем, что AJAX.Net не устанавливается или не применяется тот или иной патч.

Пока у нас есть физический доступ к серверам. Довольно скоро, хотя мы собираемся отправлять компакт-диски. Каков практический компромисс между ручным вмешательством и автоматизацией?

Ответы [ 3 ]

7 голосов
/ 15 сентября 2008

Избегайте развертывания Visual Studio и максимально автоматизируйте. Проекты веб-развертывания и NAnt могут стать вашими друзьями!

Вкратце, наша настройка развертывания:

  1. Мы используем RedGate SQL для сценариев различий между dev и live database.

  2. Файл сборки NAnt, который вызывает MSBUILD для создания проекта веб-развертывания (.wdproj), архивирует результирующее скомпилированное веб-приложение (вместе со сценарием изменения SQL) и затем загружает zip-файл на сервер.

  3. На стороне сервера есть еще один файл сборки NAnt, который переводит приложение в автономный режим, выполняет резервное копирование базы данных, резервное копирование веб-сайта. запускает скрипт изменения SQL, распаковывает новую версию и выводит приложение в онлайн.

Шаг 3 обычно запускается «вручную» (один двойной щелчок), но иногда намечается на позднюю ночь. Вы можете сделать то же самое с компакт-диска или даже написать довольно маленькое приложение для Windows Forms в качестве оболочки.

Очень рад сообщить подробности сценария NAnt, если вам интересно.

2 голосов
/ 15 сентября 2008

Вы пробовали использовать проект Web Deployment ? Также есть поддержка VS 2008 .

0 голосов
/ 21 июля 2010

Я развертываю в основном приложения ASP.NET на серверах Linux. Вот мой стандартный рабочий процесс:

  • Я использую репозиторий исходного кода (например, Subversion)
  • На сервере у меня есть скрипт bash, который выполняет следующее:
    • Проверяет последний код
    • Выполняет сборку (создает библиотеки DLL)
    • Фильтрует файлы до самого необходимого (например, удаляет файлы кода)
    • Резервное копирование базы данных
    • Развертывает файлы на веб-сервере в каталоге с текущей датой
    • Обновляет базу данных, если в развертывание включена новая схема
    • Делает новую установку по умолчанию, поэтому она будет обслуживаться со следующим попаданием

Оформление заказа производится с помощью версии Subversion для командной строки, а сборка - с помощью xbuild (msbuild аналогично проекту Mono). Большая часть магии делается в ReleaseIt.

На моем dev-сервере у меня, по сути, непрерывная интеграция, но на производственной стороне я фактически подключаю SSH к серверу и запускаю развертывание вручную, запустив скрипт. Мой сценарий хитро называется 'deploy', поэтому я набираю его в командной строке bash. Я очень креативный. Не.

В производственном процессе мне приходится дважды вводить 'deploy': один раз для извлечения, сборки и развертывания в устаревшем каталоге, и один раз, чтобы сделать этот каталог экземпляром по умолчанию. Поскольку каталоги датированы, я могу вернуться к любому предыдущему развертыванию, просто набрав «deploy» из соответствующего каталога.

Первоначальное развертывание занимает пару минут, а возврат к предыдущей версии занимает несколько секунд.

Это было хорошее решение для меня, оно опирается только на три утилиты командной строки (svn, xbuild и releaseit), клиент БД, SSH и Bash.

Мне действительно нужно когда-нибудь обновить копию ReleaseIt на CodePlex:

http://releaseit.codeplex.com/

...