IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

utiliser django avec cgi


Sujet :

Django Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut django avec cgi (changé pour mod_wsgi)
    Bonjour,

    Voulant tester la création de site avec python (en particulier django), j'ai pris un hébergement (gratuit) chez x10hosting qui supporte python.
    Seulement j'ai vite compris que pour faire tourner django il fallait un peu plus que de pouvoir exécuter des fichiers .py.
    D'où ma vrai question :
    je suis tombé la dessus dans la doc qui semble encourageant

    Seulement je comprend pas trop

    Ce qui me concerne si je comprend bien c'est le dernier point (Running Django on a shared-hosting provider with Apache)
    J'ai ajouté les lignes dans le .httaccess, créé le fichier mysite.fcgi (que je dois sans doute modifier mais avec quoi ?), rendu exécutable et puis ?...
    Et puis il y a des points qui sont pas clair :
    je dois uploader django quelque part je suppose. Où ?
    Et mon site django ? Je dois l'adapter ?

    Tout ça est un peu nouveau pour moi et je comprend pas encore bien tout les concepts

    merci

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    Salut,

    Il est recommandé d'utiliser plutot wsgi maintenant.

    http://code.google.com/p/modwsgi/wik...tionWithDjango

    Si tu veux un petit conseil, installe plutot sur une machine perso tout ton environnement, tu comprendras mieux la mécanique. Une fois que tu voudras déployer chez un hébergeur, tu te poseras plutot la question de ce qui manque plutot que "que dois-je bricoler".

    Sinon t'as un autre hébergeur gratuit pas mal qui supporte Django c'est http://www.alwaysdata.com/ Le forum est assez actif notamment par l'admin qui t'aidera sans problème a tout faire fonctionner.

    Bon courage, ça vaut le coup.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    salut

    bon j'ai un peu laissé tomber le fait de faire tourner avec uniquement cgi. Ca semblait trop compliqué et en plus parait que point de pue performance c'est horrible.

    J'ai donc, comme tu le conseilles, regardé du coté de mod_wsgi sur ma machine perso avec apache.

    Mais voila ça marche pas

    Quand je vais sur http://localhost/django, j'ai un message "accès interdit"
    avec comme log (/var/log/httpd/error.log)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Tue Jan 12 10:35:24 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /django denied
    [Tue Jan 12 10:35:24 2010] [error] [client 127.0.0.1] File does not exist: /srv/http/favicon.ico
    Je tourne sous Archlinux
    J'ai ajouté à mon /etc/rc.d/httpd.conf après la longe liste de "LoadModule"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    LoadModule wsgi_module modules/mod_wsgi.so
     
    <Directory /home/mart/programmation/python/django/wsgi-scripts>
        Order allow,deny
        Allow from all
    </Directory>
     
    <VirtualHost *:80>
    	ServerAdmin mart@mart.net
    	LogLevel warn
    	WSGIScriptAlias /django /home/mart/programmation/python/django/wsgi-scripts/django.wsgi
    	Alias /media /home/mart/programmation/python/django/martfiles/media/
    </VirtualHost>
    (si besoin le fichier complet)

    avec un django.wsgi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #-*- coding: utf-8 -*-
    import os, sys
    sys.path.append('/home/mart/programmation/python/django')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'martfiles.settings'
     
    import django.core.handlers.wsgi
     
    application = django.core.handlers.wsgi.WSGIHandler()
    et une structure fichier comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /home/.../django/
       martfiles/
          templates/
          media/
          __init__.py
          manage.py
          settings.py
          urls.py
          views.py
       wsgi-scripts/
          django.wsgi
    point de vue permission (comme c'est ça qui a l'air de mer*** pas fonctionner), tout (le dossier apache, wsgi-scripts et martfiles et leur contenu) ont mon utilisateur comme propriétaire et sont autorisés en lecture seule pour les fichiers pour ceux qui ne sont pas moi (je sais pas si c'est clair ^^)

    il y a au moins une partie qui fonctionne puisque dans le message d'erreur, à "veuillez contacter le gestionnaire du site" c'est l'adresse email que j'ai spécifié dans virtualhost qui est indiquée

    je précise aussi que j'avais fait le teste avec ce qu'ils proposaient ici et ça fonctionnait

    une idée ?

    merci

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    Il faut que tu donnes les droits au user www-data il me semble.

    Moi j'ai fait des groupes (devusers et produsers) parce que je partage le dev et la prod sur la même machine. Et mes répertoires djangos, je leur donne les droits root:devusers en 775

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    que je donne les droits à quoi ? tout les fichiers du projet django ?

    je n'ai pas d'utilisateurs www-data mais un http (je suppose que c'est l'equivalent pour archlinux)

    si tu donnes des droits root tu dois passer en root chaque fois que tu veux modifier tes fichiers alors ? C'est pas un peu ennuyant ça ?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    www-data parce que c'est mon user apache sous debian. Mais sinon oui c'est ton user apache.

    Et non, je ne me connecte pas en root pour modifier mes fichiers puisque mon user perso fait partie du groupe devusers qui a les droits 7 dessus.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    désolé mais je ne comprend pas tout avec les histoire de permission et groupe

    est-ce que je dois modifier les permissions de l'utilisateur (ou groupe) http ? comment ?
    ou alors je dois changer le propriétaire (ou groupe) à tout mes fichiers du projet ?
    et le django.wsgi je dois rien changer ?
    comment tu crées un nouveau groupe et te rajoute les permissions ?

    j'ai essayé quelques manipulation mais j'ai toujours le même résultat

    merci

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    Ben, c'est juste de l'administration linux de base.

    Dans mon arborescence, j'ai un répertoire django qui contient ces projets.
    je fais un # chmod -R root:devusers django puis #chmod -R 775 django

    devusers est un groupe que j'ai créé au préalable
    # groupadd devusers et j'y ai rajouté Sinclair (mon user) et www-data (le user apache) via l'edition du fichier /etc/groups (on rajoute les utilisateurs à la ligne devusers séparés par des virgules).

    Je ne dis pas que c'est comme ça qu'il faut faire, c'est juste la méthode que j'utilise. Mais je me demande si ton user apache de doit pas avoir des droits, au moins sur ton fichier wsgi. Pour tester, tu peux lui donner les droits à tous les fichiers et restreindre au fur et à mesure si ça marche.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    hum bon ça risque ptête d'être plus compliqué que ça
    j'ai créé le groupe devusers (contenant moi, http et root), mis les droits 777 pour tester à mon projet django et au scrip wsgi et j'ai toujours une erreur 403

    et sinon pour moi les utilisateurs ça se résumait à root et moi d'où ma question

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    En ajoutant

    sys.path.append('/home/mart/programmation/python/django/martfiles')

    dans ton fichier wsgi ça donne quoi ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    même chose
    en cherchant sur internet on confirme ce dont je me doutais : c'est un problème de permission

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    drwxr-xr-x 3 root devusers 4096 jan 12 09:49 /srv/http/
    drwxrwxrwx 4 root devusers 4096 jan 13 16:44 /home/.../django/martfiles
    drwxrwxrwx 2 root devusers 4096 jan 13 16:49 /home/.../django/wsgi-scripts
    et le même pour les contenu des dossiers
    peut être que le problème de permission vienne d'ailleurs que de mon projet. style un module ou autre

  12. #12
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Je pense que le problème vient de ta configuration d'Apache en fait. Chez, moi, le <Directory> avec le allow from all est dans le VirtualHost. De plus, tu ne donnes pas les droits sur le dossier /media/. Enfin, il est assez recommandé d'utiliser la variante daemon de mod_wsgi. Ta config devrait ressembler plutôt à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <VirtualHost *:80>
        WSGIDaemonProcess mart.localhost user=mart group=mart processes=2 threads=25
        WSGIProcessGroup mart.localhost
     
        Alias /media/ /home/mart/programmation/python/django/martfiles/media/
        <Directory /home/mart/programmation/python/django/martfiles/media/>
            Order deny,allow
            Allow from all
        </Directory>
     
        WSGIScriptAlias /django /home/mart/programmation/python/django/wsgi-scripts/django.wsgi
        <Directory /home/mart/programmation/python/django/wsgi-scripts/>
            Order deny,allow
            Allow from all
        </Directory>
    </VirtualHost>
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 40
    Par défaut
    non ça ne fonctionne pas non plus (petite correction le groupe était users pas mart)

    pour moi je le comprenait comme tout ce qui était mis dans <VirtualHost *:80> était considéré comme uniquement pour le port 80 (donc l'http) et que si je mettais en dehors c'était valable pour tou (y compris le 80)
    mais je me trompe peut être

    (mince le irc django a pas l'air de fonctionner)

    edit : en mettant "LogLevel debug", il me donne un peu plus d'info dans le error.log de apache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [Wed Jan 13 17:46:09 2010] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
    [Wed Jan 13 17:46:09 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
    [Wed Jan 13 17:46:09 2010] [notice] Digest: generating secret for digest authentication ...
    [Wed Jan 13 17:46:09 2010] [notice] Digest: done
    [Wed Jan 13 17:46:09 2010] [notice] Apache/2.2.14 (Unix) PHP/5.3.1 with Suhosin-Patch mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 mod_wsgi/3.1 Python/2.6.4 configured -- resuming normal operations
    [Wed Jan 13 17:46:09 2010] [info] mod_wsgi (pid=15370): Attach interpreter ''.
    [Wed Jan 13 17:46:09 2010] [info] mod_wsgi (pid=15371): Attach interpreter ''.
    [Wed Jan 13 17:51:42 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /django denied
    la dernière ligne est quand j'essaye d'accéder à la parge django, les précédents au redémarrage d'apache.
    c'est normal le "mod_wsgi (pid=15041): Attach interpreter ''." ?

    edit2 : aaaah on progresse !
    en mettant le script dans le dossier appache et en remplacant la ligne d'alias à "WSGIScriptAlias /django /srv/http/wsgi-scripts/django.wsgi" je passe à une erreur 500 à cause d'un problème d'importation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    [Wed Jan 13 18:03:11 2010] [info] mod_wsgi (pid=16715): Create interpreter 'localhost.localdomain|/django'.
    [Wed Jan 13 18:03:11 2010] [info] [client 127.0.0.1] mod_wsgi (pid=16715, process='mart.localhost', application='localhost.localdomain|/django'): Loading WSGI script '/srv/http/wsgi-scripts/django.wsgi'.
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1] mod_wsgi (pid=16715): Exception occurred processing WSGI script '/srv/http/wsgi-scripts/django.wsgi'.
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 230, in __call__
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]     self.load_middleware()
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 33, in load_middleware
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]     for middleware_path in settings.MIDDLEWARE_CLASSES:
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/site-packages/django/utils/functional.py", line 269, in __getattr__
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]     self._setup()
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/site-packages/django/conf/__init__.py", line 40, in _setup
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]     self._wrapped = Settings(settings_module)
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]   File "/usr/lib/python2.6/site-packages/django/conf/__init__.py", line 75, in __init__
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1]     raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
    [Wed Jan 13 18:03:11 2010] [error] [client 127.0.0.1] ImportError: Could not import settings 'martfiles.settings' (Is it on sys.path? Does it have syntax errors?): No module named martfiles.settings
    edit3 : (presque) victoire !
    simplement remettre le import à "sys.path.append('/home/mart/programmation/python/django')"
    bon maintenant il faudrait rendre ça un peu plus propre sans doute et puis les media marche pas encore
    et c'est normal le fait que ça marche pas en dehors de /srv/http ?

    suite ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser css avec django
    Par utopman dans le forum Django
    Réponses: 4
    Dernier message: 06/04/2011, 16h16
  2. Utiliser le resultat d'une <FORM> avec CGI
    Par jmricatt dans le forum Web
    Réponses: 3
    Dernier message: 12/12/2009, 15h18
  3. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 10h18
  4. PB de vue utilisant UNION avec ENTERPRISE MANAGER
    Par punglas dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2004, 15h18
  5. Réponses: 12
    Dernier message: 02/02/2004, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo