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 :

[Nginx-Django] Integration de Django dans Nginx


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de CactO_o's
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Par défaut [Nginx-Django] Integration de Django dans Nginx
    Bonjour à tous, je suis actuellement en train d'essayer d'intégrer Gjango à Nginx déjà installer..

    Nginx :

    Nginx fonctionne sur le port 80 et Django sur le port 8000, voilà le fichier de configuration de Nginx (pourtant bien configurer ?)

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    user www-data;
    worker_processes  1;
     
    error_log  /var/log/nginx/error.log;
    pid        /var/run/nginx.pid;
     
    events {
        worker_connections  1024;
    }
     
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
     
        access_log  /var/log/nginx/access.log;
     
        sendfile        on;
        #tcp_nopush     on;
     
        #keepalive_timeout  0;
        keepalive_timeout  65;
        tcp_nodelay        on;
     
        gzip  on;
     
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
     
        server / {
            listen 80;
            server_name    *.kreatoo.com;
            location / {
                proxy_pass  http://localhost:8000/;
            }
        }
    }
    Au lancement, aucun problème soulevé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bender:/etc/nginx# nginx
    Bender:/etc/nginx#
    Django :

    Mon projet est actuellement vide et se trouve dans /home/user/kreatoo/ et quand je le lance je n'ai aucun message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Bender:/home/user/kreatoo# python manage.py runserver
    Validating models...
    0 errors found
     
    Django version 1.0-final-SVN-unknown, using settings 'kreatoo.settings'
    Development server is running at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    Maintenant le problème est que quand je fais une requète sur www.kreatoo.com, je recois le contenu de /var/www/nginx-default/ (géré par Nginx...)


    J'espère que quelqu'un saura me répondre.... Je suis complètement perdu dans ces nouvelles configurations...

    Merci à tous !

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2003
    Messages : 127
    Par défaut
    Je ne vois pas le pbr c'est normal
    tu a configuré Nginx sur le port 80 qui est le port par défaut pour le http
    donc quand tu lance cet url
    www.kreatoo.com
    c'est égale à
    www.kreatoo.com:80
    donc pour voir ton site django
    tu dois lancer cet url
    www.kreatoo.com:8000


    et je pense que tu devra lancer ton serveur comme ça

    python manage.py runserver tonadresseIP:8000

  3. #3
    Membre confirmé Avatar de CactO_o's
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Par défaut
    Avec ce que tu me dis, Django me servira en même temps de server Web, alors que moi je veux utiliser Nginx.

    Le principe est d'apeller Nginx sur le port 80 (http://www.kreatoo.com) et que celui-ci envoit les requètes à Django en local sur le port 8000 (http://localhost:8000).

    Si je ne me trompe pas ce que je cherche à faire c'est d'utilisé Nginx et Django en FastSGI...
    Mais je ne comprend pas comment renvoyer les requètes, je pensais quand configurant le serveur de cette manière toutes les requètes seraient renvoyer de Nginx vers Django... :s

    Quelques liens dont je me suis servit...

    1) Link du wiki Nginx - Nginx Django FastCGI
    2) Link de CodeDjango - Fonctionnement avec Nginx
    3) Exemple de redirection- Nginx vers Apache
    4) Fonctionnement de nginx.conf

    Ps : j'ai fait un test de configuration de /etc/nginx/nginx.conf et il est ok :
    Bender:~# nginx -t
    2009/07/02 13:35:39 [info] 32305#0: the configuration file /etc/nginx/nginx.conf syntax is ok
    2009/07/02 13:35:39 [info] 32305#0: the configuration file /etc/nginx/nginx.conf was tested successfully
    EDIT :

    J'ai fait quelques modifications sur /etc/nginx/nginx.conf en m'aidant essentiellement du 2em lien:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    user www-data;
    worker_processes  1;
     
    error_log  /var/log/nginx/error.log;
    pid        /var/run/nginx.pid;
     
    events {
        worker_connections  1024;
    }
     
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
     
        access_log  /var/log/nginx/access.log;
     
        sendfile        on;
        #tcp_nopush     on;
     
        #keepalive_timeout  0;
        keepalive_timeout  65;
        tcp_nodelay        on;
     
        gzip  on;
     
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
     
        upstream djangoserv{
            server 127.0.0.1:8000;
        }
     
        server {
            listen  80;
            server_name *.kreatoo.com;
     
            root /var/www/kreatoo/;
     
            location / {
                    fastcgi_pass    127.0.0.1:8000;
            }
     
       }
    }
    Fichier OK :
    Bender:/etc/nginx# nginx -t
    2009/07/02 14:15:52 [info] 32352#0: the configuration file /etc/nginx/nginx.conf syntax is ok
    2009/07/02 14:15:52 [info] 32352#0: the configuration file /etc/nginx/nginx.conf was tested successfully
    Mais le resultat n'est pas celui attendu :

    www.kreatoo.com :
    502 Bad Gateway

    ### J'ai plusieurs questions qui me bloque vraiment pour avancer et dont je ne trouve pas de réponses :

    1/ Faut-il que je redirige le port 8000 de ma box sur mon pc fixe (comme actuellement déjà fait pour le port 80 et 22) ou ce n'est pas la peinne vu que je passe par le port 80 et que je redirige en localhost vers le port 8000 ???

    2/ Comment puis-je tester Django ?! Que faut-il mettre dans le projet de base pour pouvoir faire des tests ?
    - J'ai essayer d'eteindre Nginx et de lancer Django sur le port 80 afin de testé le retour de Django.
    Bender:/etc/nginx# /etc/init.d/nginx stop
    Stopping nginx: nginx.
    Bender:/etc/nginx# cd /home/user/kreatoo/
    Bender:/home/user/kreatoo# python manage.py runserver 80
    Validating models...
    0 errors found

    Django version 1.0-final-SVN-unknown, using settings 'kreatoo.settings'
    Development server is running at http://127.0.0.1:80/
    Quit the server with CONTROL-C.
    Et lorsque je test http://www.kreatoo.com, il me met qu'il ne trouve pas la page... ?
    Il me manque donc quelque chose sur mon projet Django ?!

    Je tiens à préciser que le projet Django ne contient rien du tout ! J'ai seulement créer le projet (comme expliquer dans le tutoriel Django):

    Bender:/home/user/kreatoo# django-admin.py startproject monsite
    Mais ne devrait-il pas au moins afficher une index (genre "Welcome to Nginx" pour Nignx) ???



    Merci pour tous ceux qui arriveront à m'aider !

  4. #4
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Pour tester django en local tu n'as besoin d'aucun serveur. Il suffit de lancer django avec soit :

    manage.py runserver

    qui lance django en écoute sur http://127.0.0.1:8000/

    soit :

    manage.py runserver <adresse ip ou tu veux écouter>:<port>

    ex : manage.py runserver 192.168.0.1:8080

    et là tu accèdes à django par http://192.168.0.1:8080


    Par contre cette façon de faire ne sert que pour le développement, il est bien préciser dans la documentation de ne pas utiliser cette technique pour un serveur de production.

    Personnellement pour mes serveurs en production, j'utilise apache avec mod_wsgi.

  5. #5
    Membre confirmé Avatar de CactO_o's
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Par défaut
    Django n'est pas installer sur ma machine, il est installer sur le serveur (ou www.kreatoo.com pointe) et c'est la bas que je test...

    Par contre si je stop Nginx, et que je lance Django sur le port 80, au lieu d'avoir un "Welcome to Django" j'ai une page d'erreur ("La connexion a échoué")

    Bender:/home/user/kreatoo# /etc/init.d/nginx stop
    Stopping nginx: nginx.
    Bender:/home/user/kreatoo# python manage.py runserver 80
    Validating models...
    0 errors found

    Django version 1.0-final-SVN-unknown, using settings 'kreatoo.settings'
    Development server is running at http://127.0.0.1:80/
    Quit the server with CONTROL-C.
    EDIT :

    En faite tu as raison, pour que sa fonctionne il faut faire :
    python manager.py runserver 0.0.0.0:80

  6. #6
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Vu que django est sur un serveur distant, soit tu fais :

    1) 0.0.0.0:80 ce qui signifie réponds sur toutes les adresses ip que tu connais
    2) <adresse ip internet de ton serveur>:80 qui ne répond donc que sur l'adresse ip de ton serveur et qui, si ton dns est bien configuré, te permets d'atteindre ton site par http://<nom de domaine/ ou par http://<adresse ip du serveur>

    Mais je repete, cette manière de faire n'est valable qu'en phase de développement. Le serveur http intégré à django n'est pas prévu pour la production.

Discussions similaires

  1. [SDL] Integration fenetre SDL dans fenetre C# ?
    Par salammbo dans le forum OpenGL
    Réponses: 3
    Dernier message: 07/02/2005, 09h47
  2. Integrer une musique dans mon programme
    Par Tutux84 dans le forum C
    Réponses: 2
    Dernier message: 29/01/2005, 12h41
  3. integration varaiables javascript dans du HTML
    Par developpeur_mehdi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/11/2004, 14h54
  4. Integrer un carré dans un RichEdit
    Par Harry dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/09/2004, 15h02
  5. integration de repertoire dans ma webapp
    Par thomy dans le forum JBuilder
    Réponses: 2
    Dernier message: 04/06/2003, 10h34

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