Wie migrieren Sie eine IIS 7-Site auf einen anderen Server?

105

Ich frage mich, was die beste Vorgehensweise zum Verschieben einer Website auf einen anderen Server ist (zusammen mit allen Einstellungen usw.).

  • Erstellen Sie die Site manuell auf dem neuen Server neu (aus offensichtlichen Gründen nicht wartbar).
  • Kopieren Sie die Einstellungsdatei applicationHost.config
  • Verwenden Sie appcmd, um eine Sicherung und Wiederherstellung durchzuführen
  • Verwenden Sie MSDeploy, um die Site auf dem neuen Computer zu veröffentlichen
  • Verwenden Sie ein Tool eines Drittanbieters

Ich frage mich nur, welche Erfahrungen andere gemacht haben.

Kalid
quelle
Microsoft empfiehlt Web Deploy nur (nachdem dieses Tool erstellt wurde). Bevor Sie die folgenden Antworten lesen, stellen Sie sicher, dass Sie wissen, für welche Sie sich auf eigenes Risiko befinden.
Lex Li

Antworten:

134

Ich würde sagen, exportieren Sie Ihre Serverkonfiguration im IIS-Manager:

  1. Klicken Sie im IIS-Manager auf den Serverknoten
  2. Gehen Sie zur freigegebenen Konfiguration unter "Verwaltung"
  3. Klicken Sie auf "Konfiguration exportieren". (Sie können ein Passwort verwenden, wenn Sie es über das Internet senden. Wenn Sie es nur über einen USB-Stick verschieben möchten, schwitzen Sie nicht.)
  4. Verschieben Sie diese Dateien auf Ihren neuen Server

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. Kehren Sie auf dem neuen Server zum Abschnitt "Freigegebene Konfiguration" zurück und aktivieren Sie "Freigegebene Konfiguration aktivieren". Geben Sie den Speicherort im physischen Pfad zu diesen Dateien ein und wenden Sie sie an.

  6. Es sollte nach dem Verschlüsselungskennwort fragen (falls Sie es festgelegt haben) und IIS zurücksetzen.

BAM! Geh ein Bier trinken!

kaut
quelle
8
Wahrscheinlich sollte der Import Server oder das Site Package verwendet werden, anstatt nur die Dateien zu kopieren, obwohl ich dies auch nicht getestet habe. Ich weiß jedoch, dass die applicationHost.config Dateipfade enthält, die nicht unbedingt auf dem neuen Server vorhanden sind, wodurch sie beschädigt werden. Außerdem sollten Sie wahrscheinlich erwähnen, dass sich derzeit KEINE Sites in IIS befinden können, sodass dieser Prozess die derzeit ausgeführte Konfiguration nicht beeinträchtigt.
Frogstarr78
16
Der letzte Schritt kann nicht überbetont werden. Von entscheidender Bedeutung.
Rap
7
Keine gute Idee, wenn Sie auf eine neuere Version von IIS migrieren. Andernfalls dies ist der Weg , es zu tun.
Roy Tinker
1
Ich frage mich, ob
vaso123
1
Die gemeinsam genutzte IIS-Konfiguration wurde nicht als Möglichkeit zum Migrieren von Einstellungen zwischen Computern entwickelt. Wenn Sie also nach dieser Antwort auf ein Problem stoßen, beißen Sie sich selbst und beschuldigen Sie keine anderen.
Lex Li
25

MSDeploy kann alle Inhalte, Konfigurationen usw. migrieren, die vom IIS-Team empfohlen werden. http://www.iis.net/extensions/WebDeploymentTool

Führen Sie den folgenden Befehl aus, um ein Paket zu erstellen (ersetzen Sie die Standardwebsite durch Ihren Website-Namen):

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

