django virtualenvs nginx uwsgi supervisor debian

Предполагается, что у нас уже есть настроенное виртуальное окружение virtualenv debian
nginx в стандартном репозитории Debian Squeeze старый, поэтому ставить будем из backports
/etc/apt/sources.list

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://ftp.ru.debian.org/debian testing main non-free contrib
deb http://ftp.ru.debian.org/debian unstable main non-free contrib

/etc/apt/preferences

Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=squeeze-backports
Pin-Priority: 675
Package: *
Pin: release a=testing
Pin-Priority: 650
Package: *
Pin: release a=unstable
Pin-Priority: 600

Указываем использовать stable по умолчанию

echo 'APT::Default-Release "stable";' > /etc/apt/apt.conf.d/default

Обновляем список репозиториев

aptitude update


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

aptitude -t squeeze-backports install nginx

проверяем

/etc/init.d/nginx start
nginx -V

nginx uwsgi supervisor debian
переходим в виртуальное окружение, у меня оно называется catalog

workon catalog
(catalog) pip install uwsgi

создаем файл /home/web/djcode/catalog/uwsgi.ini следующего содержания

[uwsgi]
autoload = true
virtualenv=/home/web/.virtualenvs/catalog/
chdir=/home/web/djcode/catalog/catalog/
master=True
no-orphans = true
log-date = true
vacuum=True
pidfile=/tmp/catalog.pid
max-requests=5000
socket=127.0.0.1:49001
workers=2
pythonpath=..
env=DJANGO_SETTINGS_MODULE=settings
module = django.core.handlers.wsgi:WSGIHandler()
touch-reload=/home/web/djcode/catalog/reload.txt
uid = web
gid = web

Устанавливаем supervisor.

aptitude install supervisor

Создаем конфигурацию для нашего приложения
/etc/supervisor/conf.d/catalog.conf

[program:catalog]
command=/home/web/.virtualenvs/catalog/bin/uwsgi /home/web/djcode/catalog/uwsgi.ini
stdout_logfile=/home/web/djcode/catalog/logs/wsgi.log
stderr_logfile=/home/web/djcode/catalog/logs/wsgi_err.log
autostart=true
autorestart=true
redirect_stderr=true
stopwaitsecs = 60
stopsignal=INT

Обновляем настройки supervisor

supervisorctl update

Создаем конфигурацию nginx /etc/nginx/sites-available/catalog

server {
listen 80;
server_name catalog.site.ru;
access_log /var/log/nginx/catalog.access.log;
error_log /var/log/nginx/catalog.error.log;
location / {
uwsgi_pass 127.0.0.1:49001;
include uwsgi_params;
}
location /media/ {
alias /home/web/djcode/catalog/catalog/media/;
}
location /static/ {
alias /home/web/djcode/catalog/catalog/static/;
}
}

Создаем символическую ссылку

ln -s /etc/nginx/sites-available/catalog /etc/nginx/sites-enabled/

Перезапускаем nginx

/etc/init.d/nginx restart

Добавить комментарий

Ваш адрес email не будет опубликован.