OK, da jeder die Antwort, die ich 2008 geschrieben habe, herunterstuft*...
Ich werde Ihnen sagen, wie wir es jetzt im Jahr 2014 machen. Wir verwenden keine Websites mehr, weil wir jetzt ASP.NET MVC verwenden.
Wir brauchen sicherlich keinen Load Balancer und zwei Server, um dies zu tun, das ist in Ordnung, wenn Sie 3 Server für jede Website, die Sie pflegen, haben, aber es ist total overkill für die meisten Websites.
Außerdem verlassen wir uns nicht auf den neuesten Assistenten von Microsoft - zu langsam, zu viel versteckte Magie und zu anfällig dafür, seinen Namen zu ändern.
So machen wir es:
-
Wir haben einen Post-Build-Schritt, der die generierten DLLs in einen 'bin-pub'-Ordner kopiert.
-
Wir verwenden Beyond Compare (ein hervorragendes Tool**), um geänderte Dateien zu überprüfen und mit dem Produktionsserver zu synchronisieren (über FTP, da dies weitgehend unterstützt wird).
-
Wir haben eine sichere URL auf der Website, die eine Schaltfläche enthält, mit der alles in "bin-pub" nach "bin" kopiert wird (vorher wird ein Backup erstellt, um ein schnelles Rollback zu ermöglichen). An diesem Punkt startet sich die Anwendung neu. Dann prüft unser ORM, ob es Tabellen oder Spalten gibt, die hinzugefügt werden müssen, und erstellt sie.
Das sind nur Millisekunden Ausfallzeit. Der Neustart der Anwendung kann ein oder zwei Sekunden dauern, aber während des Neustarts werden die Anfragen gepuffert, so dass es praktisch keine Ausfallzeit gibt.
Der gesamte Bereitstellungsprozess dauert zwischen 5 Sekunden und 30 Minuten, je nachdem, wie viele Dateien geändert werden und wie viele Änderungen zu überprüfen sind.
Auf diese Weise müssen Sie nicht die gesamte Website in ein anderes Verzeichnis kopieren, sondern nur den bin-Ordner. Außerdem haben Sie die vollständige Kontrolle über den Prozess und wissen genau, was sich ändert.
**Wir machen immer einen kurzen Blick auf die Änderungen, die wir bereitstellen - als doppelte Überprüfung in letzter Minute, damit wir wissen, was wir testen müssen und falls etwas nicht funktioniert, sind wir bereit. Wir verwenden Beyond Compare, weil man damit Dateien einfach über FTP vergleichen kann. Ich würde das nie ohne BC machen, man hat keine Ahnung, was man da überschreibt.
*Scrollen Sie nach unten, um es zu sehen :( Übrigens würde ich keine Websites mehr empfehlen, weil sie langsamer zu bauen sind und mit halb kompilierten temporären Dateien schwer abstürzen können. Wir haben sie in der Vergangenheit verwendet, weil sie eine flexiblere Datei-für-Datei-Bereitstellung ermöglichten. Kleinere Probleme lassen sich sehr schnell beheben, und man kann genau sehen, was man bereitstellt (natürlich nur, wenn man Beyond Compare verwendet - ansonsten kann man es vergessen).
0 Stimmen
Sollte das nicht auf ServerFault stehen?
53 Stimmen
Vielleicht, aber ServerFault gab es im September '08 noch nicht.
3 Stimmen
Kann IIS auf einen Symlink-Ordner verweisen? Wird das Ändern des Symlinks dazu führen, dass der IIS-Prozess recycelt wird?
0 Stimmen
Gibt es eine endgültige Lösung mit vollständigem Quellcode-Skriptbeispiel?
0 Stimmen
Ist es nicht möglich, mehrere App-Pools zu haben und den Datenverkehr von einem App-Pool auf einen anderen umzuschalten?