Jak działa produkcyjna witryna IIS?

15

Nie jestem pewien, czy jest to pytanie o przepełnienie stosu, czy o awarię serwera. Jeśli mam witrynę .NET, którą chcę wdrożyć w środowisku produkcyjnym, jaki jest najlepszy sposób. Czy powinienem spakować go jako plik MSI i zainstalować? Użyj nant, aby przesunąć potrzebne pliki w górę. Po prostu przesłać pliki za pomocą FTP za pomocą Beyond Compare?

Jak wdrażasz kod produkcyjny? Jest to przypadek specyficzny dla systemu Windows, na który patrzę tutaj.

Glenn Slaven
źródło

Odpowiedzi:

15

IIS obsługuje wdrażanie xcopy, więc kopiowanie plików powinno być wszystkim, czego potrzebujesz, chyba że masz specjalne wymagania.

Jednym ze sposobów na to jest prosty skrypt, który używa ROBOCOPY do kopiowania nowych plików na serwer.

Jeśli witryna jest duża, a to trwa zbyt długo, użyj systemu kontroli wersji. W tym celu lubię Mercurial , choć musisz uważać, aby pliki konfiguracyjne systemu kontroli wersji nie były udostępniane publicznie. Wdrożenie polega zatem na zatwierdzeniu zmian, a następnie sprawdzeniu najnowszej wersji na serwerze. Oprócz tego, że jest wydajny, umożliwia szybkie wycofywanie (jeśli oznaczyłeś ostatnią dobrą wersję) na wypadek, gdyby Twój najnowszy i największy miał błąd showstopper.

Aby zminimalizować przestoje, skrypt może skopiować pliki do nowego katalogu, a następnie szybko zmienić nazwy katalogów lub zmienić miejsce, w którym IIS wskazuje nowy katalog.

Joel Spolsky
źródło
1
System kontroli wersji jest atrakcyjny, ale w przypadku stron internetowych wymagających kompilacji może nie działać zbyt dobrze. Chyba że skompilowana wersja jest oczywiście pod kontrolą wersji.
Jonathon Watney
1
Nigdy nie myślałem o wprowadzeniu systemu kontroli źródła do produkcji. Ciekawe, że pewne rzeczy muszą mieć mnóstwo dodatkowych plików zip.
JoshBerke
Robię to cały czas z Subversion. Na Apache użyjesz mod_rewrite, aby upewnić się, że użytkownicy nie będą mieli dostępu do katalogów .svn. Korzystanie z kontroli wersji do wdrażania jest zdecydowanie najlepszym rozwiązaniem.
Łukasz
13

Rozważ skorzystanie z narzędzia Web Deployment Tool firmy Microsoft. Został on specjalnie zaprojektowany, aby pomóc we wdrażaniu aplikacji internetowych i aktualizacji tych aplikacji internetowych na produkcyjnych serwerach IIS 6 i 7, i wykonuje lepszą robotę niż MSI (Windows Installer), IMHO.

Zwykle używasz go, zakładając gdzieś witrynę „złotego mistrza”, a następnie każąc narzędziu spakować zmiany. Następnie spojrzy na serwer docelowy do wdrożenia i wprowadzi wszelkie niezbędne zmiany, aby wyglądał jak złoty wzorzec (co jest przydatne przy kolejnych aktualizacjach). Jest to szczególnie przydatne, jeśli wdrażasz na więcej niż jednym serwerze WWW (np. Farmie) i obsługuje wdrażanie więcej niż tylko plików (może również obsługiwać wprowadzanie zmian w rejestrze, wdrażanie certyfikatów, baz danych SQL itp.).

Erv Walter
źródło
+ nieskończoność. To narzędzie ratuje życie i uwalnia całe działy (a la tsilb) do pracy nad ciekawszymi problemami.
Portman
4

Chciałbym dodatkowo odpowiedzieć na pytanie Joela, sugerując, aby serwer Continuous Integration odebrał twoje zmiany z systemu kontroli źródła. Następnie zbuduje projekt. Następnie skopiuj wyniki kompilacji do nowego folderu. Następnie możesz dokonać szybkich zmian konfiguracji (web.config i app.config). Voila, gotowy na Xcopy!

Sprawdź CruiseControl.NET

p.campbell
źródło
3

To, co zrobiłem u mojego poprzedniego pracodawcy, który był w zasadzie witryną aukcyjną / e-commerce, w której nie mogliśmy pozwolić na wiele przestojów:

  • Weź skompresowaną wersję kompilacji wydania / wersji do wdrożenia na serwerze kompilacji
  • Przetestuj go na serwerze pomostowym, który ma kopię produkcyjnej bazy danych i ma tę samą wersję oprogramowania, co oprogramowanie produkcyjne. Sprawdź, czy wszystko poszło gładko. Jeśli nie, ponownie uruchom wdrażanie serwera pomostowego (ale najpierw przywróć kopię zapasową).
  • Jeśli wszystko poszło dobrze: skopiuj skrypty kompilacji i aktualizacji bazy danych na serwer produkcyjny do folderu lokalnego. Wykonaj określoną kopię zapasową bazy danych i plików ASP.NET (na wypadek, gdyby coś nadal nie działało). Przygotuj wszystko, tak że muszę tylko kliknąć Enter, aby uruchomić skrypt aktualizacji i kopiowanie plików bazy danych (zwróć uwagę, że mógłbym utworzyć skrypt do tego). Następnie uruchom wszystko. Zwykle jest to kwestia sekund, a użytkownicy nie zauważą wiele o przestojach.

Jako twórca stron internetowych jest wiele zabawniejszych rzeczy. Ale to była najważniejsza część mojej pracy.

Michael
źródło
1

o Jezu, w pracy mamy do tego cały zespół. Mają wewnętrzne narzędzie, które usuwa serwer z klastra / farmy, publikuje pliki, uruchamia jednostki NUnits i dodaje je z powrotem do klastra / farmy. Robią to dla każdego z 16 serwerów. To zajmuje godziny. Reszta z nas nawet nie „rozgląda się po dostępie”.

W przypadku moich osobistych projektów publikuję z VS2005 bezpośrednio na moim serwerze internetowym. Rodzaj ma mniej surowe bezpieczeństwo.

tsilb
źródło