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