Führen Sie den folgenden Befehl aus, um das Paket wiederherzustellen:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log
Bill Staples
quelle
1
Danke Bill - ich hatte das Tool gesehen, war aber vorsichtig, weil es noch in der Beta war.
Kalid
1
Im Jahr 2016 ist dies immer noch der Stand der Technik, aber es ist wirklich schwierig, mit MSDEPLOY 3.6 zu arbeiten. Ich hoffe, dass sie irgendwann etwas Neues machen.
Warren P
MSDeploy hat Websites für uns nicht korrekt übertragen. Am Ende hatten wir eine Site, die Anwendungen für jede unserer Sites enthielt, sodass die gesamte Struktur falsch war.
Brian
Sicherlich ist dies der empfohlene Weg und Dokumentation wie docs.microsoft.com/en-us/iis/publish/using-web-deploy/… und docs.microsoft.com/en-us/iis/publish/using-web- Bereitstellen /… sind für Benutzer von entscheidender Bedeutung, um die erforderlichen Schritte und wichtigen Punkte zu beherrschen, auf die sie achten müssen. Die meisten Probleme im Internet werden bereits in den Artikeln beantwortet. Wenn die Leute genug Zeit damit verbringen, ist Web Deploy kein "schwieriges" Tool.
Lex Li
18

Hier ist eine hilfreiche Website zur Verwendung von appcmd zum Exportieren / Importieren einer Site-Konfiguration. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

Roy
quelle
Danke für den Link. Dadurch konnte ich auch die Site-ID und alles andere ändern und musste nicht 10 verschiedene Anwendungen und 30 verschiedene virtuelle Verzeichnisse einrichten. Große
Zeitersparnis
Da dieser Ansatz die zugrunde liegenden Abhängigkeiten (IIS-Module usw.) nicht berücksichtigt, verwenden Sie ihn auf eigenes Risiko.
Lex Li
12

Microsoft Web Deploy v3 kann alle Ihre Dateien, Konfigurationseinstellungen usw. exportieren und importieren. Es speichert alles in einem Zip-Archiv, das zum Import auf den neuen Server bereit ist. Es kann sogar auf neuere Versionen von IIS (v7-v8) aktualisiert werden.

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

Nach der Installation des Tools: Klicken Sie mit der rechten Maustaste auf Ihren Server oder Ihre Website in der IIS-Verwaltungskonsole, wählen Sie "Bereitstellen", "Anwendung exportieren ..." und führen Sie den Export aus.

Importieren Sie auf dem neuen Server das exportierte Zip-Archiv auf die gleiche Weise.

Zymotik
quelle
aber es braucht alle Dateien. Gibt es eine Möglichkeit, das Aufnehmen der Dateien zu überspringen? Wenn Sie beispielsweise einen FTP-Server migrieren, wird versucht, alle Dateien aufzunehmen und zu komprimieren.
RayofCommand
2
@RayofCommand - Wenn Sie die Bereitstellungsoptionen auswählen, können Sie die Liste "Inhalt" löschen. Dann enthält das Paket nicht alle Dateien.
Zhaph - Ben Duguid
1
Aber nur bei der Bereitstellung von Standort zu Standort ... nicht für einen gesamten Serverumzug.
Ethan Allen
1
Nach der Installation von MS Web Deploy auf dem Zielserver (IIS8) enthält die IIS-Verwaltungskonsole keine der Web Deploy-Optionen.
Brian
1
Ich habe auch kein "Bereitstellen" -Menü nach der Installation des Pakets.
Devil's Advocate
3

Verwenden Sie appcmd, um eine oder alle Sites zu exportieren, und importieren Sie sie erneut auf den neuen Server. Dies kann iis7.0 oder 7.5 sein. Wenn Sie mit appcmd exportieren, werden die Kennwörter entschlüsselt, erneut importiert und erneut verschlüsselt.

Jim
quelle
3

Ich kann den Thread wegen fehlender Wiederholung nicht kommentieren. Ein anderer Kommentator gab an, dass sie nicht von einer niedrigeren Version auf eine höhere Version von IIS migrieren konnten. Dies gilt, wenn Sie einige Dateien nicht zusammenführen. Wenn Sie dies jedoch tun, können Sie dies tun, da ich gerade meine IIS 7.5-Site mit der von chews veröffentlichten Antwort auf IIS 8.0 migriert habe.

Beim Erstellen des Exports (II7.5) gibt es zwei Schlüsseldateien (Administration.config und ApplicationHost.config), die Verweise auf Ressourcen auf dem IIS7.5-Server enthalten. Beispielsweise wird eine DLL mit einem öffentlichen Schlüssel und einer für 7.5 spezifischen Version referenziert. Diese sind auf dem IIS8-Server NICHT identisch. Die Funktionskonfiguration kann ebenfalls unterschiedlich sein (ich habe sichergestellt, dass meine identisch sind). Es gibt einige neue Funktionen in 8, die in 7.5 niemals existieren werden.

