Для начала разумеется, ставим nginx и uWSGI. Nginx наверняка есть в портах для вашей ОС, а uWSGI можно поставить через pip:
$pip install uwsgiСконфигурим сервер nginx:
server { listen 80; server_name localhost; location / { root "/path/to/project/www"; uwsgi_pass unix:///var/tmp/project.sock; #путь к сокету include uwsgi_params; #маппинг параметров uwsgi uwsgi_buffers 8 128k; #8 буферов по 128k (для примера) } location /static/ { alias "/path/to/project/www/static/"; expires 30d; } location /static/admin/ { alias /Library/Python/2.6/site-packages/django/contrib/admin/static/admin/; #в этом примере для OS X } error_page 500 502 503 504 /50x.html; location = /50x.html { root share/nginx/html; } }
Теперь создадим конфиг-файл для uWSGI:
[uwsgi] chdir=/path/to/project/www/ #путь, к рабочей папке проекта module=project.wsgi:application #точка входа в wsgi-приложение socket=/var/tmp/project.sock master=True home=/path/to/virtualenvs/project #путь к virtualenv pidfile=/tmp/project-master.pid vacuum=True max-requests=5000 daemonize=/var/log/uwsgi/project.log env=DJANGO_SETTINGS_MODULE=project.settings max-requests=5000 buffer-size=32768 harakiri=30 reload-mercy=8 master=1 no-orphans=1 touch-reload=/path/to/project/www/uwsgi_reloadСохраним конфиг в uwsgi.ini
Создадим файл для перезагрузки:
touch /path/to/project/www/uwsgi_reload
Запускается просто:
uwsgi uwsgi.ini
Чтобы убить, делаем
uwsgi --stop /tmp/project-master.pid
Чтобы перезапустить, просто трогаем файл перезагрузки:
touch /path/to/project/www/uwsgi_reloadВажное замечание: запустить сервер без virtualenv у меня под OS X не удалось. Почему-то все thrid-party библиотеки, включая django исчезали из python path при запуске uwsgi. Разбираться, почему так происходит я не стал, т.к. в реальой жизни обычно все запускается через virtualenv.
Комментариев нет:
Отправить комментарий