#.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 приложения?