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

StackOverflow https://stackoverflow.com/questions/62816

Вопрос

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

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

Затем возникают проблемы с AJAX.Сеть не установлена или не применен тот или иной патч.

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

Это было полезно?

Решение

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

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

  1. Мы используем RedGate SQL для написания сценариев различий между разработчиками и живой базой данных.

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

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

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

С удовольствием расскажу подробнее о сценарии NAnt, если вам интересно.

Другие советы

Вы пробовали использовать Веб-развертывание проект?Существует поддержка для ПО СРАВНЕНИЮ С 2008 годом и сейчас тоже..

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

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

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

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

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

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

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

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

http://releaseit.codeplex.com/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top