Так что не уверен, что это переполнение стека или ошибка сервера. Если у меня есть веб-сайт .NET, который я хочу развернуть в производственной среде, как это лучше всего сделать. Должен ли я упаковать его как MSI и установить? Используйте Nant, чтобы подтолкнуть нужные файлы вверх. Просто FTP файлы с использованием Beyond Compare?
Как вы развертываете производственный код? Это особый случай для Windows, который я рассматриваю здесь.
IIS поддерживает развертывание xcopy, поэтому достаточно просто скопировать файлы, если у вас нет особых требований.
Один из способов сделать это - простой скрипт, который использует ROBOCOPY для копирования новых файлов на сервер.
Если сайт большой и занимает слишком много времени, используйте систему контроля версий. Мне нравится Mercurial для этой цели, хотя вы должны быть осторожны, чтобы файлы конфигурации системы контроля версий в конечном итоге не были представлены широкой публике. В этом случае развертывание - это просто принятие изменений и проверка последней версии на сервере. В дополнение к эффективности, это позволяет выполнять быстрый откат (если вы пометили последнюю хорошую версию) в случае, если ваш последний и самый лучший имеет ошибку showtopper.
Чтобы свести к минимуму время простоя, вы можете сделать так, чтобы скрипт копировал файлы в новый каталог, а затем быстро переименовывал каталоги или изменял место, где IIS указывает на новый каталог.
Система контроля версий привлекательна, но для веб-сайтов, требующих компиляции, она может работать не слишком хорошо. Если скомпилированная версия не находится под контролем версий, конечно.
Джонатон Уотни
1
Я никогда не думал о выпуске системы контроля версий в производство. Интересно, что лучше, чем хранить тонны дополнительных файлов ZIP.
JoshBerke
Я делаю это все время с Subversion. В Apache вы используете mod_rewrite, чтобы пользователи не могли получить доступ к каталогам .svn. Использование контроля версий для развертывания - определенно правильный путь.
Лука
13
Подумайте об использовании Web Deployment Tool от Microsoft. Он был специально разработан для развертывания веб-приложений и обновлений этих веб-приложений на рабочих веб-серверах IIS 6 и 7 и лучше справляется с этой задачей, чем MSI (установщик Windows), IMHO.
Обычно вы используете его, где-то настраивая сайт «master-gold», а затем говорите инструменту, чтобы он упаковывал изменения оттуда. Затем он будет искать целевой сервер для развертывания и вносить любые изменения, необходимые для того, чтобы он выглядел как «золотой мастер» (что полезно для последующих обновлений). Это особенно полезно, если вы развертываете более чем на один веб-сервер (например, ферму) и поддерживает развертывание не только файлов (оно также может обрабатывать внесение изменений в реестр, развертывание сертификатов, баз данных SQL и т. Д.).
+ бесконечность. Этот инструмент спасает жизнь и освобождает целые отделы (a la tsilb) для работы над более интересными проблемами.
Портман
4
Далее я бы ответил на вопрос Джоэла, предложив серверу непрерывной интеграции забрать ваши изменения из вашей системы контроля версий. Затем он будет строить проект. Затем скопируйте вывод сборки в новую папку. Затем вы можете сделать некоторые быстрые изменения конфигурации (web.config и app.config). Вуаля, готов к Xcopy!
То, что я делал у моего предыдущего работодателя, который был в основном сайтом аукциона / электронной коммерции, где мы не могли допустить большого простоя:
Возьмите версию сборки / версию на молнии для развертывания на сервере сборки
Протестируйте его на промежуточном сервере, который имеет копию производственной базы данных и имеет ту же версию программного обеспечения, что и производственное программное обеспечение. Проверьте, чтобы все прошло гладко. Если нет, перезапустите развертывание промежуточного сервера (но сначала восстановите резервную копию).
Если все прошло хорошо: скопируйте сценарии сборки и обновления базы данных на рабочий сервер в локальную папку. Сделайте конкретную резервную копию базы данных и файлов ASP.NET (на случай, если что-то все равно пойдет не так). Подготовьте все, так что мне нужно всего лишь нажать Enter, чтобы запустить скрипт обновления и копирование файлов базы данных (обратите внимание, что я мог бы создать скрипт для этого). Тогда запусти все. Обычно это занимает считанные секунды, и пользователи не заметят, что было время простоя.
Там, как веб-разработчик, есть много забавных вещей. Но это была самая важная часть моей работы.
о боже, на работе у нас есть целая команда для этого. У них есть собственный инструмент, который выводит сервер из кластера / фермы, публикует файлы, запускает NUnits и добавляет его обратно в кластер / ферму. Они делают это для каждого из 16 серверов. Это занимает часы. У остальных из нас даже нет «осмотра вокруг доступа».
Для моих личных проектов я публикуюсь с VS2005 непосредственно на мой веб-сервер. У Кинды менее строгая безопасность.
Подумайте об использовании Web Deployment Tool от Microsoft. Он был специально разработан для развертывания веб-приложений и обновлений этих веб-приложений на рабочих веб-серверах IIS 6 и 7 и лучше справляется с этой задачей, чем MSI (установщик Windows), IMHO.
Обычно вы используете его, где-то настраивая сайт «master-gold», а затем говорите инструменту, чтобы он упаковывал изменения оттуда. Затем он будет искать целевой сервер для развертывания и вносить любые изменения, необходимые для того, чтобы он выглядел как «золотой мастер» (что полезно для последующих обновлений). Это особенно полезно, если вы развертываете более чем на один веб-сервер (например, ферму) и поддерживает развертывание не только файлов (оно также может обрабатывать внесение изменений в реестр, развертывание сертификатов, баз данных SQL и т. Д.).
источник
Далее я бы ответил на вопрос Джоэла, предложив серверу непрерывной интеграции забрать ваши изменения из вашей системы контроля версий. Затем он будет строить проект. Затем скопируйте вывод сборки в новую папку. Затем вы можете сделать некоторые быстрые изменения конфигурации (web.config и app.config). Вуаля, готов к Xcopy!
Проверьте CruiseControl.NET
источник
То, что я делал у моего предыдущего работодателя, который был в основном сайтом аукциона / электронной коммерции, где мы не могли допустить большого простоя:
Там, как веб-разработчик, есть много забавных вещей. Но это была самая важная часть моей работы.
источник
о боже, на работе у нас есть целая команда для этого. У них есть собственный инструмент, который выводит сервер из кластера / фермы, публикует файлы, запускает NUnits и добавляет его обратно в кластер / ферму. Они делают это для каждого из 16 серверов. Это занимает часы. У остальных из нас даже нет «осмотра вокруг доступа».
Для моих личных проектов я публикуюсь с VS2005 непосредственно на мой веб-сервер. У Кинды менее строгая безопасность.
источник