Массовое обновление веб-приложений .net

#.net #asp.net #iis #deployment

#.net #asp.net #iis #развертывание

Вопрос:

Итак, у меня есть веб-приложение .net, которое я использую функцию публикации VS 2010 для развертывания на сервере. Каждый экземпляр приложения имеет свою собственную уникальную строку подключения, указывающую на его собственную базу данных.

У меня есть 80 экземпляров этого приложения. Я хотел бы иметь возможность обновить 1 экземпляр «основной» версией приложения, а затем обновить остальные 79 самостоятельно, но сохранить их существующую строку подключения.

Каков наиболее распространенный / стандартный способ достижения этого?

Комментарии:

1. Простой скрипт xcopy или powershell должен быть способен это сделать.

2. @amit_g Я не думаю, что xcopy настолько мощный.

3. Должно было быть более понятным — xcopy из пакета dos.

4. Разве xcopy не будет выполнять запись через web.config?

5. Вы можете использовать опцию /EXCLUDE в xcopy, чтобы исключить определенные файлы.

Ответ №1:

Через свойства файла web.config (обозреватель решений) вы можете установить для «Действия сборки» значение «нет».

Затем разверните веб-приложение в локальном каталоге. Теперь этот файл web.config отсутствует.

Затем скопируйте этот локальный каталог поверх ваших 80 приложений. Возможно, вы могли бы автоматизировать этот шаг.

Комментарии:

1. Так что, нет никаких инструментов, предназначенных для этого сценария? Я подумал, что это будет довольно распространенный сценарий. У Red-gate есть подобный инструмент для SQL Server (сравнение SQL). Я надеялся, что будет продукт, ориентированный на это, или инструмент от MS

2. Я думаю, что это, вероятно, самый простой подход. Это в сочетании с предложением xcopy выше

Ответ №2:

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

(Кажется, я не могу ответить на ваш комментарий, поэтому отредактировал свой ответ) Кен — да, документ действительно тонкий. У них есть видеоурок, который на самом деле намного полезнее, и я также получил несколько советов от одного из их разработчиков. Честно говоря, я не так уж много знаю о asp.net но из того, что вы описываете, это выглядит очень похоже на то, что я настраиваю с помощью своих веб-приложений tomcat (war) на своих 30 серверах. Вы определяете «пакет», который представляет собой просто сжатый (или тарированный) архив файлов / исполняемых файлов, которые вы должны развернуть, настраиваете целевые серверы, а затем указываете sdcm, какой пакет отправляется на какой сервер. Существует своего рода концепция переменной среды, которую вы можете использовать в своих файлах конфигурации (в вашем случае, %{connection_string}) имеет заполнители, которые заменяются во время установки специфичными для сервера значениями, которые вы указываете в своей конфигурации sdcm. Примерно за полдня работы мне удается настроить kwateesdcm таким образом, что одним щелчком мыши он подключается к каждому серверу, останавливает tomcat, копирует мои архивы, расширяет их там, где мне нужно, заменяет параметры, специфичные для сервера, и перезапускает tomcat, чтобы учесть все изменения. Самое классное, что sdcm также архивирует предыдущие архивы / конфигурации, так что это избавляет от большого напряжения при обновлении, поскольку я могу быстро вернуться к предыдущей стабильной версии, если в моей последней версии возникли проблемы. Одна неприятная вещь заключается в том, что для этого требуется ssh-сервер на каждом целевом сервере. Я преодолел это, установив winsshd на свои серверы

Комментарии:

1. Привет, Macolm — итак, я проверил веб-сайт KwateeSDCM, но я не смог увидеть ничего о asp.net и документация была довольно скудной. Вы использовали это с asp.net приложения?