2008-09-01 13 views
7

Ich kenne Capistrano, aber es ist ein bisschen zu schwer für mich. Persönlich habe ich zwei Mercurial Repositories eingerichtet, einen auf dem Produktionsserver und einen weiteren auf meiner lokalen Dev-Maschine. Wenn eine neue Funktion bereit ist, verschiebe ich regelmäßig Änderungen vom Repository auf meinem lokalen Rechner zum Repository auf dem Server und aktualisiere dann auf dem Server. Dies ist eine einfache und schnelle Möglichkeit, Dateien auf mehreren Computern synchron zu halten, hilft aber nicht beim Aktualisieren der Datenbank.Wie aktualisieren Sie Ihre Webanwendung auf dem Server?

Was ist Ihre Lösung für das Problem?

Antwort

1

Ich benutzte git push, um auf meinem Webserver zu veröffentlichen, aber in letzter Zeit habe ich gerade rsync verwendet. Ich versuche, meine Seite als agnostisch zu definieren, wo sie läuft (mit relativen Pfaden, etc.) und bis jetzt hat es ziemlich gut funktioniert. Die einzige Herausforderung besteht darin, Datenbanken synchron zu halten. Dafür verwende ich normalerweise die Produktionsdatenbank als Master und führe regelmäßig Backups und Importe in meine Testdatenbank durch.

+0

Ich mache das gleiche, aber in letzter Zeit habe ich gedacht, dass dies wirklich nicht atomar ist. Nicht optimal für eine Website, die ständig verwendet wird (die Benutzer könnten in einer defekten Phase darauf zugreifen, in der noch nicht alle Dateien rsynced wurden). – Gilles

+0

Ich füge hinzu, dass ein optimaler Weg es ist, rsync zu einem Ordner A, während Ordner B enthält Ihre Live-Website und dann die Form A zu B wechseln durch Überschreiben eines Symlinks, die auf die aktuelle Live-Version verweist. Und dann das nächste Mal, rsync zu B. – Gilles

0

@ Andrew

Um git push zu benutzen, um Ihre Website zu implementieren Sie zuerst die Einrichtung eines Remote-Server in Ihrem .git/config-Datei zu drücken, um zu tun, müssen. Dann müssen Sie einen Hook konfigurieren, der im Grunde eine Git-Zurücksetzung ausführt - hart, um den Code, den Sie gerade in das Repository kopiert haben, in das Arbeitsverzeichnis zu kopieren.

Ich weiß, das ist ein wenig vage, aber ich löschte tatsächlich den serverseitigen .git-Ordner, sobald ich zu rsync wechselte, also habe ich nicht die genauen Skripte, die ich verwendet habe, um die Magie passieren zu lassen. Das könnte ein guter Kandidat für eine vollständige Frage sein, damit Sie auf diese Weise mehr Antworten erhalten.

edit: Ich weiß, dass es eine Weile gewesen, aber ich fand schließlich, was ich wieder wurde mit:

Deploy a project using Git push

1

Oder Fabric, wenn Sie Python bevorzugen.

+0

Mehr Details auf Stoff: http://StackOverflow.com/Questions/1233655/what-is-the-simplet-way-to-ssh-using-python – hughdbrown

1

Was ist Schwergewicht über Capistrano? Wenn Sie Dateien synchronisieren möchten, dann ist sicher rsync großartig. aber wenn du dann db-updates machen musst, ist cap vielleicht nicht so schlecht?