Können Sie Möglichkeiten zum Verwalten der Codebereitstellung auf einem Linux-basierten Webserver empfehlen? [geschlossen]

7

Ich habe immer ein sehr einfaches Bash-Skript verwendet, um Code bereitzustellen. Ich gehe von der Verwendung von Subversion zu Mercurial über, aber ich denke nicht, dass die Revisionskontrollsoftware für die Bereitstellung von Bedeutung ist.

Was sind einige bessere Möglichkeiten, dies zu tun?

#!/bin/sh
date=`date +%Y%m%d_%H%M%S`
tar -zcvf app-dir-$date.tar.gz app/dir 
tar -zcvf app-templates-$date.tar.gz app/templates
tar -zcvf app-media-$date.tar.gz app/media
svn export http://example.com/somepath/trunk hh/ --force
citadelgrad
quelle

Antworten:

5

Ich verwende Mercurial, um alles zu verwalten , einschließlich meiner statischen HTML-Seiten. Es macht mir das Leben wirklich sehr, sehr einfach.

Zu den Vorteilen gehören

  • Alle Vorteile der Versionskontrolle (Rollbacks, Meilenstein-Tags usw.)
  • In der Lage sein, Ihre Site in Eile zu klonen
  • Sie haben immer eine funktionierende lokale Sicherung / Kopie
  • Einfach zu synchronisieren, wenn Sie dazu neigen, Änderungen vor Ort vorzunehmen (an Ort und Stelle auf dem Server).
  • Die meisten gemeinsam genutzten Hosts (wenn Sie es mit einem zu tun haben) haben nichts dagegen, ihn zu installieren

Haftungsausschluss, ich habe das Tutorial geschrieben. Ja, die Art von VCS, die Sie verwenden, spielt bis zu einem gewissen Grad eine Rolle. Zum Beispiel würde ich in diesem Szenario nichts verwenden, wo ich nicht lokal festschreiben und einen großen Push / Update durchführen könnte. Das zwingt mich einfach dazu, zu viele potenziell problematische Änderungen in einer Verpflichtung zusammenzufassen.

Ich könnte es mit Subversion machen, und ich klopfe überhaupt nicht an SVN. Ich denke nur, dass Mercurial ein weitaus besseres Werkzeug für das Problem ist, das Sie lösen möchten.

Ich bin der Meinung, dass Sie Ihre Werkzeuge nicht „umgehen“ müssen, es sei denn, Sie haben keine andere Wahl. Wenn Sie dies tun, wird der Zweck, sie zu haben, zunichte gemacht, und Sie haben die Wahl :)

Tim Post
quelle
Überprüfen Sie auch webmasters.stackexchange.com/questions/262/…, wenn Sie sich für die Bereitstellung von mercurial entscheiden.
Evan Plaice
1
Fast vergessen ... +1 Mercurial für inkrementelle Bereitstellungen ist definitiv der richtige Weg.
Evan Plaice
Das ist eine großartige Idee, keine Ahnung, warum ich sie noch nie in Betracht gezogen habe.
DisgruntledGoat
1

Zusätzlich zu den hervorragenden Vorschlägen in den anderen Antworten möchten Sie möglicherweise prüfen, ob es für Sie wichtig ist, ein atomares Update durchzuführen.

Auf meinem FreeBSD-Server erreiche ich dies durch zwei Mechanismen:

  • Versionierung aller meiner statischen Ressourcen. (ZB http://static.example.com/images/logo.1.pngoder http://static.example.com/style/main.3.css). Auf diese Weise kann ich svn updatedirekt vor dem Aktualisieren der dynamischen Site zur statischen Site wechseln, ohne mir Sorgen machen zu müssen, dass Benutzer neue Dateien auf alten Seiten sehen.

  • Versionierung der gesamten dynamischen Website. In meinem Fall zeigt mein Dokumentenstamm auf einen symbolischen Link. Meine Strategie ist es, die neue Version der Produktion einzurichten und sie dann mit einem einzigen Befehl live zu übertragen. .G. etwas wie das:

    cp -Rp www.site1.com.1 www.site1.com.2 (oder svn checkout)

    svn update site1.com.2 (braucht vielleicht eine svn switcherste)

    ln -sf site1.com.2 www.site1.com (Änderungen in der Produktion atomar verschieben)

Dies stellt sicher, dass keiner meiner Benutzer eine halbgebackene Seite sieht. Sie sehen entweder die alte Version, wenn sie sich noch in ihrem Cache befindet, oder die neue.

Diese Strategie funktioniert nur, wenn Sie nicht vom Benutzer hochgeladene Inhalte mit Ihrer dynamischen Site mischen.

JasonBirch
quelle
0

Wir verwenden die scp-Aufgabe von ant mit dem modifizierten Selektor . Das heißt, Sie aktualisieren nur die Dateien, die sich seit dem vorherigen Upload geändert haben. Leider scheint der modifizierte Selektor nur für den persönlichen Gebrauch gedacht zu sein und nicht für Teammitglieder. Die cache.propertiesDatei enthält Pfadnamen zum Arbeitsverzeichnis des Benutzers. Wir haben eine Reihe von Ameisenzielen geschrieben, um die cache.propertiesDatei in ein Format zu massieren, das von Entwicklern gemeinsam genutzt und dann wieder in das Format massiert werden kann, das Ameisen benötigen. Das Format variiert auch zwischen einer Windows-Umgebung und einer GNU / Linux-Umgebung.

Don Kirkby
quelle
0

Ist es nicht der springende Punkt bei der Verwendung der Versionskontrolle, dass Sie sich nicht mit dem Sichern der Site befassen müssen, bevor Sie ein Update veröffentlichen?

Wenn es richtig gemacht wurde, sollte ein svn update(oder ein gleichwertiges) ausreichen, und wenn es ein Fehler ist, dann rollen Sie es auf ein vorheriges Commit zurück? Das machen wir sowieso. Übernehmen Sie alle Änderungen, svn updateden Staging-Server. Wenn alles in Ordnung ist, dann svn updateden Live-Server.

Mark Henderson
quelle