Home

Tags

uWSGI + nginx, установка и настройка

2011-01-18 web server uwsgi nginx bottle

Все действия проводились на ubuntu server 12.04, 13.04
Установка nginx описана тут

Устанавливаем uWSGI

sudo apt-get install uwsgi uwsgi-plugin-python

Привязываем к nginx

Меняем файл /etc/nginx/sites-available/default (но лучше создать отдельный файл вирт.хостов)
server {
    listen   80;
    # access_log /var/log/nginx/test/access_log;

    server_name localhost;
    location / {
            root            /var/www/uwsgi;
            uwsgi_pass      127.0.0.1:3031;
            include         uwsgi_params;
    }
}

Создаем файл /var/www/uwsgi/index.wsgi - wsgi приложение
# coding: utf-8

import sys
import os

path = os.path.dirname(__file__)
sys.path.append(path)
os.chdir(path)

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello uWSGI!!!'

    response_headers = [('Content-type', 'text/html; charset=utf-8'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Запускаем uWSGI сервер:
uwsgi_python27 --socket 127.0.0.1:3031 --file /var/www/uwsgi/index.wsgi --chdir /var/www/uwsgi -p 2 --threads 5 -b 8192

Авто рестарт приложения можно получить указав параметр для uwsgi_python27, нужно указать имя файла при изменении которого перезагружать приолжение:
--touch-reload=/var/www/uwsgi/index.wsgi


Применяем настройки nginx
sudo /etc/init.d/nginx reload

Готово, можно проверять по адресу http://localhost/

Пример wsgi приложения на web-bottle

Нужно установить webbottle
sudo easy_install bottle

Приложение /var/www/uwsgi/index.wsgi
import os
os.chdir(os.path.dirname(__file__))

from bottle import get, default_app

@get('/')
def main():
    return 'Main page'

@get('/:name')
def main(name):
    return 'Page: ' + name

application = default_app()

После этого нужно перезапустить uwsgi_python27