IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Voir le flux RSS

Jiyuu

[Actualit�] Mise en production d'un site Django, en utilisant Nginx et Gunicorn

Noter ce billet
par , 17/01/2016 � 20h27 (3525 Affichages)
### toujours en mode �bauche... n'h�sitez pas � me faire toutes les remarques utiles n�cessaires.

Bonjour � tous,

Pr�-requis (� par connaitre Python & Django) :
  • connaitre SSH ;
  • �tre habitu� aux OS bas�s sur linux ;
  • avoir un serveur permettant d'utiliser Python, Django et SSH ;
  • si possible avoir un serveur de production aussi � jour que le poste servant de serveur de d�veloppement.


Apr�s la cr�ation de votre site web avec Django, vous allez rapidement avoir besoin de mettre en production celui-ci. Pour rappel, IL NE FAUT SURTOUT PAS utiliser le serveur de d�veloppement fourni avec Django pour travailler en production. Il existe sur le march� plusieurs h�bergeurs permettant de faire ceci, mais nous allons �tudier ici la mani�re de faire sans passer par ces h�bergeurs. Nous allons donc cr�er notre propre serveur de production.

Dans ce billet nous allons d�couvrir le param�trage le plus simple pour faire fonctionner un site Django sur un serveur priv�. Plusieurs fournisseurs offrent ce type de service. La seule chose que je conseille c'est de veiller � avoir un serveur de production aussi � jour que notre serveur de d�veloppement. Pour ma part je suis parti sur un serveur Archlinux.


Passons aux choses s�rieuses

Nous allons utiliser Gunicorn et Nginx. Je vous invite donc � les installer si ce n'est pas d�j� fait. �videmment il est possible d'utiliser d'autres outils comme mod_wsgi et Apache. � l'heure actuelle, l'objet de ce billet n'est pas d'expliquer en profondeur l'utilit� de l'un ou l'autre. Si besoin je vous invite � feuilleter les tutoriels disponibles sur
Une fois l'installation faite vous pouvez v�rifier que Nginx fonctionne correctement en vous rendant sur l'adresse localhost depuis votre navigateur web.

Note : Gunicorn est l'outil (serveur) qui nous permettra de mettre en production notre site Django. Malheureusement celui-ci ne sait pas g�rer les fichiers statiques, comprenez par l� vos images, *.css, *.js, ... Pour cela il nous allons utiliser Nginx.


Ok, mais comment j'utilise tout �a ?
Th�oriquement Nginx est livr� avec une configuration de base assez simple, que vous trouverez dans le fichier /etc/nginx/nginx.conf (chemin � adapter �ventuellement selon votre OS). C'est elle qui permet l'affichage de localhost. La premi�re chose � faire est d'ajouter, le cas �ch�ant, � la fin de nginx.conf la ligne suivante :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
include /etc/nginx/sites-enabled/*;
Par la suite, l'id�e est de cr�er des sous-configurations et de les activer au besoin. Pour cela, la m�thode habituellement utilis� est de cr�er les deux dossiers sites-available et sites-enabled directement dans /etc/nginx. On va donc demander au fichier de configuration d'inclure aussi ce qui se trouve dans sites-enabled.
Donc si vous avez bien suivi :
  • sites-available : sites cr��s & disponibles
  • sites-enabled : sites en fonction.

La premi�re �tape est de configurer correctement votre projet afin de servir les fichiers statiques. Pour cela, je vous invite � vous r�f�rer � la documentation officielle qui explique bien les diff�rents nuances des param�tres pr�sents dans votre settings.py.

Une fois settings.py correctement configur�, il faut passer � la configuration de Nginx. Pour rappel, le but ici n'est pas de s'�tendre sur cet outil, mais de proposer une solution simple pour installer notre site web. En ayant enlev� toutes les lignes comment�es et en allant au plus simple, dans mon cas, nginx.conf correspond � ceci :
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
user root;   #pour dire qui a le droit d'utiliser le script
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*; #pour inclure mes fichiers de configuration propres � chacun de mes sites.
}
Dans un second temps, nous allons cr�er un fichier de configuration propre � notre site (le nom importe peu) dans sites-available. Voici un exemple basique :
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
server {
    listen 80;
    server_name monsupersite.fr *.monsupersite.fr; #mettez ici tous les liens devant pointer vers votre site

location / {
               proxy_pass http://127.0.0.1:8000/;
               proxy_read_timeout 300;
               proxy_redirect off;
               proxy_buffering off;
               proxy_store off;
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
 
     location /static/ {
                alias /home/monuser/www/staticFiles/; #le dossier /home/monuser/www correspond au dossier dans lequel vous aurez mis votre projet, c'est � dire tout ce qui se trouve au m�me niveau que manage.py
           }
}
N'oubliez pas de cr�er un lien symbolique de ce ficher vers sites-enabled afin de le rendre actif.

Une fois ceci fait, rendez-vous au m�me niveau que manage.py et lancez les commandes suivantes (� adapter selon votre projet et votre OS) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
sudo /etc/init.d/nginx restart
gunicorn jiyuu.wsgi:application --bind=127.0.0.1:8000 --daemon
jiyuu.wsgi:application : voir settings.py pour adapter cet argument.

Note : on voit ici que l'on demande � gunicorn de lancer le serveur sur le port 127.0.0.1:8000, ce qui correspond � notre configuration dans le fichier sites-available. Vous aurez compris qu'il est ainsi possible de mettre en place plusieurs site web sur le m�me VPS.

Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Viadeo Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Twitter Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Google Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Facebook Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Digg Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Delicious Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog MySpace Envoyer le billet � Mise en production d'un site Django, en utilisant Nginx et Gunicorn � dans le blog Yahoo

Mis � jour 17/01/2016 � 21h47 par dourouc05

Cat�gories
Sans cat�gorie

Commentaires