2009-06-10 6 views
19

Gegenwärtig stellen wir kompilierte ASP.Net-Anwendungen bereit, indem Sie die Website lokal veröffentlichen und eine ZIP-Datei per E-Mail an den Systemadministrator mit einer (normalerweise) langen Reihe von Anweisungen zur Bereitstellung senden. Dies liegt daran, dass beim ersten Bereitstellen einer ASP.Net-Anwendung für einen Kunden die Dev- und die Test-IIS-Instanz identisch waren und wir die Website nicht zweimal auf derselben Maschine bereitstellen konnten. Dies gibt den Ton für die Bereitstellung in allen folgenden Projekten vor.Welche Methode verwenden Sie, um ASP.Net-Anwendungen frei zu implementieren?

Ich evaluiere jetzt unsere Deployment-Methoden und betrachte speziell die eingebauten Deployment-Tools; speziell betrachte ich benutzerdefinierte Installationstasks und verwende so viel von der Standard-Installer-Funktionalität wie ich kann (hauptsächlich die Benutzerschnittstelle).

Zweitens suche ich Zusammenführungen von Bereitstellungen und automatischen Updates.

Wie gehen Sie mit der Bereitstellung von Software in Ihrer Organisation um? Welche Tools verwenden Sie und welche Probleme stoßen Sie am häufigsten an?

+1

Seit ich diese ursprüngliche Frage gepostet habe, habe ich WiX entdeckt. Es ist Open Source und kostenlos. Es ist auch, was Microsoft verwendet, um das Bereitstellungspaket für Office 2007 zu entwickeln. Es scheint einfach zu verwenden, sobald Sie die Grundlagen verstehen, und die Benutzeroberfläche ermöglicht es Ihnen, Ihre Komponenten zur Installationszeit auszuwählen. – Hooloovoo

+0

Nur ein Update; Application Release Automation Tool sind speziell für diesen Zweck entwickelt es gibt eine Reihe von bemerkenswerten Tool da draußen zu vergleichen https://en.wikipedia.org/wiki/Application_release_automation –

Antwort

-2

Bereitstellen von Web-Anwendungen, das Copy Web-Tool verwenden
Text von Microsoft Training Kit Buch Web Based Entwicklung
Web-Setup-Projekten nützlich ist, wenn Sie eine Webanwendung für viele Nutzer (zum Beispiel bieten, die Menschen zum Download erlaubt die Anwendung aus dem Web und installieren Sie es). Wenn Sie für das Aktualisieren einer bestimmten Website für Ihre Organisation verantwortlich sind, ist es nicht praktikabel, sich bei jedem Update an den Webserver anzumelden und ein Windows Installer-Paket zu installieren. Für interne Anwendungen können Sie die Webanwendung direkt auf dem Webserver bearbeiten. Änderungen, die Sie vornehmen, werden jedoch sofort in Ihrer Produktions-Webanwendung implementiert, einschließlich eventuell vorhandener Fehler. Um es Ihnen zu ermöglichen, eine Webanwendung zu testen, können Sie eine lokale Kopie der Webanwendung auf Ihrem Computer bearbeiten und Änderungen mit dem Tool Web kopieren auf dem Produktionsserver veröffentlichen. Sie können das Web kopieren-Tool auch verwenden, um Änderungen von einem Staging-Server auf einen Produktions-Webserver oder zwischen zwei beliebigen Webservern zu veröffentlichen. Das Web kopieren-Tool kann einzelne Dateien oder eine gesamte Website auf eine Quellwebsite und eine Remotegesellschaft kopieren. Sie können Dateien auch synchronisieren, indem Sie nur geänderte Dateien kopieren und mögliche Versionskonflikte erkennen, bei denen dieselbe Datei sowohl auf der Quell- als auch auf der Remote-Site separat bearbeitet wurde. Das Web kopieren-Tool kann Änderungen in einer einzelnen Datei nicht zusammenführen; Nur vollständige Dateien können kopiert werden.

+0

Die Umgebung, mit der ich am häufigsten arbeite ist auf 5 dedizierten Web aufgeteilt Server. Wir suchen nach einem wiederholbaren und einfachen Bereitstellungspfad, vor allem, weil wir keinen Zugriff auf die Release- oder Produktionsumgebungen haben (Umgebung 4 und 5 im Bereitstellungspfad). Daher stellen wir im Wesentlichen viele Benutzer bereit. :-) – Hooloovoo

