четверг, 10 января 2013 г.

Запуск Django из Tornado и проксирование через Nginx

Создайте новый проект Django:

django-admin.py startproject testserver

В папку проекта testserver добавьте файл django_tornado.py, имеющий следующий код:

# -*- coding: utf-8 -*-

import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import sys
import django.core.handlers.wsgi
sys.path.append('C:/django')

def main():
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    application = django.core.handlers.wsgi.WSGIHandler()
    container = tornado.wsgi.WSGIContainer(application)
    http_server = tornado.httpserver.HTTPServer(container)
    http_server.listen(8001, "127.0.0.1")
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()

После этого запустите файл django_tornado.py из консоли.

Перейдите в браузере по адресу http://127.0.0.1:8001/

В результате вы увидите стартовую страницу Django.



Для того, чтобы проксировать Nginx --> Tornado --> Django в конфиге Nginx в файле nginx.conf из папки conf пропишите следующие настройки:

worker_processes  1;

events {
    worker_connections  1024;
}

http {

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

    server {
  
        listen             80;
        server_name  localhost;

        location / {
            proxy_pass          http://127.0.0.1:8001;
            proxy_set_header X-Real-IP $remote_addr;
        }

    }
  
}

После этого запустите сервер Nginx и файл django_tornado.py

В браузере перейдите по адресу http://localhost/

В результате вы увидите стартовую страницу Django, но в этот раз она будет загружена через связку Nginx --> Tornado --> Django.

Для загрузки статичных файлов, таких как: css, javascript, images через Nginx изменим конфиг в файле nginx.conf следующим образом:

worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile on;

    keepalive_timeout 65;

    server {
        listen       80;
        server_name  localhost;


        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header X-Real-IP $remote_addr;
        }

        location /static/ {
            alias C:/django/testserver/static/;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

В результате Django сможет загружать файлы css, javascript, images из папки C:\django\testserver\static через сервер Nginx.



Комментариев нет:

Отправить комментарий