Как перенести сайт IIS 7 на другой сервер?


105

Мне интересно, как лучше всего перенести веб-сайт на другой сервер (вместе со всеми настройками и т. Д.)

  • Вручную воссоздайте сайт на новом сервере (не обслуживается по очевидным причинам)
  • Скопируйте файл настроек applicationHost.config
  • Используйте appcmd для создания резервной копии и восстановления
  • Используйте MSDeploy для публикации сайта на новом компьютере
  • Используйте сторонний инструмент

Просто интересно, каков был опыт других.


Microsoft рекомендует только веб-развертывание (после того, как этот инструмент был создан), поэтому, прежде чем читать ответы ниже, убедитесь, что вы знаете, в отношении чего вы полностью на свой страх и риск.
Лекс Ли

Ответы:


134

Я бы сказал, экспортируйте конфигурацию вашего сервера в диспетчер IIS:

  1. В диспетчере IIS щелкните узел сервера
  2. Перейдите к общей конфигурации в разделе «Управление».
  3. Щелкните «Экспорт конфигурации». (Вы можете использовать пароль, если отправляете их через Интернет, если вы просто собираетесь переместить их через USB-ключ, не переживайте.)
  4. Переместите эти файлы на свой новый сервер

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. На новом сервере вернитесь в раздел «Общая конфигурация» и установите флажок «Включить общую конфигурацию». Введите физический путь к этим файлам и примените их.

  6. Он должен запросить пароль шифрования (если вы его установили) и сбросить IIS.

БАМ! Иди выпей пива!


8
Вероятно, следует использовать сервер импорта или пакет сайта вместо простого копирования файлов, хотя я это тоже не тестировал. Но я знаю, что в applicationHost.config есть пути к файлам, которые не обязательно будут присутствовать на новом сервере, что может привести к его поломке. Кроме того, вы, вероятно, должны упомянуть, что в настоящее время в IIS не может быть НИКАКИХ сайтов, поэтому этот процесс не влияет на текущую конфигурацию.
frogstarr78 07

16
Последний шаг трудно переоценить. Критически важно.
Rap

7
Не лучшая идея, если вы переходите на более новую версию IIS. В противном случае это является способом сделать это.
Рой Тинкер

1
Мне интересно, может ли это сработать, потому что не должно: docs.microsoft.com/en-us/iis/manage/…
vaso123

1
Общая конфигурация IIS не была разработана как способ переноса настроек между машинами, поэтому, если вы столкнетесь с какой-либо проблемой после этого ответа, укусите себя и не обвиняйте никого.
Лекс Ли

26

MSDeploy может переносить все содержимое, конфигурацию и т. Д., Что рекомендует группа IIS. http://www.iis.net/extensions/WebDeploymentTool

Чтобы создать пакет, выполните следующую команду (замените Default Web Site именем вашего веб-сайта):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

Чтобы восстановить пакет, выполните следующую команду:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log

1
Спасибо, Билл - я видел этот инструмент, но опасался, потому что он все еще находится в бета-версии.
Kalid 03

1
В 2016 году это все еще «современное искусство», но с MSDEPLOY 3.6 действительно сложно работать. Надеюсь, они когда-нибудь сделают что-то новое.
Warren P

MSDeploy не правильно переносил сайты. В итоге у нас появился один сайт, содержащий приложения каждого из наших сайтов, поэтому вся структура была неправильной.
brianary 05

Конечно, это рекомендуемый способ, и документация вроде docs.microsoft.com/en-us/iis/publish/using-web-deploy/… и docs.microsoft.com/en-us/iis/publish/using-web- deploy /… критически важны для пользователей, чтобы они могли освоить необходимые шаги и ключевые моменты, на которые им нужно обратить внимание. Ответы на большинство вопросов в Интернете уже даны в статьях. Если люди тратят на это достаточно времени, Web Deploy не является «сложным» инструментом.
Лекс Ли

18

Вот полезный веб-сайт об использовании appcmd для экспорта / импорта конфигурации сайта. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/


Спасибо за ссылку. Это также позволило мне изменить идентификатор сайта и все остальное, и мне не пришлось настраивать 10 разных приложений и 30 разных виртуальных каталогов. Большая
экономия

Поскольку в этом подходе не учитываются основные зависимости (модули IIS и т. Д.), Используйте его на свой страх и риск.
Лекс Ли

12

Microsoft Web Deploy v3 может экспортировать и импортировать все ваши файлы, параметры конфигурации и т. Д. Он помещает все это в zip-архив, готовый для импорта на новый сервер. Его можно даже обновить до более новых версий IIS (v7-v8).

http://www.iis.net/extensions/WebDeploymentTool

