Развертывание обновлений приложений на нескольких сайтах

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

база данных

  1. изменения базы данных скриптов (с помощью создания скриптов в Management Studio).
  2. подключение к БД сайта в управлении Студия.
  3. запустите SQL-скрипт в БД сайта.
  4. повторите шаги 2 и 3 для каждого сайта.

Веб-Приложения

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

Службы Windows

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

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

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

6 ответов


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

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


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

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

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

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

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


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

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


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


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


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

кроме того, взгляните на средство веб-развертывания IIS. Он только недавно ушел RC1.