Wie setzen erfahrene Webentwickler Django in Produktion auf EC2 um?

8

Ich habe nie wirklich für ein Unternehmen gearbeitet, das eine Django-App (mit einer großen Benutzerbasis) einsetzt, und ich bin neugierig, was der beste Weg dafür ist.

Im Moment hosste ich eine Django App auf EC2. Der Code für die App befindet sich in meinem GitHub-Account. Ich habe nginx statischen Inhalt und dahinter einen einzigen Apache-Server mit django + mod_wsgi.

Ich versuche herauszufinden, was die beste Praxis für "kontinuierliche Bereitstellung" ist. Jetzt, nachdem ich zusätzliche Funktionalität hinzugefügt habe, mache ich folgendes auf EC2:

1) git reset HEAD --hart

2) Git ziehen

3) starte Apache neu

4) starte nginx neu

Ich habe benutzerdefinierte Logik in meiner settings.py-Datei, so dass, wenn ich auf EC2 läuft, debuggen auf False gesetzt wird und meine Datenbanken von sqlite3 (Entwicklung) zu mysql (Produktion) wechseln.

Das scheint jetzt für mich zu funktionieren, aber ich frage mich, was mit diesem Prozess nicht stimmt und wie ich es verbessern könnte.

Danke

    
josephmisiti 14.04.2011, 18:45
quelle

4 Antworten

6

Ich habe mit Systemen gearbeitet, die Fabric für die Bereitstellung auf mehreren Servern verwenden

>     
John Giotta 14.04.2011, 18:54
quelle
2

Ich bin der ehemalige Hauptentwickler bei The Texas Tribune , was 100% Django ist. Wir haben EC2 mithilfe von RightScale bereitgestellt. Ich habe die Deployment-Skripte nicht selbst geschrieben, aber es hat uns ermöglicht, neue Instanzen sehr schnell in die Rotation zu integrieren und bei Bedarf zu skalieren. es ist nicht billig, aber meiner Meinung nach jeden Cent wert.

    
Brandon 14.04.2011 22:07
quelle
1

Ich stimme John zu und sage, dass Fabric das Tool ist, um diese Art zu tun der Sache bequem. Wahrscheinlich möchten Sie git nicht so konfigurieren, dass es automatisch mit einem Post-Commit-Hook bereitgestellt wird, aber Sie möchten vielleicht einen Fabric-Befehl konfigurieren, um Ihre Testsuite lokal auszuführen, und dann zur Produktion übergehen, wenn sie übergeben wird.

Viele Leute führen separate Dateien für die Entwickler- und Produktionseinstellungen aus, anstatt benutzerdefinierte Logik zu verwenden, um festzustellen, ob sie sich in einer Produktionsumgebung befindet. Sie können von einer vereinheitlichten Datei erben und dann die Bits überschreiben, die zwischen Entwickler und Produktion unterschiedlich sind. Dann starten Sie den Server mit der Produktionsdatei, anstatt sich auf eine einzige einheitliche settings.py zu verlassen.

Wenn Sie Apache nur zum Hosten der Anwendung verwenden, können Sie von einer leichteren Lösung profitieren. Wenn Sie fastcgi mit nginx verwenden, können Sie den Overhead von Apache vollständig beseitigen. Es gibt auch ein wsgi-Modul für nginx, aber ich weiß nicht, ob es zu diesem Zeitpunkt produktionsbereit ist.

    
Paul McMillan 14.04.2011 22:24
quelle
1

Es gibt noch einen guten Weg, dies zu bewältigen. Für ubuntu / debian amis ist es gut, Versionen zu managen und Deployments zu implementieren, indem Sie Ihre Anwendung in .deb

packen     
rootart 14.04.2011 22:45
quelle