понедельник, 26 сентября 2011 г.

Ставим Tornado Web Server на Ubuntu

Для начала стоит пару слов сказать о самом сервере. Tornado - расширяемый, не блокирующий веб-сервер и фреймворк, написанный на Python. Он создан для использования в проекте FriendFeed; компания была приобретена Facebook в 2009 году и после этого были открыты исходные коды Tornado(копипаста из вики). Вся соль в том что это один из немногих серверов держащий 10к. подключений/с. Такие вот пироги. В репах убунты есть только устаревшая версия, так что будем ставить из исходников)
Перейдем к делу:

(советую ставить с помощью aptitude, его нет в стандартной сборке, но кто мешает нам его поставить :3)

Ставим git, чтобы скачать исходный код tornado
$ sudo aptitude install git-core gitosis

Ставим пакет необходимый для сборки в Debian / Ubuntu
$ sudo aptitude install python-dev build-essential

Получаем исходники tornado:
$ cd ~ && git clone git://github.com/facebook/tornado.git

И собственно ставим tornado:
$ cd ~/tornado && sudo python setup.py install

И вроде бы и все. Но если зайти на офф сайт торнадо можно найти там слова о поддержке Python3k. Так есть, но необходимо доставить еще пару пакетиков.

Ставим сам python3:
$ sudo aptitude install python3

Но если сейчас попробовать поставить торнадо, он пошлет нас ставить сетуптулс, так что сделаем это заранее:
$ sudo aptitude install python3-setuptools

Теперь ставим Tornado уже для Python3k(если вы уже скачали исходники):
$ cd ~/tornado && sudo python3 setup.py install

Теперь все, Tornado поставлен, можно тестить!

Создаем текстовый файл в своем любимом редакторе(мне лично нравится этот). И пишем в нем следующее:

import tornado.httpserver
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Не забывайте о том что Python2k плохо дружит с юникодом
(
если вы его используете добавьте строчку
# -*- coding: utf-8 -*-
) 
. У Python3k с этим проблем нет :3.
Сохраняйте файлик(не забудьте сделать его исполняемым)  и запускайте его в нужном вам Python'е.
Не сложно догадаться что этот пример выводит обычный "Хелло Ворлд" на 8888 порте. localhost:8888.
Самую свежую документацию вы всегда сможете найти тут.
А тут есть устаревшая документация, но зато на русском, возможно кому то она понадобится.

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

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