среда, 26 декабря 2012 г.

Установка серверов Tornado, Nginx и Django на Windows

Что это такое и как работает:

Tornado - это неблокирующий, высоко производительный веб-сервер с открытыми исходным кодом. Сервер написан на языке Python и без проблем выдерживает несколько тысяч одновременных подключений.

Nginx - маленький но очень быстрый веб-сервер, думаю с ним вы уже знакомы.

Django - фреймворк для веб-приложений на языке Python.


Это все будет работать по нашей любимой схеме frontend - backend:

frontend - nginx, передаёт все соединения, кроме статических файлов, на backend. Просто отдаёт статику.

backend - tornado + django

По запуску Tornado+Nginx под linux написано очень много и трогать єту тему не будем. Мы же займёмся установкой этой чудесной связки под винду. Но крайне не рекомендую ставить рабочие проекты под Windows (тем более под XP).

Для большей реалистичности эксперименты будут проводится над django приложением OSQA(качать по ссылке ниже). OSQA - это Open Source система построения Q&A(Вопросы и ответы) сообществ.

Понадобиться:
1. Windows
2. Python 2.6 или 2.7
3. Dajngo
4. Tornado
5. NIMPix 1.2.0 RC2
6. OSQA
7. Консоль

В статье подразумевается ,что у вас уже установлены :
1. Windows
2. Python
2.0 djаngo
2.1 markdown
2.2 html5lib
2.3 south
2.4 python-openid
2.5 setuptools
3. NIMPix
процесс их установки не описан.

Сервер NIMPix находится на диске С:\

Глава 2. Установка и настройка OSQA
Внимание если у вас версия django выше 1.3, то OSQA работать не будет. Рекомендовано django 1.2 на 1.3(с плясками).
1. Создать папку apps в С:\nimpix в ней папку osqa. Здесь будет находиться наш сайт вопросов и ответов.
2. Распаковать все файлы из архива OSQA в эту папку.
3. Запускам Mysql и Nginx на NIMPix
4. Созадем Mysql базу с названием osqa
5. Проверяем все ли нужные модули Python установлены. Для этого в консоли пишем
python
открывается интерпретатор в нем вводим
>>> help(’modules’)
Найдите в появившемся списке такие модули django, html5lib, south, markdown, openid. Если одного из них нет то необходимо его установить т.к. все они нужный для работы OSQA.
Для этого :
1. Ставим setuptools http://pypi.python.org/pypi/setuptools или distribute http://pypi.python.org/pypi/distribute. Рекомендую distribute, но я пользуюсь setuptools(по привычке).
2. Ставим Если у вас не прописан в PATCH путь до каталога site-packages, то пишите как написано ниже.
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” django
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” markdown
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” html5lib
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” south
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” python-openid
Если же у вас этот путь есть то будет достаточно просто easy_install ….. , без указания полного пути.
Переходим к настройке OSQA.
1. !!!ВНИМАНЕ!!!Для тех у кого django 1.3
в С:\nimpix\apps\osqa\forum\utils\html.py строку
from django.template import mark_safe
меняем на
from django.utils.safestring import mark_safe
в C:\nimpix\apps\osqa\forum\urls.py
вместо
url(r’^%s(.*)’ % _(’nimda/’), admin.site.root),
должно быть так
url(r’^%s’ % _(’nimda/’), include(admin.site.urls)),
2. Открываем С:\nimpix\apps\osqa\settings_local.py и настраиваем подключение к БД
DATABASES = {
‘default’: {
‘ENGINE’: ‘.db.backends.mysql’,
‘NAME’: ‘osqa’,
‘USER’: ‘root’,
‘PASSWORD’: ‘J8uv01Bq431j’,
‘HOST’: ”,
‘PORT’: ”,
}
}
3. Создаём базу данных и все такое.
С:\nimpix\apps\osqa\manage.py syncdb –all
!!!При запросе супер пользователя НЕ СОЗДАЁМ!!!
С:\nimpix\apps\osqa\manage.py migrate forum –fake

Глава 3. Установка и настройка связки Tornado+Nginx
Начнем:
Установка торнадо:
Способ(Рекомендованный) 1.
Устанавливаем с помощью setuptools или distribute.
“C:\Program Files\Python27\Lib\site-packages\easy_install.py” tornado

Способ 2.
С шаманскими плясками и бубнами.
1. Скачать Tornado
http://github.com/downloads/facebook/tornado/tornado-1.2.1.tar.gz
2. распаковать в C:\tornado
3. Заходим в папку и устанавливаем.
cd C:\tornado
setup.py build
setup.py install
4. торнадо установлен.
5. Создаём файл tornading.py и помешаем его в корень нашего проекта.
# -*- coding: utf-8 -*-
import os
import sys
# настройки
DJANGO_ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Между ” укажите путь до ваших приложений, пустой указывает на корень сайта.
DJANGO_APPS_DIR = os.path.join(DJANGO_ROOT_DIR, ”)
def daemon(iport):
import tornado.wsgi
import tornado.ioloop
import tornado.httpserver
# настраиваем django
sys.path.insert(0, DJANGO_APPS_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] = ’settings’
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
# подключаем tornado
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(iport)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
# на вход должен быть передан порт,
# на котором будет запущен tornado-сервер
daemon(int(sys.argv[1]))
6. Запускаем 2 экземпляра на портах 8001 и 8002(порты могут быть и другие). Естественно путь к файлу tornading.py должен быть ваш.
С:\nimpix\apps\osqa\tornading.py 8001&
С:\nimpix\apps\osqa\tornading.py 8002&
7. Запускаем NIMPix, создаём виртуальный хост osqa.lan, открываем его для редактирования и приводим его к такому виду.
У меня путь к проекту django С:/nimpix/apps/osqa/, вы его должны поменять на свой.
upstream backends {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
server_name www.osqa.lan osqa.lan;
access_log /nimpix/component/logs/site/osqa.buh.lan.nginx.access.log;
error_log /nimpix/component/logs/site/osqa.buh.lan.nginx.error.log;
location /media/ {
alias С:/nimpix/apps/osqa/media/;
expires 30d;
}
location /admin/ {
alias С:/nimpix/apps/osqa/media_admin/;
expires 30d;
}
location / {
proxy_pass http://backends;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
8. Включаем виртуальный хост и запускаем сервер.
9. Заходим на сайт, создаём пользователя. Первый созданный пользователь будет администратором .
10. Вот и все

1 комментарий:

  1. Спасибо за статью! Нашёл ещё один полезную статью на эту же тему, кому интересно - https://wezom.com.ua/blog/signalnyj-server-tornado

    ОтветитьУдалить