geschke.net · kuerbis.org · geschke.name · LEITWEGANZEIGER · php::bar


 

Infrastruktur Update - Server, Django, FastCGI, Nginx

am 15.03.2009 23:49:27 Uhr von Ralf Geschke, Tags: Django FastCGI Nginx Python Server

Nicht nur die Code-Basis von kuerbis.org hat einige Updates erhalten, sondern auch die zugrunde liegende Infrastruktur.

OpenVZ

Da wäre zunächst der neue Server, dessen Speicherausbau die Nutzung der Virtualisierungslösung OpenVZ erlaubt. Da die Erfahrungen mit OpenVZ bislang sehr gut waren, insbesondere in Bezug auf Performance, habe ich mich dafür und somit gegen Xen oder ähnliches entschieden. Davon abgesehen ist die Einrichtung einfach und flexibel, insofern nach dem KISS Prinzip genau richtig.

Django und Nginx

Die Django-Anwendung läuft als FastCGI, Hinweise zur grundsätzlichen Einrichtung finden sich in der Dokumentation. Als Web-Server wird jedoch nicht Lighttpd, sondern Nginx verwendet. Nginx ("engine-x") ist ein hochperformanter, flexibler und ressourcenschonender Web-Server und Reverse-Proxy. Ursprünglich vom russischen Programmierer Igor Sysoev für eine Suchmaschine entwickelt, findet Nginx inzwischen Verbreitung bei einigen großen Web-Sites.

Basis von kuerbis.org ist ein Ubuntu Server 8.04 Linux System. Obwohl bereits neuere Versionen von Nginx vorliegen, wurde das von Ubuntu bereit gestellte Paket verwendet. Die Installation mittels sudo apt-get install nginx ist in wenigen Sekunden erledigt. Django wurde dagegen direkt aus dem Versionsverwaltungssystem bezogen. Die Verzeichnisstruktur im Einzelnen:

Die FastCGI-Prozesse werden mit dem Start-Stop-Skript /etc/init.d/kdosite verwaltet:

Das Skript hat zwar noch Schwächen, aber da ich Shellskripts bislang weitestgehend vermieden habe, bitte ich, darüber hinweg zu sehen. ;-)

Für Nginx ist bereits das Start-Stop-Skript /etc/init.d/nginx eingerichtet worden. Die Konfiguration besteht zunächst aus der Datei /etc/init.d/nginx.conf. Zur Einrichtung der verschiedenen Sites dienen die Unterverzeichnisse /etc/init.d/sites-available und /etc/init.d/sites-enabled/. Dabei nehmen die einzelnen Konfigurationsdateien in sites-available Platz. Anschließend wird auf jene Dateien ein symbolicher Link innerhalb sites-enabled gesetzt. Beim Start bindet Nginx alle in sites-enabled verfügbaren Konfigurationen ein. Dieser Mechanismus wird auch bei anderen Programmen verwendet, z.B. Apache.

Zunächst die hier verwendete /etc/nginx/nginx.conf:

Die darin enthaltenen Parameter wurden weitestgehend aus den verfügbaren Anleitungen übernommen.

Die Parameter für die Anbindung des Django FastCGI Daemons befinden sich in der Datei /etc/nginx/sites-available/kuerbis.org

Wie man erkennen kann, ist die Einrichtung übersichtlich und nahezu selbsterklärend. Requests auf /static/ und /media/ werden direkt von Nginx verarbeitet, darin befinden sich statische Dateien, etwa CSS-, JavaScript-Dateien oder Bilder. Alle anderen Requests werden an den FastCGI-Socket weiter geleitet. Einige vom Apache bekannten und in der Anwendung genutzten Variablen werden inklusive der korrespondierenden Inhalte ebenfalls übergeben.

Nginx bietet natürlich noch viel mehr, die Dokumentation im Community-Wiki wird stetig erweitert. Ein genauerer Blick auf diese russische Alternative zu Apache sowie Lighttpd lohnt sich bestimmt!

Zuletzt geändert am 15.03.2009 23:49:27 Uhr

Bookmark Infrastruktur Update - Server, Django, FastCGI, Nginx at del.icio.us   Diese Seite zu Mister Wong hinzufügen

Trackback-URIPermalink


Trackbacks

Keine Trackbacks vorhanden.

Kommentare

Keine Kommentare vorhanden.

Kommentar eingeben

Zur Vermeidung von SPAM durch automatisches Ausfällen geben Sie bitte das Ergebnis des folgenden Terms ein: drei * zehn - 13