Развертывание обновлений приложений на нескольких сайтах - PullRequest
7 голосов
/ 27 марта 2009

У меня есть приложение, состоящее из веб-приложения ASP.NET, нескольких служб Windows и базы данных SQL Server 2005. Это приложение реплицируется на несколько сайтов, поэтому на каждом сайте есть сервер, содержащий все части (веб-приложение, службы и БД). В настоящее время процесс развертывания обновлений выглядит так:

База данных

  1. Изменения базы данных сценариев (с использованием функции «Создать сценарии» в Management Studio).
  2. Подключение к базе данных сайта в Management Studio.
  3. Запуск сценария SQL в базе данных сайта.
  4. Повторите 2 и 3 для каждого сайта.

Веб-приложение

  1. Использовать публикацию в Visual Studio.
  2. Удалить web.config из опубликованной копии.
  3. Zip-файлы веб-приложений.
  4. Копирование zip-файла на сайт.
  5. Удаленный рабочий стол на этот сайт для распаковки файлов.
  6. Вручную измените web.config при необходимости.
  7. Повторите 4-6 для каждого сайта.

Службы Windows

  1. Сборка проекта в Visual Studio.
  2. Восстановленные двоичные файлы на молнии.
  3. Скопировать zip-файл на сайт.
  4. Удаленный рабочий стол на этот сайт.
  5. Остановить службу.
  6. Удалите старую версию.
  7. Установите новую версию.
  8. Вручную измените .config при необходимости.
  9. Запустите сервис.
  10. Повторите 3-9 для каждого сайта.

В настоящее время есть 3 сайта, и развертывание является раздражающим, но управляемым, однако в течение года у нас, скорее всего, будет 10 или 11 сайтов, и необходимость развертывания обновлений таким образом сделает меня самоубийством.

Итак, я ищу предложения о том, как автоматизировать этот процесс. Я начал изучать MSBuild для слияния конфигураций и копирования файлов на мои серверы, но я не уверен, как далеко я это уйду. Спасибо.

Ответы [ 6 ]

5 голосов
/ 27 марта 2009

Возьмите любой язык сценариев, который вам удобен (похоже, даже .bat будет работать для вас) и получите PsTools

Затем вы можете использовать psexec и psservice для удаленного управления процессами и службами. Вам все равно придется писать сценарии самостоятельно, но вам не нужно будет входить удаленно (например, чтобы разархивировать и скопировать файлы), и то, что работает для одного сервера, будет работать для 10.

2 голосов
/ 27 марта 2009

MSBUILD может в значительной степени делать все, что вам нужно. Но, похоже, вам потребуются некоторые пользовательские задачи, чтобы сделать это полностью автоматизированным. Но это возможно с небольшим усилием.

MSBUILD фактически уже отделен от вашего проекта. Это сам файл проекта. Это в основном XML за всем. И в этом XML есть события PreBuild и PostBuild, которые запускаются, и вы можете выполнять команды копирования, вставки и тому подобное.

Также вас могут заинтересовать проекты веб-развертывания, которые позволяют вам иметь несколько файлов web.config для каждой среды, в которую вы строите.

Для более сложных сценариев вы можете создавать свои собственные задачи, которые интегрируются с событиями MSBUILD. Вы даже можете использовать условия с этими задачами. Ссылка ниже говорит все об этом.

Для получения дополнительной информации о MSBUILD перейдите на http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx

1 голос
/ 03 ноября 2010

Для разработки базы данных попробуйте http://www.deltasql.org/wiki.

Существует центральный сервер (в PHP / mySQL, его можно легко установить с помощью пакета XAMPP), где вы храните свои дельта-сценарии SQL. В каждой вашей схеме вам нужно добавить таблицу tbsynchronize, которая содержит последний скрипт, выполненный в этой базе данных. Затем сервер deltasql создает сценарий синхронизации, который содержит недостающие сценарии для этой схемы.

0 голосов
/ 27 марта 2009

Вы можете использовать проекты развертывания и проекты веб-развертывания в Visual Studio для создания MSI-файлов для выполнения установок. Вы даже можете запросить информацию, которая может отличаться на разных сайтах.

Кроме того, взгляните на IIS Web Deployment tool . Это только что ушел RC1.

0 голосов
/ 27 марта 2009

Хорошо, у меня нет полного ответа, но почему вы удаляете службы. Вы можете просто остановить их и заменить файлы. Я делаю это все время. Но я хотел бы увидеть ответ, который вы получите, поскольку у меня есть такая же проблема.

0 голосов
/ 27 марта 2009

Автоматизируйте и пишите как можно больше, даже часть FTP. Используйте ant / nant и командные файлы, чтобы сделать повторяющиеся вещи для вас. Если возможно, предоставьте сценарии отмены, когда дела пойдут плохо. Я обновляю производственный код в течение 3 секунд в коробках Linux (с помощью сценариев: резервное копирование, сценарии delta sql, код выпуска, перезапуск серверов), но в Windows я не уверен, насколько аккуратно вы могли бы это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...