Меню Рубрики

Установка postgresql для django

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

Введение

Django – это известный гибкий фреймворк, который используется для создания приложений на языке программирования Python. Обычно (по умолчанию) приложения на Django используют в качестве хранилища для своих файлов базу данных (БД) SQLite, которая отличается легковесностью и простотой. Несмотря на то, что иногда подобная связка работает вполне неплохо, для увеличения производительности рекомендуется использовать более традиционную систему управления базами данных (СУБД), к примеру, PostgreSQL.

Из данного руководства вы узнаете, как установить и настроить СУБД PostgreSQL для работы с приложением на Django. Здесь будут описаны все этапы: от установки необходимого программного обеспечения и создания учетных данных БД до запуска и настройки нового Django-приложения.

Требования

Перед тем, как приступить к установке, убедитесь, что у вас есть новый сервер, на котором установлена операционная система (ОС) Ubuntu 16.04, и создан новый пользователь (не суперпользователь), который может выполнять команды sudo.

Теперь авторизуйтесь в качестве этого пользователя и проступите к выполнению следующих инструкций.

Устанавливаем компоненты

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

Версии Python 2 и Python 3 имеют немного разные пакеты, поэтому ниже выберите команды, соответствующие той версии Python, которая используется в вашем проекте.

Если вы используете Python 2, введите:

А если вы используете Python 3, выполните следующие команды:

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

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

По умолчанию для локальных соединений PostgreSQL использует схему авторизации, которая называется “peer authentication” (можно перевести как «одноранговая авторизация»). Подобная схема позволяет провести авторизацию (без дальнейшей аутентификации) в случае, если имя пользователя ОС совпадает с именем действующего пользователя PostgreSQL.

Во время установки PostgreSQL создается пользователь ОС с именем postgres, которое соответствует имени администратора PostgreSQL. При помощи этого пользователя вы сможете выполнять административные задачи. Для того, чтобы авторизоваться под ним, вам необходимо выполнить команду sudo с ключом -u.

Начните сессию в PostgreSQL, используя команду:

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

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

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

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

Установите UTF-8 в качестве кодировки по умолчанию (это необходимо для Django). Уровень изолированности транзакций нужно по умолчанию установить как “read committed” (чтение фиксированных данных) – этот уровень обеспечивает защиту от чернового чтения. Не забудьте про временную зону: изначально проекты на Django имеют установку UTC. Чтобы выполнить все изменения, нужно ввести следующие команды:

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

Теперь выйдите из командной строки SQL, возвратившись к postgres сессии пользователя:

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

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

Если вы используете Python 2, тогда используйте эту команду:

Если используете Python 3, то вам нужно ввести следующую строку:

Создайте новую директорию, в которой будет храниться ваш проект на Django, и перейдите в нее:

Затем создайте виртуальное окружение, где будут храниться требования (“requirements”) Python, касающиеся вашего проекта на Django:

После этого в директории myprojectenv (внутри директории вашего проекта) будут установлены локальная копия Python и система управления пакетами pip.

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

По изменившемуся виду командной строки вы сможете понять, что теперь вы работаете в виртуальном окружении. Она будет выглядеть примерно так (myprojectenv)user@host:

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

Примечание.
Вне зависимости от того, какую версию Python вы используете, когда виртуальное окружение включено, вам нужно использовать команду pip (а не pip3).

Читайте также:  Установка f3r на жигули

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

Настраиваем базу данных

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

Для этого нужно открыть файл с основными настройками проекта на Django, который находится в дочерней директории проекта:

Ближе к концу файла вы увидите секцию DATABASES, которая выглядит примерно так:

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

Во-первых, измените бэкэнд базы данных (графа “engine”) так, чтобы вместо sqlite3 использовался postgresql_psycopg2. Далее в качестве используемой базы данных (графа “NAME”) пропишите название своей базы данных (в данном случае myproject). Также необходимо добавить учетные данные для входа в систему: понадобится имя пользователя, пароль и хост для подключения (графы “USER”, “PASSWORD”, “HOST”). Добавьте и графу, касающуюся порта (“PORT”), однако прописывать в ней ничего не нужно – в этом случае это будет обозначать настройку по умолчанию. В итоге блок с DATABASES должен выглядеть так:

После всех необходимых изменений сохраните и закройте файл.

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

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

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

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

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

