Wie geht man in den Wartungsmodus, um eine Produktionsanwendung in Symfony 2 sicher zu aktualisieren?

8

Ich muss die Quelldateien auf meinem Produktionsserver aktualisieren (aus dem Repository abrufen und aktualisieren), Migrationen ausführen und zwischengespeicherte Ressourcen neu generieren.

Gibt es einen Mechanismus in Symfony 2, um dies sicher zu tun? Wie stelle ich die Seite in den "Wartungsmodus" (der eine 503 werfen sollte) oder etwas?

    
HappyDeveloper 10.11.2011, 20:04
quelle

5 Antworten

5

Ich habe gerade ein Bundle für Symfony 2 gefunden, das Ihnen zwei zusätzliche Befehle in der Konsole bietet, um Ihre Anwendung in den Wartungsmodus zu versetzen. Hier gehts: Ссылка

    
Davincho 29.02.2012 19:04
quelle
3

Ich habe versucht zu entscheiden, wie ich das umsetzen würde. Auf der einen Seite bietet Symfony2 ein anständiges Prod-Caching. Wenn Sie also Ihr Datenbankschema nicht destruktiv ändern (Entfernen von Spalten oder Tabellen usw.), können Sie das Schema wahrscheinlich einfach ändern, indem Sie es aus Ihrem Repo bereitstellen und Ihren Prod aufheben Zwischenspeicher. So behandele ich die meiste Zeit.

Wenn Sie andererseits in den Wartungsmodus wechseln möchten, benötigen Sie eine Lösung, die das Framework nur minimal belastet (dh Sie möchten den Kernel wahrscheinlich nicht starten) oder Sie Den Zweck trotzdem zu vereiteln: die Last vom Rahmen zu nehmen, während du mit den Dingen mistest.

Wenn ich es wäre, würde ich wahrscheinlich ein einfaches Wartungsskript schreiben, das nur einen 503-Header setzt, vielleicht einen statischen HTML-Code (vorgeneriert aus meinen Site-Vorlagen) bereitstellt und ihn zurück an den Benutzer sendet, dann eine bedingte Logik verwenden in meinem app.php zu verwenden, wenn ich im Wartungsmodus sein sollte. Es ist hässlich, aber es funktioniert.

    
Problematic 10.11.2011 20:32
quelle
1

Ich bin mir nicht sicher, wie ich das für eine größere Website machen könnte, wo ein Benutzer mitten in einer Art von Transaktion sein könnte (Einkaufen zum Beispiel), aber für eine kleinere Seite könnten Sie nicht einfach eine .htaccess Datei verwenden Das Webverzeichnis unter der Annahme, dass dies Ihre Wurzel ist), um auf eine Wartungsseite anstatt in app.php umzuleiten.

    
Kasheen 13.11.2011 22:29
quelle
1

Ich kann die Verwendung von Deployer ( Ссылка ) empfehlen, um Ihre Symfony2-Anwendung bereitzustellen. Auf diese Weise brauchen Sie keine Wartungsseite. Das Tool wird mit einer symfony2- und symfony3-Vorlage ausgeliefert. Es generiert Ihre Assets, wärmt den Cache auf und verfolgt Ihre Release-Verzeichnisse. Es ist auch einfach, zu einer früheren Version zurückzukehren. Es gibt einen "aktuellen" -Symlink, der immer auf Ihr aktuelles Release-Verzeichnis verweist. Wenn eine Release-Bereitstellung abgeschlossen ist, wird dieser Link im neu erstellten Release-Verzeichnis aktualisiert.

Bezüglich Doktrin-Migrationen müssen Sie eine benutzerdefinierte Aufgabe dafür schreiben.

    
Atan 10.03.2016 11:59
quelle
0

Bitte sehen Sie sich Capifony Ссылка

an

Es hat ausgezeichnete Unterstützung für Symfony2.

    
Pablo 10.11.2011 20:48
quelle