Поиск по сайту:

Как использовать PostgreSQL с вашим приложением Django в Ubuntu 14.04


Введение

Django — это гибкая среда для быстрого создания приложений Python. По умолчанию приложения Django настроены на хранение данных в облегченном файле базы данных SQLite. Хотя это хорошо работает при некоторых нагрузках, более традиционная СУБД может повысить производительность в производственной среде.

В этом руководстве мы покажем, как установить и настроить PostgreSQL для использования с вашими приложениями Django. Мы установим необходимое программное обеспечение, создадим учетные данные базы данных для нашего приложения, а затем запустим и настроим новый проект Django для использования этого бэкэнда.

Предпосылки

Для начала вам понадобится чистый экземпляр сервера Ubuntu 14.04 с настроенным пользователем без полномочий root. Пользователь без полномочий root должен иметь привилегии sudo. Узнайте, как это сделать, следуя нашему руководству по первоначальной настройке сервера.

Когда будете готовы продолжить, читайте дальше.

Установите компоненты из репозиториев Ubuntu

Нашим первым шагом будет установка всех необходимых нам частей из репозиториев. Мы установим pip, менеджер пакетов Python, чтобы установить и управлять нашими компонентами Python. Мы также установим программное обеспечение базы данных и связанные библиотеки, необходимые для взаимодействия с ними.

Следующие команды apt доставят вам нужные пакеты:

sudo apt-get update
sudo apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib

Закончив установку, мы можем перейти к созданию нашей базы данных и пользователя базы данных.

Создайте базу данных и пользователя базы данных

По умолчанию Postgres использует схему аутентификации, называемую «одноранговой аутентификацией» для локальных подключений. По сути, это означает, что если имя пользователя операционной системы совпадает с действительным именем пользователя Postgres, этот пользователь может войти в систему без дополнительной аутентификации.

Во время установки Postgres был создан пользователь операционной системы с именем postgres, соответствующий пользователю-администратору postgres PostgreSQL. Нам нужно изменить этого пользователя для выполнения административных задач:

sudo su - postgres

Теперь вы должны быть в сеансе оболочки для пользователя postgres. Войдите в сеанс Postgres, набрав:

psql

Сначала мы создадим базу данных для нашего проекта Django. Каждый проект должен иметь свою изолированную базу данных из соображений безопасности. В этом руководстве мы будем называть нашу базу данных myproject, но всегда лучше выбрать что-то более описательное:

CREATE DATABASE myproject;

Не забудьте заканчивать все команды в приглашении SQL точкой с запятой.

Далее мы создадим пользователя базы данных, которого мы будем использовать для подключения и взаимодействия с базой данных. Установите надежный и безопасный пароль:

CREATE USER myprojectuser WITH PASSWORD 'password';

После этого мы изменим несколько параметров подключения для только что созданного пользователя. Это ускорит операции с базой данных, так что правильные значения не нужно запрашивать и устанавливать каждый раз при установлении соединения.

Мы устанавливаем кодировку по умолчанию на UTF-8, которую ожидает Django. Мы также устанавливаем схему изоляции транзакций по умолчанию на «чтение зафиксированных», что блокирует чтение из незафиксированных транзакций. Наконец, мы устанавливаем часовой пояс. По умолчанию наши проекты Django будут настроены на использование UTC :

ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myprojectuser SET timezone TO 'UTC';

Теперь все, что нам нужно сделать, это предоставить пользователю нашей базы данных права доступа к базе данных, которую мы создали:

GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

Закройте приглашение SQL, чтобы вернуться в сеанс оболочки пользователя postgres:

\q

Выйдите из сеанса оболочки пользователя postgres, чтобы вернуться к сеансу оболочки вашего обычного пользователя:

exit

Установите Django в виртуальной среде

Теперь, когда наша база данных настроена, мы можем установить Django. Для большей гибкости мы установим Django и все его зависимости в виртуальной среде Python.

Вы можете получить пакет virtualenv, который позволяет создавать эти среды, набрав:

sudo pip install virtualenv

Создайте каталог для хранения вашего проекта Django. Затем перейдите в каталог:

mkdir ~/myproject
cd ~/myproject

Мы можем создать виртуальную среду для хранения требований Python нашего проекта Django, набрав:

virtualenv myprojectenv

Это установит локальную копию Python и pip в каталог с именем myprojectenv в каталоге вашего проекта.

Прежде чем устанавливать приложения в виртуальной среде, нам необходимо ее активировать. Вы можете сделать это, набрав:

source myprojectenv/bin/activate

Ваше приглашение изменится, чтобы показать, что вы сейчас работаете в виртуальной среде. Это будет выглядеть примерно так: (myprojectenv)user@host:~/myproject$.

Как только ваша виртуальная среда активна, вы можете установить Django с помощью pip. Мы также установим пакет psycopg2, который позволит нам использовать настроенную нами базу данных:

pip install django psycopg2

Теперь мы можем запустить проект Django в нашем каталоге myproject. Это создаст дочерний каталог с тем же именем для хранения самого кода и создаст сценарий управления в текущем каталоге. Обязательно добавьте точку в конце команды, чтобы она была настроена правильно:

django-admin.py startproject myproject .

Настройте параметры базы данных Django.

Теперь, когда у нас есть проект, нам нужно настроить его для использования созданной нами базы данных.

Откройте основной файл настроек проекта Django, расположенный в каталоге дочернего проекта:

nano ~/myproject/myproject/settings.py

В нижней части файла вы увидите раздел DATABASES, который выглядит следующим образом:

. . .

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

. . .

В настоящее время он настроен на использование SQLite в качестве базы данных. Нам нужно изменить это, чтобы вместо этого использовалась наша база данных PostgreSQL.

Во-первых, измените движок, чтобы он использовал бэкенд postgresql_psycopg2 вместо бэкенда sqlite3. В качестве NAME используйте имя вашей базы данных (в нашем примере myproject). Нам также необходимо добавить учетные данные для входа. Нам нужны имя пользователя, пароль и хост для подключения. Мы добавим и оставим пустым параметр порта, чтобы было выбрано значение по умолчанию:

. . .

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'myproject',
        'USER': 'myprojectuser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

. . .

Когда вы закончите, сохраните и закройте файл.

Перенесите базу данных и протестируйте свой проект

Теперь, когда настройки Django настроены, мы можем перенести наши структуры данных в нашу базу данных и протестировать сервер.

Мы можем начать с создания и применения миграций к нашей базе данных. Поскольку у нас пока нет фактических данных, это просто установит исходную структуру базы данных:

cd ~/myproject
python manage.py makemigrations
python manage.py migrate

После создания структуры базы данных мы можем создать административную учетную запись, набрав:

python manage.py createsuperuser

Вам будет предложено выбрать имя пользователя, указать адрес электронной почты, а также выбрать и подтвердить пароль для учетной записи.

После того, как вы настроили учетную запись администратора, вы можете проверить правильность работы вашей базы данных, запустив сервер разработки Django:

python manage.py runserver 0.0.0.0:8000

В веб-браузере перейдите на доменное имя или IP-адрес вашего сервера, а затем :8000, чтобы перейти на корневую страницу Django по умолчанию:

http://server_domain_or_IP:8000

Вы должны увидеть индексную страницу по умолчанию:

Добавьте /admin в конец URL-адреса, и вы сможете получить доступ к экрану входа в интерфейс администратора:

Введите имя пользователя и пароль, которые вы только что создали, с помощью команды createsuperuser. После этого вы попадете в интерфейс администратора:

Когда вы закончите расследование, вы можете остановить сервер разработки, нажав CTRL-C в окне терминала.

Получив доступ к интерфейсу администратора, мы подтвердили, что в нашей базе данных хранится информация о нашей учетной записи пользователя и что к ней можно получить соответствующий доступ.

Заключение

В этом руководстве мы продемонстрировали, как установить и настроить PostgreSQL в качестве серверной базы данных для проекта Django. Хотя SQLite может легко справляться с нагрузкой во время разработки и легкого производственного использования, большинство проектов выигрывают от внедрения более полнофункциональной СУБД.