Для начала разумеется, ставим 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.
Комментариев нет:
Отправить комментарий