Django + PostgreSQL за 8 шагов
Автор: urslan
Дата: 17 мая 2016
Источник: Django + PostgreSQL за 8 шагов
На ночь глядя решился написать гайд по установке СУБД PostgreSQL для использования вместе с Django.
Хотя в мануалах Django и рекомендуется использовать PostgreSQL, но среди разработчиков бытует мнение, что MySQL гораздо проще для начинающего разработчика.
Я с этим мнением не согласен. И попытаюсь Вам это доказать.
За 8 простых шагов я покажу как установить PostgreSQL в Ubuntu 14.04 LTS и настроить Django для работы с ним.
Шаг 1
Ставим сам сервер PostgreSQL и библиотеку разработчика (она пригодится нам при установке бэкэнда)
$ sudo apt-get install postgresql postgresql-server-dev-9.3
Если вы решите использовать более свежую Ubuntu 16.04 LTS, то PostgreSQL там будет уже версии 9.5.
$ sudo apt-get install postgresql postgresql-server-dev-9.5
Шаг 2
Открываем консоль PostgreSQL
$ sudo -u postgres psql postgres
Шаг 3
Задаем пароль администратора БД
\password postgres
Шаг 4
Создаем и настраиваем пользователя при помощи которого будем соединяться с базой данных из Django (ну очень плохая практика все делать через ... суперпользователя). Заодно указываем значения по умолчанию для кодировки, уровня изоляции транзакций и временного пояса.
CREATE USER user_name WITH PASSWORD 'password';
ALTER ROLE user_name SET CLIENT_ENCODING TO 'utf8';
ALTER ROLE user_name SET DEFAULT_TRANSACTION_ISOLATION TO 'READ COMMITED';
ALTER ROLE user_name SET TIMEZONE TO 'UTC';
Временной пояс можно указать свой, согласно тому, который вы прописываете в settings.py проекта. А про страшное определение уровень изоляции транзакций, если оно вам не знакомо, лучше все таки прочитать из учебника по SQL - пригодится.
Шаг 5
Создаем базу для нашего проекта
CREATE DATABASE django_db OWNER user_name;
Шаг 6
Выходим из консоли
\q
Шаг 7
Устанавливаем бэкэнд для PostgreSQL
$ apt-get install python-psycopg2
Шаг 8
Последний наш шаг - настроить раздел DATABASES конфигурационного файла проекта settings.py
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'django_db',
'USER' : 'user_name',
'PASSWORD' : 'password',
'HOST' : '127.0.0.1',
'PORT' : '5432',
'OPTIONS': {'connect_timeout': 3}
На этом все!
Дальше все как обычно:
- делаем миграцию ./manage.py migrate,
- создаем суперпользователя ./manage.py createsuperuser
- и запускаем сервер ./manage runserver.
Если у вас настроен SSH на сервере, то можно еще научить pgAdmin с локальной машины управлять удаленным сервером PostgreSQL. Для этого мы можем создать ssh-тунель командой ssh -fNq -L 5555:localhost:5432 user@domain.com.
Теперь можно из локального pgAdmin соединяться с удаленной БД по адресу localhost:5555