2012-05-07 17:08:58 +04:00
|
|
|
========================
|
|
|
|
Installation avec Nginx
|
2012-05-18 16:29:52 +04:00
|
|
|
========================
|
|
|
|
|
2012-05-19 00:58:14 +04:00
|
|
|
.. Note::
|
|
|
|
Vous devez avoir suivi :doc:`l'installation facile <./easy_install>` avant.
|
|
|
|
|
2012-05-18 16:29:52 +04:00
|
|
|
Nginx est un choix très populaire pour servir un projet Python:
|
|
|
|
|
|
|
|
- Il est rapide.
|
|
|
|
- Il est léger.
|
|
|
|
- Les fichiers de configuration sont très simple.
|
|
|
|
|
|
|
|
Si vous avez votre propre serveur, c'est le meilleur choix. Dans le cas contraire,
|
2012-05-19 00:47:17 +04:00
|
|
|
essayez :doc:`l'installation la plus simple <./easy_install>`,
|
|
|
|
ou avec :doc:`Apache <./apache_install>`.
|
2012-05-18 16:29:52 +04:00
|
|
|
|
|
|
|
Nginx ne lance aucun processus Python, il sert uniquement les requêtes
|
|
|
|
depuis l'extérieur vers le server Python.
|
|
|
|
|
|
|
|
Il y a donc deux étapes:
|
|
|
|
|
|
|
|
- Faire tourner le processus Python.
|
|
|
|
- Faire tourner Nginx.
|
|
|
|
|
|
|
|
Ainsi, vous bénéficierez:
|
|
|
|
|
|
|
|
- de la possibilité d'avoir plusieurs projets écoutant sur le prot 80;
|
|
|
|
- de plusieurs modules Nginx à votre disposition (comme la limitation
|
|
|
|
du nombre de requêtes);
|
|
|
|
- de la solidité de Nginx en front end: il est sécurité, et il y a peu de chance
|
|
|
|
qu'il crash sous une forte charge;
|
|
|
|
- les processus de votre site ne tournent pas avec les droits admin, même si
|
|
|
|
--user ne fonctionne pas sur votre OS;
|
|
|
|
- de la capacité de gérer un processus Python sans toucher Nginx ou les autres
|
|
|
|
processus. C'est très pratique pour les mises à jour.
|
|
|
|
|
|
|
|
Processus Python
|
|
|
|
==================
|
|
|
|
|
|
|
|
Lancez 0bin comme d'habitude, mais cette fois pour écouter sur un host et un port
|
|
|
|
local. Ex ::
|
|
|
|
|
|
|
|
zerobin --host 127.0.0.1 --port 8000
|
|
|
|
|
|
|
|
En PHP, quand on édite un fichier, la modificiation est visible immédiatement.
|
|
|
|
En Python, l'intégralité du code est chargé en mémoire pour des raisons de
|
|
|
|
performance. Pour cette raison, il faut redémarrer le processus Python pour voir
|
|
|
|
les changement prendre effet. Avoir un processus séparé permet de le faire
|
|
|
|
sans avoir à redémarer le serveur.
|
|
|
|
|
|
|
|
|
|
|
|
Nginx
|
|
|
|
======
|
|
|
|
|
|
|
|
Nginx peut être installé avec votre gestionnaire de paquets habituels, donc
|
|
|
|
nous ne couvrirons pas cette partie.
|
|
|
|
|
|
|
|
Vous devez créer une fichier de configuration Nginx pour 0bin. Sous GNU/Linux,
|
|
|
|
on les mets en général dans /etc/nginx/conf.d/. Nommez le zerobin.conf.
|
|
|
|
|
2012-05-19 00:18:40 +04:00
|
|
|
Le fichier de configuration minimal pour faire tourner le site est::
|
|
|
|
|
|
|
|
server {
|
|
|
|
listen 80;
|
|
|
|
server_name www.votresiteweb.com;
|
|
|
|
|
|
|
|
location / {
|
|
|
|
proxy_pass http://127.0.0.1:8000;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
`proxy_pass` transmet les requêtes aux processus Python. Bien entendu le
|
|
|
|
port doit correspondre à celui utilisé par 0bin.
|
|
|
|
|
|
|
|
On peut apporter plusieurs améliorations à l'expérience utilisateur::
|
|
|
|
|
|
|
|
server {
|
|
|
|
listen 80;
|
|
|
|
server_name www.votresiteweb.com;
|
|
|
|
|
|
|
|
location /favicon.ico {
|
|
|
|
root /chemin/vers/zerobin/static/img;
|
|
|
|
}
|
|
|
|
|
|
|
|
location /static/ {
|
|
|
|
root /chemin/vers/zerobin;
|
|
|
|
gzip on;
|
|
|
|
gzip_http_version 1.0;
|
|
|
|
gzip_vary on;
|
|
|
|
gzip_comp_level 6;
|
|
|
|
gzip_proxied any;
|
|
|
|
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
|
|
|
gzip_buffers 16 8k;
|
|
|
|
# Disable gzip for certain browsers.
|
|
|
|
gzip_disable ~@~\MSIE [1-6].(?!.*SV1)~@~];
|
|
|
|
expires modified +90d;
|
|
|
|
}
|
|
|
|
|
|
|
|
location / {
|
|
|
|
proxy_pass http://zerobin_cherrypy;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Nginx sert maintenant le favicon ainsi que les fichiers statiques,
|
|
|
|
on a ajouté une date d'expiration dans les en-têtes HTTP
|
|
|
|
et on s'assure que la compression gzip est utilisée pour les navigateurs
|
|
|
|
qui la supporte.
|
2012-05-18 16:29:52 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|