Debian 6 установка и настройка django postgresql nginx uwsgi
Добавляем репозитории Wheezy для установки uWSGI
# vi /etc/apt/sources.list
deb http://ftp.debian.org/debian/ wheezy main contrib non-free
deb http://security.debian.org wheezy/updates main contrib non-free
Обновляем пакеты
# apt-get update
# apt-get upgrade
Установка PostgreSQL
Укажем адрес который будет слушать БД
# vi /etc/postgresql/9.0/main/postgresql.conf
listen_addresses = 'localhost, 192.168.200.7'
Перезапускаем сервис
# /etc/init.d/postgresql restart
Создаем нового пользователя
# su postgres
$ createuser usr1
could not change directory to "/root"
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Изменим пароль для пользователя postgres
# passwd postgres pass!
# su postgres
# psql
psql (9.0.7)
Type "help" for help.
postgres=# ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'pass!';
Создадим БД для созданного ранее пользователя usr1
$ createdb site1db --owner=usr1 -hlocalhost
Password: pass!
Установим пароль для пользователя usr1
# su postgres
# psql
psql (9.0.7)
Type "help" for help
postgres=# alter user usr1 password 'usr1pass';
ALTER ROLE
Проверим подключение пользователя к БД
$ psql -Uusr1 -dsite1db -W -hlocalhost
Password for user usr1:
psql (9.0.7)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
site1db=>
Устанавливаем nginx django и uWSGI
# apt-get install nginx python-pip build-essential python-dev libxml2-dev python-psycopg2 python-flup python-django
# aptitude -t unstable install uwsgi uwsgi-plugin-python python-virtualenv
Создаем директорию для сайта
# mkdir -p /var/www/site1.ru
Создадим директории для проекта
# mkdir /var/www/site1.ru/static ; mkdir /var/www/site1.ru/logs ; mkdir /var/www/site1.ru/conf
Настроим конфигурационный файл nginx
# vi /etc/nginx/sites-available/default
server {
listen 80;
listen 443;
# domen
server_name site1.ru www.site1.ru;
# path to logs
access_log /var/www/site1.ru/logs/nginx_access.log;
error_log /var/www/site1.ru/logs/nginx_error.log;
# path to django project
root /var/www/site1.ru;
location /
{
# path to socket file
uwsgi_pass unix:///var/tmp/site1_uwsgi.sock;
include uwsgi_params;
# 8 — buffer count
# 128k — buffer size
uwsgi_buffers 8 128k;
}
# path to static files
location /static/ {
alias /var/www/site1.ru/static/;
expires 30d;
}
}
Настроим конфигурационный файл uWSGI
# vi /var/www/site1.ru/conf/uwsgi.yaml
uwsgi:
# socket file
socket: /var/tmp/site1_uwsgi.sock
# path to django project
pythonpath: /var/www/site1.ru
# env var settings file
env: DJANGO_SETTINGS_MODULE=settings
# moudle name
module: wsgi
# path to log
daemonize: /var/www/site1.ru/logs/uwsgi.log
max-requests: 5000
buffer-size: 32768
harakiri: 30
reload-mercy: 8
master: 1
no-orphans: 1
# touch this file for restart uwsgi daemon
touch-reload: /var/www/site1.ru/uwsgi
Создадим wsgi.py
# vi /var/www/site1.ru/wsgi.py
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Запустим uWSGI
# uwsgi -y /var/www/site1.ru/conf/uwsgi.yaml
[uWSGI] getting YAML configuration from /var/www/site1.ru/conf/uwsgi.yaml
Для повторного запуска можно прописать данную команду в init скрипт или cron
Перезапустим nginx
# /etc/init.d/nginx restart
Restarting nginx: nginx.