Если вы используете UFW Firewall, то крайне важно перед тестированием проекта открыть необходимый порт:

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

Для того, чтобы попасть на приветственную страницу Django, введите в браузере адрес вашего сайта либо ip-адрес, дописав в конце :8000 (номер порта).

http:// доменное_имя_или_IP-адрес :8000

Вам должна высветиться начальная страница Django:

Добавьте в конце адресной строки /admin, и вы попадете на страницу входа в административную панель:

Введите имя пользователя и пароль, которые вы указали при использовании команды createsuperuser, и вы попадете в административную панель:

После того, как вы выполнили все необходимые проверки, остановите сервер разработки, нажав Ctrl-C в консоли.

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

Заключение

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

источник

Предложение от 8host.com

Установка и настройка Django с Postgres, Nginx и Gunicorn

Предварительные условия

Предполагается, что VPS с Debian 7 или подобным дистрибутивом Linux (например, Ubuntu) уже установлен.

Для удобства данное руководство разделено на 2 части. Первая часть (разделы 1 – 6) охватывает только установку. Продвинутые пользователи Django, которым необходимы только инструкции по установке остального ПО, могут сразу же переходить к разделу 6. Пользователи, которым необходимы советы по настройке, могут переходить к разделу 7.

1: Обновление пакетов

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

sudo apt-get update
sudo apt-get upgrade

Первая команда загружает все обновления для пакетов, управляемых командой apt-get. Вторая команда устанавливает загруженные обновления. Если даные команды обнаружат новые доступные версии пакетов, будет выведено извещение, предлагающее указать, нужно ли устанавливать обновления. Нажмите Y и клавишу Enter при появлении такого извещения.

2: Установка и создание Virtualenv

Установить инструмент virtualenv очень просто. Для этого запустите приведенную ниже команду:

sudo apt-get install python-virtualenv

Готово! Теперь нужно создать virtualenv (или виртуальную среду), чтобы разместить и постоянно хранить в ней Django и другие пакеты Python:

Обратите внимание: в каталоге /opt был создан новый каталог по имени myenv. Согласно данному руководству, в этом каталоге и нужно развернуть виртуальную среду. Чтобы развернуть среду в другом каталоге, не забудьте заменить /opt/myenv путем к этому каталогу. Некоторые разработчики создают каталог по имени webapps в root-каталоге сервера.

3: Установка Django

Теперь нужно активировать virtualenv, чтобы пакеты Python были установлены не общесистемно, а изолированно, внутри среды. Итак, чтобы активировать virtualenv:

Читайте также:  Установка варочной панели нефф

Обратите внимание, имя каталога, содержащего виртуальную среду (myenv) внесено в начало терминальной строки. Это помогает легко определить, активирована ли virtualenv и какая именно среда является текущей (в случае, если на VPS существует несколько virtualenv).

Теперь можно приступить к установке Django. Для этого используйте pip, менеджер пакетов Python (аналог easy_install). Запустите команду:

Django установлен внутри активной virtualenv. Теперь нужно запустить сервер баз данных.

4: Установка PostgreSQL

Большинство пользователей Django предпочитают использовать PostgreSQL в качестве сервера баз данных. Он намного более устойчивый к ошибкам, чем MySQL; кроме того, Django ORM работает с PostgreSQL намного лучше, чем с MySQL, MSSQL и т.п.

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

Данная команда дезактивирует текущую активную виртуальную среду. Теперь необходимо установить зависимости PostgreSQL (для его работы с Django) с помощью следующей команды:

sudo apt-get install libpq-dev python-dev

Установив все необходимые зависимости, установите PostgreSQL:

sudo apt-get install postgresql postgresql-contrib

Теперь PostgreSQL установлен и готов к работе.

5: Установка NGINX

NGINX – это невероятно быстрый и легкий веб-сервер. В данном руководстве он используется для обслуживания статических файлов приложения Django. Чтобы установить NGINX, выполните следующую команду:

sudo apt-get install nginx

Обратите внимание: NGINX не запускается автоматически, его нужно будет запустить вручную; не забудьте вернуться к этому перед настройкой VPS.

6: Установка Gunicorn

Gunicorn – это очень мощный HTTP-сервер Python WSGI. Поскольку Gunicorn является пакетом Python, необходимо активировать виртуальную среду, прежде чем его устанавливать. Это делается так:

Убедитесь в том, что «myenv» внесен в начало терминальной строки. Активировав виртуальную среду, запустите команду:

Теперь Gunicorn установлен внутри virtualenv.

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

7: Настройка PostgreSQL

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

Сейчас строка терминала должна вывести «postgres@ сервер ». Если это так, запустите следующую команду, которая создаст базу данных:

Это создаст базу даных под названием mydb (если в команду не были внесены изменения). Конечно, базу данных можно назвать как угодно. Теперь создайте пользователя базы данных с помощью следующей команды:

На данном этапе появятся 6 извещений. Первое запрашивает имя нового пользователя (выберите любое удобное имя). Следующие два извещения запросят установить и подтвердить пароль для нового пользователя. В последних трех извещениях нужно просто ввести «n» и нажать Enter. Это гарантирует, что новый пользователь имеет доступ только к тем файлам, к которым ему даете доступ вы. Теперь активируйте интерфейс командной строки PostgreSQL:

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

GRANT ALL PRIVILEGES ON DATABASE mydb TO имя_пользователя ;

Итак, база данных PostgreSQL и пользователь, имеющий доступ к этой БД, созданы. Теперь нужно установить Django и настроить его, чтобы он использовал эту базу данных.

8: Создание проекта Django

На данном этапе необходим тестовый проект Django, который покажет, все ли работает должным образом. Перейдите из текущего каталога в каталог virtualenv (в данном случае это /opt/myenv):

Теперь убедитесь в том, что виртуальная среда активна. Для этого можно запустить следующую команду:

Теперь, когда виртуальная среда активна, запустите следующую команду, которая создаст новый проект Django:

django-admin.py startproject myproject

В каталоге виртуальной среды должен появиться новый каталог по имени myproject. Именно в нем хранятся файлы нового проекта Django.

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

Перейдите в каталог myproject, а затем в его подкаталог с таким же именем:

В текстовом редакторе откройте файл settings.py:

Найдите настройки БД и отредактируйте их следующим образом:

DATABASES = <
‘default’: <
‘ENGINE’: ‘django.db.backends.postgresql_psycopg2’, # Add ‘postgresql_psycopg2’, ‘mysql’, ‘sqlite3’ or ‘oracle’.
‘NAME’: ‘mydb’, # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
‘USER’: ‘myuser’,
‘PASSWORD’: ‘password’,
‘HOST’: ‘localhost’, # Empty for localhost through domain sockets or ‘127.0.0.1’ for localhost through TCP.
‘PORT’: », # Set to empty string for default.
>
>

Сохраните изменения и закройте файл. Теперь поднимитесь на каталог выше, в главный каталог проекта Django (/opt/myenv/myproject).

Если виртуальная среда не была активирована, активируйте ее.

Активировав virtualenv, запустите следующую команду, чтобы Django мог добавить начальные конфигурации и другие таблицы в базу данных:

Выведенный результат покажет список установленных таблиц, а затем спросит, нужно ли создать суперпользователя (не является обязательным и зависит от того, что будет использоваться: система аутентификации Джанго или Django admin).

Читайте также:  Установка планшета в приборную панель

9: Настройка Gunicorn

Настройка Gunicorn сильно зависит от потребностей приложения, потому данное руководство содержит лишь краткое описание процесса запуска Gunicorn и некоторые его общие настройки.

Для начала нужно рассмотреть запуск сервера Gunicorn с настройками по умолчанию. Для этого используйте команду:

gunicorn_django —bind домен_или_ip .com:8001

Не забудьте заменить фразу «домен_или_ip» своим доменным или IP-адресом VPS. Теперь откройте веб-браузер и посетите домен_или_ip.com:8001. Должен появиться экран приветствия Django.

Если внимательно посмотреть на выведенный предыдущей командой результат, можно заметить, что запущен только один процесс Gunicorn. Но что делать, если нужно запустить широкомасштабное приложение на большом сервере? Все, что нужно – это немного изменить команду:

gunicorn_django —workers=3 —bind домен_или_ip .com:8001

Как видите, теперь было загружено 3 процесса. Изменяя значение –workers, можно запустить любое количество процессов.

Поскольку команда, запускающая Gunicorn, была выполнена как root, Gunicorn сейчас запущен как root. Чтобы изменить это, нужно снова немного отредактировать команду:

gunicorn_django —workers=3 —user=nobody —bind домен_или_ip .com:8001

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

Откройте конфигурационный файл с помощью текстового редактора (в приведенном ниже примере используется nano):

sudo nano gunicorn_config.py

Внесите следующий блок кода:

command = ‘/opt/myenv/bin/gunicorn’
pythonpath = ‘/opt/myenv/myproject’
bind = ‘127.0.0.1:8001’
workers = 3
user = nobody

Сохраните и закройте файл. Данные опции выполняют следующее: устанавливают путь к исполнительным файлам gunicorn, домен и порт для соединения с Gunicorn,вносят каталог проекта в путь Python, определяют количество процессов gunicorn и пользователя, с помощью которого будет работать Gunicorn.

Теперь для запуска сервера понадобится более длинная команда. Введите в командную строку следующее:

/opt/myenv/bin/gunicorn -c /opt/myenv/gunicorn_config.py myproject.wsgi

Как можно заметить, в данной команде был использован флаг –с. Он указывает gunicorn на существующий конфигурационный файл, который нужно использовать (задается после флага). Наконец, нужно передать ссылку на файл WSGI точечной нотации Python, чтобы указать Gunicorn, где находится файл WSGI.

Запуская Gunicorn подобным образом, нужно либо включить Gunicorn в отдельной screen-сессии, либо перевести процесс в фоновый режим, нажав ctrl + z, затем bg и enter сразу после запуска команды Gunicorn. Это переведет процесс в фоновый режим, что означает, что процесс будет работать даже после завершения текущей сессии. Также из-за этого возникает небольшая проблема — необходимость запускать или перезапускать Gunicorn вручную после перезагрузки или сбоя VPS. Чтобы решить эту проблему, многие используют демон supervisord для управления Gunicorn.

Конечно, это далеко не исчерпывающий список опций конфигураций для Gunicorn. Пожалуйста, прочитайте документацию Gunicorn, которую можно найти по ссылке gunicorn.org, чтобы получить больше информации по данной теме.

10: Настройка NGINX

Итак, для начала нужно запустить NGINX:

Поскольку NGINX будет обслуживать статические файлы, теперь нужно определить, где именно эти файлы будут храниться. Откройте файл settings.py проекта Django и отредактируйте строку STATIC_ROOT следующим образом:

Конечно, данные файлы можно расположить где угодно; но для поддержания чистоты рекомендуется разместить их вне папки проекта Django, но внутри каталога виртуальной среды.

Указав местонахождение статических файлов, можно переходить к настройке NGINX для обработки этих файлов. Откройте новый конфигурационный файл NGINX с помощью следующей команды (в случае необходимости замените «nano» другим редактором):

sudo nano /etc/nginx/sites-available/myproject

Конечно, файл можно назвать как угодно, но в целом таким файлам принято давать название, связанное с сайтом. Внесите в файл следующее:

server <
server_name домен_или_ip .com;
access_log off;
location /static/ <
alias /opt/myenv/static/;
>
location / <
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P ‘CP=»ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV»‘;
>
>

Сохраните изменения и закройте файл. Приведенный выше блок кода говорит NGINX обслуживать все, что запрашивается на домен_или_ip.com/static/ из статического каталога проекта Django. Все запрашиваемое на домен_или_ip.com, будет проксировано на локальный хост, порт 8001 (на котором запущен Gunicorn). Без этого IP-адресом каждого запроса будет 127.0.0.1, а именем хоста будет имя хоста данного VPS.

Теперь нужно установить символьную ссылку, указывающую на данный конфигурационный файл, в каталог /etc/nginx/sites-enabled. Таким образом NGINX определяет, активен ли сайт. Перейдите в каталог /etc/nginx/sites-enabled:

В данном каталоге запустите:

sudo ln -s ../sites-available/myproject

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

Кроме того, нужно удалить блок nginx по умолчанию:

Теперь нужно перезапустить NGINX, чтобы внесенные изменения вступили в силу. Для этого запустите:

sudo service nginx restart

Готово! Теперь Django установлен и работает с PostgreSQL, веб-приложение доступно в сети, NGINX обрабатывает статические файлы, а Gunicorn используется как сервер приложения. Задать вопросы и получить ценные советы по данной теме можно в комментариях к статье.

источник

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

Adblock
detector