Wenn Sie mutig genug sind, die beiden Dateien zusammenzuführen, funktioniert es. Ich musste IIS einmal deinstallieren, weil ich es vermasselt habe, aber beim zweiten Mal.

Ich habe ein Merge-Tool (Beyond Compare) verwendet und ohne etwas Äquivalentes wäre es eine riesige PITA - aber mit einem guten Diff-Tool (fünf Minuten) war es ziemlich einfach.

Um die Zusammenführung durchzuführen, müssen die 8.0-Dateien von den exportierten 7.5-Dateien unterschieden werden, bevor ein Import versucht wird. Zum größten Teil müssen die 8.0-Dateien die serverspezifischen Inhalte in den exportierten 7.5-Dateien überschreiben, während die Site- / App-Pool-spezifischen Inhalte verbleiben.

Ich fand, dass administrative.config fast identisch war, ohne die Versionsinformationen vieler Einträge. Dieser war einfach.

Die applicationHost.config weist viel mehr Unterschiede auf. Einige Einträge sind unterschiedlich angeordnet, ansonsten jedoch identisch. Sie müssen also jeden Unterschied herausgreifen und herausfinden.

Ich habe meine 7.5-Exportdateien vor dem Zusammenführen im Ordner System32 \ inetsrv \ config \ Export abgelegt.

Ich habe den FROM-Ordner System32 \ inetsrv \ config mit dem Ordner System32 \ inetsrv \ config \ Export für beide oben genannten Dateien zusammengeführt. Ich habe alles in den FROM-Dateien außer ortsspezifischen Tags / Elementen (z. B. applicationPools, customMetadata, Sites, Authentifizierung) verschoben. Besonders hervorzuheben ist, dass ich auch viele standortspezifische "Standort" -Tagblöcke behalten musste, aber der neue Server hatte einen eigenen "Standort" -Tagblock mit serverspezifischen Standardeinstellungen, die beibehalten werden müssen.

Beachten Sie schließlich, dass diese zwischengespeicherten Kennwörter bei Verwendung von Dienstkonten Junk-Kennwörter sind und für Ihre App-Pools erneut eingegeben werden müssen. Keine meiner Websites funktionierte anfangs, aber alles, was erforderlich war, war die erneute Eingabe der Kennwörter für alle meine App-Pools, und ich war betriebsbereit.

Wenn jemand, der einen Kommentar abgeben kann, diesen Beitrag erwähnt, hilft er wahrscheinlich jemand anderem wie mir, der viele Sites auf einem Server mit komplizierten Konfigurationen hat.

Grüße,

Stuart

Stuart
quelle
Ich habe tatsächlich Stuarts Antwort für eine zusammengeführte Migration verwendet. Ich mag MS Web Deploy immer noch nicht.
Kaut
1

In meinem Fall wurden die Dateien bereits kopiert. Ich habe den einfachsten Weg gefunden, die Schritte in diesem Handbuch zu befolgen: https://www.ryadel.com/de/exporting-importing-app-pools-and-websites-configuration-between -multiple-iis-instance /

Ich exportierte AppPools / Websites, kopierte die XML-Dateien auf den Zielserver und importierte AppPools und dann Websites. Hat sehr gut funktioniert. Dies ist auch eine hervorragende Option für diese Frage.

Ralph
quelle
Dies gab mir nur Fehler, die besagten, dass der Standard-App-Pool und die Standard-Website nicht überschrieben werden konnten ... no bueno.
Devlin Carnate
Versuchen Sie, die Standardeinstellungen in etwas anderes umzubenennen? und sehen, ob sie mit dem oben erläuterten Prozess erstellt werden?
Ralph
Dies funktionierte für mich von IIS7.5 (2008) zu IIS10 (2019). Appcmd gab mir zunächst Fehler auf der bereits vorhandenen 'Standardwebsite'. Das Umbenennen hat nicht funktioniert, daher habe ich die Standardwebsite gelöscht. Der Import lief dann fehlerfrei.
MTAdmin