Nginx & Python

Nginx est un serveur web dont les points forts sont la gestion du multitâche et une consommation base de ressources système.
Il peut aussi servir de proxy pour les protocoles HTTP, HTTPS, SMTP, POP3, et IMAP ou pour completer d'autres serveurs web tels que Gunicorn, Unicorn ou Tornado.

Nginx a été crée par Igor Sysoev en 2002 pour le site russe Rambler.
Il est écrit en C et est sous license BSD et tourne sur tous les systèmes Unix-like et Microsoft Windows.

Gunicorn(Green Unicorn) est un serveur Web HTTP WSGI écrit en Python et sous license MIT et est disponible pour Unix.

Installation

pour commencer, il faut installer python et pip si ce n'est pas fait:
Debian:

aptitude install python-dev pip

Centos:

yum install python27.x86_64 python27-pip.noarch

FreeeBSD:

#On installe Python
cd /usr/ports/lang/python27
make config-recursive
make install
#On install pip
cd /usr/ports/devel/py-pip
make config-recursive
make install

On install virtualenv a l'aide de pip:

pip install virtualenv

On crée notre virtualenv et on l'active, c'est dans ce virtualenv que se trouvera notre application:

virtualenv site
cd site
source bin/activate

On peut maintenant commencer à développer notre application dans le virtualenv

gunicorn

Je ne vais pas ici expliquer comment développer une application en Python, seulement montrer comment lancer une application tournant avec le cadriciel Flask avec Gunicorn.

Soit mon application définie entièrement dans le fichier index.py avec le code suivant (récupéré sur le site de Gunicorn):

def app(environ, start_response):
    data = b"Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])
    return iter([data])

La commande pour lancer l'application avec Gunicorn est la suivante:

gunicorn -b 127.0.0.1:5000 --log-file logs.log --workers=5 index:app -D

où:

  • -b 127.0.0.1:5000 ⇒ adresse et port sur lesquels va tourner l'application
  • –log-file logs.log ⇒ fichier dans lequel seront enregistrés les logs générés par l'application
  • –workers=5 ⇒ nombre de workers qui seront lancés par Gunicorn pour faire tourner l'application
  • index:app ⇒ le nom du fichier contenant l'application et l'application à lancer (voir code)
  • -D ⇒ faire tourner l'application en arrière plan

Une fois l'application lancée, on peut se rendre via son navigateur préféré sur la page 127.0.0.1:5002, ou le faire passer par un reverse proxy tel que Nginx.

nginx

server {
        listen 80 ;
        server_name site.oweteam.com;
        return 301 https://$server_name$request_uri;
}
 
 
server {
        listen 443 ssl http2;
        server_name site.oweteam.com;
        ssl on;
        ssl_certificate /path/to/fullchain.pem;
        ssl_certificate_key /path/to/privkey.pem;
 
        location /static/
        {
                gzip  on;
        }
 
        location /
         {
            proxy_pass http://127.0.0.1:5000;
            proxy_set_header X-Real-IP $remote_addr;
        }
 
}
wiki/nginx.python.txt · Dernière modification: 2018/07/03 14:18 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5