+0

http://msdn.microsoft.com/en-us/library/xay0wxbf(VS.80).aspx – MarkJ

0

Ein paar Dinge, die ich getan habe ist folgendes:

1) ein Web-Bereitstellungsprojekt verwenden, um die Build sowie Gabe web.config Abschnitt Ersatz, wenn die Konfigurationsänderungen zwischen Umgebungen zu kompilieren und zu reinigen. 2) Verwenden Sie NAnt, um das gesamte Erstellen, Archivieren und Kopieren auf repetitive Weise durchzuführen.

Das Web Deployment-Projekt erstellt am Ende eine MSBuild-Datei, die anstelle von NAnt verwendet werden kann; Ich kam jedoch von einem Java-Hintergrund und benutzte Ant die ganze Zeit, also ist NAt meine Vorliebe in .Net. Wenn Sie die NAnt Contrib-Aufgaben hinzufügen, können Sie nicht nur die Dateien bereitstellen, sondern auch Elemente wie das Quellcode-Steuerelement (falls es nicht Teil der Standardaufgaben ist) und SQL-Skriptausführung für Änderungen behandeln.

Derzeit verwende ich beide Optionen zusammen. Ich habe meine NAnt-Build-Datei das Web Deployment Project über MSBuild aufrufen. Mit dem Setup des Konfigurationsmanagers für jede Umgebung kann ich den Ersatz der web.config-Abschnitte automatisch verwalten und habe immer noch recht gute Kontrolle über das Kopieren und Archivieren eines Releases.

Hoffe, das hilft.

+0

Derzeit verwenden wir TeamCity von JetBrains, und ich ließ jemand anderen die Build-Skripte einrichten! Es ist ziemlich einfach und wir verwenden MSBuild auf dem CI-Server. Ich benutze auch ein Web-Bereitstellungsprojekt, um die Website korrekt zu erstellen, aber manchmal kann es ein bisschen fummelig sein, es richtig einzurichten. – Hooloovoo

+0

Ich weiß, was Sie meinen, wenn es darum geht, das Build-Setup richtig zu machen. Am Ende habe ich die Configuration Manager-Umgebung für jede bereitgestellte Umgebung eingerichtet und dann das Web-Deployment-Projekt erstellt (automatisiert mit der Build-Datei von NAnt oder einem CI-Server). Wenn zusätzliche Reinigung/Manipulation erforderlich ist, werde ich entweder die WDproj (Msbuild) -Datei direkt bearbeiten oder die Aktualisierungen in NAnt vornehmen. Da Sie die CI-Build-Dateien für TeamCity nicht schreiben, ist die wdproj die beste Wahl. Abgesehen davon, schau dir an, was die Schmerzpunkte in jeder Umgebung sind und konzentriere dich darauf. – JamesEggers

0

Wir verwenden Web-Deployment-Projekte und die VS 2008-Projekte, um eine .msi aus der Ausgabe der webdeployment & anderen Projekten zu erstellen. Eine normale Windows-App namens 'setup' wird verwendet, um eine Menge der Db-Erstellung und Vorarbeiten zu tun, anstatt zu versuchen, die Setup-Projekte mit benutzerdefinierten Schritten anzupassen. Es ist viel einfacher, dies selbst zu tun, als zu versuchen, den MS-Code anzupassen. Diese Windows-Anwendung ruft dann die richtigen MSI-Dateien auf, die der Benutzer benötigt.

Team Foundation Build läuft jeden Abend, um die Lösung neu zu erstellen und alles in ein "Release CD" Verzeichnis zu kopieren, auf das jeder zugreifen und mit der neuesten "Version" testen kann. Um ehrlich zu sein, TFS Build ist ein wenig über Bord für ein kleines Team wie unseres, und ich benutze es nur, weil es das ist, was ich gewohnt bin.

In einer früheren Firma haben wir diese http://www.finalbuilder.com/ verwendet und ich kann es für die Benutzerfreundlichkeit und für die Menge der unterstützten Software empfehlen.

1

1) Erstellen Projekt mit MSBUILD

