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 :
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 :
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 :
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) :
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.