После установки инструмента: щелкните правой кнопкой мыши свой сервер или веб-сайт в консоли управления IIS, выберите «Развернуть», «Экспортировать приложение ...» и выполните экспорт.

На новом сервере таким же образом импортируйте экспортированный zip-архив.


но берет все файлы. есть ли способ не брать файлы? если вы, например, мигрируете FTP-сервер, он пытается собрать все файлы и заархивировать их.
RayofCommand 06

2
@RayofCommand - При выборе параметров развертывания вы можете очистить список «Содержимое» - тогда пакет не будет включать все файлы.
Zhaph - Бен Дугид

1
Но только при поэтапном развертывании .... а не при перемещении всего сервера.
Итан Аллен

1
После установки MS Web Deploy на конечный сервер (IIS8) консоль управления IIS не содержит никаких параметров веб-развертывания.
brianary 05

1
У меня также нет меню «Развернуть» после установки пакета.
Devil's Advocate

3

используйте appcmd для экспорта одного или всех сайтов, а затем повторно импортируйте их на новый сервер. Это может быть iis7.0 или 7.5. Когда вы экспортируете с помощью appcmd, пароли расшифровываются, затем повторно импортируются, и они повторно зашифровываются.


3

Я не могу комментировать тему из-за отсутствия репутации. Другой комментатор заявил, что они не могут перейти с более ранней версии IIS на более высокую. Это верно, если вы не объединяете некоторые файлы, но если вы это сделаете, вы можете, поскольку я только что перенес свой сайт IIS 7.5 в IIS 8.0, используя ответ, опубликованный chews.

Когда экспорт создан (II7.5), есть два ключевых файла (administrator.config и applicationHost.config), которые имеют ссылки на ресурсы на сервере IIS7.5. Например, DLL будет ссылаться на открытый ключ и версию, специфичную для 7.5. Это НЕ то же самое на сервере IIS8. Конфигурация функций также может отличаться (я убедился, что мои были идентичны). В версии 8 есть несколько новых функций, которых никогда не будет в версии 7.5.

Если у вас хватит смелости объединить два файла - это сработает. Один раз мне пришлось удалить IIS, потому что я все испортил, но получил второй раз.

Я использовал инструмент слияния (Beyond Compare), и без чего-то эквивалентного это был бы огромный PITA, но это было довольно легко с хорошим инструментом сравнения (пять минут).

Чтобы выполнить слияние, файлы 8.0 необходимо сравнить с экспортированными файлами 7.5 ПЕРЕД попыткой импорта. По большей части файлы 8.0 должны перезаписывать специфический для сервера материал в экспортированных файлах 7.5, оставляя при этом специфический для сайта / пула приложений материал.

Я обнаружил, что administrator.config почти идентичен, без информации о версии многих записей. Это было легко.

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

Я поместил свои экспортные файлы 7.5 в папку System32 \ inetsrv \ config \ Export перед объединением.

Я объединил ИЗ папки System32 \ inetsrv \ config в папку System32 \ inetsrv \ config \ Export для обоих файлов, упомянутых выше. Я протолкнул все в файлах FROM, кроме тегов / элементов, специфичных для сайта (например, applicationPools, customMetadata, sites, authentication). Особо следует отметить, что было также много блоков тегов "местоположения", специфичных для сайта, которые мне пришлось сохранить, но у нового сервера был свой собственный блок тегов "местоположения" с определенными для сервера значениями по умолчанию, которые необходимо сохранить.

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

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

С Уважением,

Стюарт


Я действительно использовал ответ Стюарта для объединенной миграции, мне все еще не нравится MS Web Deploy.
жует

1

В моем случае файлы уже были скопированы, я нашел самый простой способ выполнить шаги, описанные в этом руководстве: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -множественные-экземпляры-iis /

Я экспортировал пулы приложений / веб-сайты, скопировал файлы xml на целевой сервер и импортировал пулы приложений, затем веб-сайты. Сработало очень хорошо. Это тоже отличный вариант ответа на этот вопрос.


это просто дало мне ошибку, заявив, что пул приложений по умолчанию и веб-сайт по умолчанию не могут быть перезаписаны ... no bueno.
devlin carnate

Попробуйте переименовать настройки по умолчанию во что-нибудь другое? и посмотреть, будут ли они созданы с помощью описанного выше процесса?
Ральф

Это сработало для меня при переходе с IIS7.5 (2008) на IIS10 (2019). Appcmd изначально выдавал мне ошибки на уже существующем «веб-сайте по умолчанию». Переименование не сработало, поэтому я удалил веб-сайт по умолчанию. Затем импорт прошел без ошибок.
MTAdmin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.