Frage

Ich verwende Django als Web-Framework und dann Apache und Lighttpd als Web-Server und statische Medienserver sind. Lighty dient allen meinen statischen Inhalt schön und gut, aber ich brauche, um es zu konfigurieren, die neuen Dateien, die vom Benutzer hochgeladen zu dienen. Lighttpd ist aus der Apache (Django) eine auf einem anderen Rechner läuft. Mein django Code ein Verzeichnis zu erstellen und dann eine Bilddatei erstellen auf meiner Apache-Maschine ausgeführt wird, so dass es zur Zeit in der gleichen Maschine selbst gerettet zu werden. Ich möchte dieses Verzeichnis und Dateierstellung auf meinem statischen Medienserver passieren, die dann von dem Medienserver selbst bedient werden sollen. Ich verwende os.mkdir und urllib.urlretrieve Funktionen bzw. Verzeichnis zu erstellen und Dateien auf der Django (Apache) Maschine zu speichern. Gibt es trotzdem, dass ich eine Konfiguration Zwicken tun kann, diese Dinge zu bekommen arbeiten oder ich brauche Skripte auf dem Medienserver zu schreiben und em von Django Maschine nennen ??

War es hilfreich?

Lösung

Die einfachste Antwort ist, dass die Börse zu einem freigegebenen Verzeichnis, das die beide Web-Server zugreifen kann. Dann ist es sofort zur Verfügung. Wenn Sie mit Unix (klingt wie es), dann ist NFS eine mögliche Lösung. Wenn Sie denken, Ihre Website auf mehrere Server a la flickr skaliert dann rsync auf mehrere Edge-Servern drücken und möglicherweise sogar eine sharding Schema implementiert ist eine andere Lösung.

Nur vorsichtig sein. Es gibt eine Menge von Sicherheitsbedenken, die je nach Anwendung, die Sie berücksichtigen müssen.

Wenn alle Dateien in einem öffentlich zugänglichen Verzeichnis gehen könnte es möglich sein, für Benutzer, die Namen anderer Völker Dateien zu erraten, und sie herunterladen. In diesem Fall möchten Sie mit einer dünnen Schicht von Sicherheit auf sie von Django dienen.

Vertrauen Sie nie Ihre Benutzer! Stellen Sie sicher, dass das, was sie laden in einer bestimmten zulässigen Menge. Unter keinen Umständen sollten Sie ihnen erlauben, zu laden, was sie wollen. Es sei denn natürlich Ihre Benutzer sind ein vertrauenswürdiger wenige. Selbst dann sollten Sie einige Prüfungen tun. Sie sollten wahrscheinlich nicht das Hochladen von Dateien .php für einen. Das letzte, was Sie wollen, dass sie geben, ist die Fähigkeit, beliebige Skripte auf dem Server ausgeführt werden. Zumindest das Verzeichnis so konfiguriert, dass nur Dateien dienen und nicht irgendetwas auszuführen.

Viel Glück

Andere Tipps

Dies ist die Art von Sachen, die ich für rsync verwenden. Tun Sie, was Sie auf dem Hauptserver gefällt und dann in regelmäßigen Abständen (oder auf Anfrage) rsync Push auf den statischen Server. Rsync ist schneller (und mehr featureful) als alles, was man mit einem schnellen Hack produzieren kann.

Nur weil ich paranoid bin ich stündlich rsync allen meinen Kunden-Sites 2 Backup-Servern, von denen in meiner Garage ist. Ich timed gerade ein „rsync -a“ gegen einen 1.7GB Kundenstandort (die keine Änderungen haben) und es dauerte 9,92 Sekunden Wanduhr-Zeit, darunter das 3-Netzwerk-Handshakes für rsyncing 3 verschiedene Verzeichnisse. Hatte sich etwas geändert, presto-bango, es fertig, komplett mit Zeitstempel, Besitzer / Gruppe, etc.

Es ist erstaunlich, wie blasé Sie Serverausfall werden können, wenn Sie wahr, Multi-Maschine bekommen, No-Menschen-beteiligt Backup arbeiten. Ich schlafe wirklich gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top