Question

J'utilise Django comme infrastructure Web, puis Apache et Lighttpd comme serveur Web et serveur de médias statiques, respectivement. Lighty sert bien tout mon contenu statique, mais je dois le configurer pour servir les nouveaux fichiers téléchargés par l'utilisateur. Lighttpd est exécuté sur une machine différente de celle d’Apache (Django). Mon code Django de création d'un répertoire, puis de création d'un fichier image, est exécuté sur ma machine Apache, ce qui le sauvegarde actuellement sur la même machine. Je souhaite que cette création de répertoire et de fichier se produise sur mon serveur multimédia statique, qui devrait ensuite être servi par le serveur multimédia lui-même. J'utilise respectivement les fonctions os.mkdir et urllib.urlretrieve pour créer un répertoire et enregistrer des fichiers sur la machine Django (Apache). Est-ce que je peux quand même faire quelques ajustements de configuration pour que ces choses fonctionnent ou j'ai besoin d'écrire des scripts sur le serveur multimédia et d'appeler em depuis une machine Django?

Était-ce utile?

La solution

La réponse la plus simple est que l'utilisateur télécharge dans un répertoire partagé auquel les deux serveurs Web peuvent accéder. Ensuite, il est disponible instantanément. Si vous utilisez unix (ça sonne comme ça), alors NFS est une solution possible. Si vous pensez que votre site évoluera sur plusieurs serveurs à la manière du flickr, vous pouvez également utiliser rsync pour transférer sur plusieurs serveurs de périphérie et éventuellement même mettre en place un schéma de partage.

Fais juste attention. En fonction de votre application, vous devez prendre en compte de nombreux problèmes de sécurité.

Si tous les fichiers sont placés dans un répertoire accessible au public, les utilisateurs peuvent deviner le nom des fichiers d’autres personnes et les télécharger. Dans ce cas, vous voudrez les servir à partir de Django avec une mince couche de sécurité.

Ne faites jamais confiance à vos utilisateurs! Vérifiez que ce qu'ils téléchargent se trouve dans un certain ensemble autorisé. Vous ne devez en aucun cas leur permettre de télécharger ce qu'ils veulent. À moins bien sûr que vos utilisateurs soient des personnes de confiance. Même alors, vous devriez faire des vérifications. Ils ne devraient probablement pas télécharger de fichiers .php pour un seul. La dernière chose que vous voulez leur donner est la possibilité d'exécuter des scripts arbitraires sur votre serveur. Configurez au moins le répertoire pour simplement servir des fichiers et ne rien exécuter.

Bonne chance

Autres conseils

C’est le genre de choses pour lesquelles j’utilise rsync. Faites ce que vous voulez sur le serveur principal puis rsynchronisé périodiquement (ou à la demande) sur le serveur statique. Rsync est plus rapide (et plus riche en fonctionnalités) que tout ce que vous pouvez produire avec un piratage rapide.

Juste parce que je suis paranoïaque, je rsyncule toutes les heures tous les sites de mes clients sur 2 serveurs de sauvegarde, dont l'un se trouve dans mon garage. Je viens de chronométrer un & Quot; rsync -a & Quot; contre un site client de 1,7 Go (qui n’a apporté aucune modification) et il a fallu 9,92 secondes à l’horloge murale, y compris les 3 négociations de réseau pour la synchronisation de 3 répertoires différents. Si quelque chose avait changé, presto-bango, c'est fait, avec les horodatages, le propriétaire / groupe, etc.

C'est incroyable comme blas & # 233; vous pouvez parler de panne de serveur lorsque vous obtenez un véritable système de sauvegarde multi-machine, sans implication humaine. Je dors vraiment bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top