2) FTP-Dateien in Produktionsumgebung

3) Kopieren/Einfügen manuell auf jeden Webserver

+0

Das Problem dabei ist, dass wir keinen Zugriff auf die dritte Umgebung haben. Daher müssen wir so viel wie möglich automatisieren. Aus Sicht des Corporate Brandings ist dies auch nicht besonders stark. Allerdings haben wir in den letzten Jahren so etwas gemacht. – Hooloovoo

0

Für Intranet-Sites verwenden wir CruiseControl in Verbindung mit SVN die Website automatisch neu erstellen zu lassen.

Theoretisch könnten Sie dieses Modell über ein VPN erweitern, wenn Sie ein Laufwerk remote dem Intranet eines Clients zuordnen könnten. Oder eine schnellere und schmutzigere Lösung könnte sein, ein Tool wie SyncBack zu verwenden, um den Remote-Ordner zu synchronisieren, der die kompilierten DLLs für die Site enthält.

3

Wir haben dedizierte DEV-, TEST-, STAGE- und PRODUCTION-Server.

Wir haben auch eine dedizierte Build-Maschine, die Cruise Control läuft.

Cruise Control ist für einen Continuous Integration-Build konfiguriert, der nach dem Einchecken des Codes ausgeführt wird. Er ist außerdem für separate Entwicklungs-, QA-, Stage- und Produktionsaufgaben konfiguriert.

Zur Implementierung wird der Code zuerst aus SVN abgerufen und erstellt, dann wird der Ordner "Precompiled Web" auf die Entwicklungswebsite kopiert und das Webdienstprojekt wird auf den Entwicklungsanwendungsserver kopiert. Cruise Control ist außerdem so konfiguriert, dass der Quellcode vor dem Start des Builds "markiert" wird, sodass wir den Build zu einem späteren Zeitpunkt reproduzieren oder vom Tag abzweigen können, wenn ein Hotfix durchgeführt werden muss.

Für die Bereitstellung in QA werden die Dateien von den Entwicklungsmaschinen auf die QA-Maschinen kopiert.

Ebenso werden die Dateien zur Bereitstellung auf Stage von den QA-Maschinen auf die Stage-Computer kopiert.

Schließlich werden die Dateien zur Bereitstellung in der Produktion erneut von den Stage-Maschinen auf die Production-Maschinen kopiert. „Custom = Off | Remoteonly“ und andere umgebungsspezifischen Einstellungen |, „false debug = true“

jede Umgebung zu konfigurieren, haben wir ein eigenes Werkzeug, das die Verbindung Teil jeder Umgebung des Cruise Control Aufgabe ist Strings modifiziert .

So kann jede Umgebung mit einem Tastendruck vom Cruise Control-Dashboard bereitgestellt werden.

Ein Nachteil ist, dass wir derzeit die Produktionsdatenbank Passwort in der Cruise Control-Konfigurationsdatei konfiguriert haben ... es wäre schön, verschieben Sie es woanders!

Schließlich, lassen Sie mich hinzufügen, dass, obwohl unsere Produktionsmaschinen in einem dedizierten Hosting-Anlage sind, die Server von unserer Cruise Control-Maschine zugänglich sind, die es sehr einfach macht, eine Produktionsbereitstellung zu machen. Der einzige manuelle Schritt besteht darin, die web.config-Dateien zu verschlüsseln und die von Cruise Control erstellte Datei "AppOffline.html" zu entfernen.

Lassen Sie mich wissen, ob dies hilft, oder wenn Sie Fragen haben.

Danke!

+0

Wie greifen Sie von den Produktionsmaschinen in der Hosting-Einrichtung auf die CC-Maschine zu? (UNC, FTP usw.)? – RyanW

+0

Irgendwie waren die Produktionsmaschinen im lokalen Netzwerk verfügbar, allerdings nur von bestimmten Maschinen (die Cruise Control Maschine ist eine davon). Ich bin nicht mehr bei dieser Firma, deshalb habe ich keinen direkten Zugriff mehr auf den Systemadministrator. Die Bereitstellung hat also so funktioniert, als würde sie nur Dateien auf einen anderen Computer im Netzwerk kopieren. Ich glaube, dass UNC-Wege benutzt wurden. –

Verwandte Themen