Django-fr

Forum

#1 20-08-2012 12:42:55

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Django Upload impossible

Bonjour,

J'ai des soucis pour faire un upload d'image dans le sous répertoire images qui est dans le répertoire site_media qui est pourtant public.

Voici mes settings et mon code:

settings.py

MEDIA_ROOT = '/home/mon_compte/mmb/public/site_media/'
MEDIA_URL = '/site_media/'

models.py

class Membre(models.Model):
              ImagePortrait = models.FileField(upload_to = "images/", blank = True, null=True)
              ImageLarge = models.IntegerField(blank = True, null=True)
              ImageHaut = models.IntegerField(blank = True, null=True)

              def save(self, *args, **kwargs):
                 super(Membre, self).save(*args, **kwargs)
                 im = PImage.open(os.path.join(MEDIA_ROOT, self.ImagePortrait.name))
                 self.ImageLarge, self.ImageHaut = im.size

admin.py

class MembreAdmin(admin.OSMGeoAdmin):
    ...##
    def save_model(self, request, obj, form, change):
        obj.user = request.user
        obj.save()

Lorsque j'upload une image légère, j'ai une erreur de droits d'accès :

Exception Type:     OSError
Exception Value:     [Errno 13] Permission denied: '/home/mon_compte'

Je pense que cette une histoire de droits mais je préfère avoir votre avis pour ne pas créer des problèmes de sécurité. là il faut avouer que je suis au bout de mes compétences, avez-vous une idée d'où cela peut bien venir ?

Merci

Hors ligne

#2 20-08-2012 13:17:55

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Django Upload impossible

Le 20 août 2012 à 13:42, polo <carrotpaul _AT_ yahoo.fr> a écrit :

> Bonjour,

Bonjour

> Exception Type:     OSError
> Exception Value:     [Errno 13] Permission denied: '/home/mon_compte'

Je suppose que c'est un problème que tu rencontres en production et non en développement ?
Si c'est la cas, il faudrait que l'on sache de quel façon tu fais tourner Django.

En faisant des suppositions et vu ton message, tu le fais tourner dans un apache et/ou nginx. Le souci dans ce cas est qu'apache tourne avec un utilisateur différent de "mon_compte". Il te faudra donc ouvrir ton répertoire media (et l'ensemble de l'arborescence à partir de là) à la création de fichier venant de tiers.

Cordialement,
Xavier Ordoquy,
Linovia.

Hors ligne

#3 20-08-2012 14:37:54

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django Upload impossible

Merci pour cette réponse,

effectivement je suis en production, je suis chez un hébergeur qui tourne sous apache je crois. Mon hébergeur est alwaysdata. Déjà que je débute sous Django, j'avoue que je suis un peu perdu par rapport à tout ce qui est configuration serveur...

Par contre, j'ai accès a un fichier apache.conf qui doit permettre de modifier la configuration d'apache.

Avez-vous une procédure permettant de modifier cette configuration et qui me permettrait d'uploader des images ?

Merci

Hors ligne

#4 20-08-2012 14:54:56

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Django Upload impossible

Salut,

Pour la mise en production chez Alwaysdata, je te recommande d'utiliser
le mode WSGI

Tu créé le fichier ~/ton_projet_django/public/django.wsgi

    # -*- coding: utf-8 -*-
    import os, sys

    activate_this = os.path.join(os.path.dirname(__file__),
    '../apps/bin/activate_this.py')
    execfile(activate_this, dict(__file__=activate_this))

    _PROJECT_DIR =
    os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0, _PROJECT_DIR)
    sys.path.insert(0, os.path.dirname(_PROJECT_DIR))

    _PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
    os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME

    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()

Sinon n'hésite pas à faire un ticket, les administrateurs sont très
réactifs et tu auras une réponse très rapidement.

++

Rémy

Le 20/08/2012 15:37, polo a écrit :
> Merci pour cette réponse,
>
> effectivement je suis en production, je suis chez un hébergeur qui tourne
> sous apache je crois. Mon hébergeur est alwaysdata. Déjà que je débute
> sous Django, j'avoue que je suis un peu perdu par rapport à tout ce qui
> est configuration serveur...
>
> Par contre, j'ai accès a un fichier apache.conf qui doit permettre de
> modifier la configuration d'apache.
>
> Avez-vous une procédure permettant de modifier cette configuration et qui
> me permettrait d'uploader des images ?
>
> Merci
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#5 20-08-2012 14:56:57

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : Django Upload impossible

Salut,

Ton problème est un problème de permission d'écriture sur le chemin que tu a
renseigné pour tes médias dans MEDIA_ROOT.

> MEDIA_ROOT = '/home/mon_compte/mmb/public/site_media/'

D'ailleurs le message est vraiment explicite :

> Exception Type:     OSError
> Exception Value:     [Errno 13] Permission denied: '/home/mon_compte'

Ton instance de Django n'a pas la permission d'écrire dans "/home/mon_compte".

"/home/mon_compte" c'est un assez étrange, je suppose que tu a modifié les
chemins pour cacher ton nom d'utilisateur sur la ML, parce que si ce n'est pas
le cas je doute que tu ai un compte utilisateur nommé "mon_compte"

D'ailleurs si on regarde ton MEDIA_ROOT, on dirait que ton home utilisateur
sur le serveur serait plutot /home/mmb/public/site_media/ si c'est bien le cas
tu a juste a modifier ton MEDIA_ROOT, reloader ton Apache et ça devrait être
ok.

Si ce n'est toujours pas bon, vérifie les permissions Chmod sur ce fameux
chemin  '/home/mon_compte'.

C'est un hébergement mutualisé que tu a chez alwaysdata ?

Hors ligne

#6 22-08-2012 14:57:36

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django Upload impossible

Effectivement David, l'erreur venait de l'orthographe du nom de compte ...J'ai plusieurs comptes du coup en faisant la bascule de mon projet, tout n'était pas paramétré comme il le fallait.

Merci de votre patience,

Comme quoi, l'adage qui dit que "99% des bugs informatiques se passent entre l'écran et le dossier de la chaise" se vérifie tout les jours.

Dernière question à Rémy HUBSCHER, est-ce que le passage de fcgi à wsgi permet un réel gain de performance ?

Bonne fin de journée et encore merci pour votre réactivité

Hors ligne

Pied de page des forums