Hosting Django z wykorzystaniem Gunicorn i Nginx

gunicorn to serwer HTTP zgodny ze standardem WSGI - narzędzie ułatwiające hostowanie różnych pythonowych webowych aplikacji w warunkach produkcyjnych. Gunicorn świetnie współpracuje z Nginxem dając możliwość szybkiego odpalenia projektu Django, Pylons, czy innej aplikacji zgodnej z WSGI.

Bibliotekę można zainstalować ze źródeł, lub poprzez PyPi easy_install -U gunicorn. W podkatalogu doc/htdocs/ gunicorna (pobierz np. źródła) znajdziemy pełną dokumentację i różne przykłady.

Django, gunicorn i NGINX

Oto najprostsza konfiguracja dla Django. Przejdź do katalogu z projektem Django i wykonaj:
gunicorn_django --workers=2
Następnie skonfiguruj NginXa:
worker_processes 1;

user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    include mime.types;
    default_type application/octet-stream;
    access_log /tmp/nginx.access.log combined;
    sendfile on;

    upstream app_server {
        #server unix:/tmp/gunicorn.sock fail_timeout=0;
        # For a TCP configuration:
         server 127.0.0.1:8000 fail_timeout=0;
    }

    server {
        listen 80 default;
        client_max_body_size 4G;
        server_name _;

        keepalive_timeout 5;

	location /site_media/  {
			root /ścieżka/do/projektu/django;
			}
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

            if (!-f $request_filename) {
                proxy_pass http://app_server;
                break;
            }
        }
	
    }
}
W powyższej konfiguracji musimy podać ścieżkę do projektu, tak by mieć obsługę plików statycznych. Gdy to już załatwimy wystarczy uruchomić serwer i gotowe. W dokumentacji gunicorna znajdziemy kilka dodatkowych rozwiązań jak wykorzystanie gniazd, czy skrypty rozruchowe.
RkBlog

Django, 9 May 2010

Comment article
Comment article RkBlog main page Search RSS Contact