Блог на Django #32: Установка PostgreSQL
Сейчас для проекта используется SQLite. Это необходимо для процесса разработки. Но для развертывания потребуется более мощная база данных: PostgreSQL, MySQL или Oracle. Сделаем выбор в пользу первой, чтобы получить ее функции полнотекстового поиска.
Если вы используете Linux, установите компоненты, необходимые для работы PostgreSQL следующим образом:
sudo apt-get install libpq-dev python-dev
Затем установите саму базу данных:
sudo apt-get install postgresql postgresql-contrib
Если у вас macOS или Windows, загрузите PostgreSQL с сайта https://www.postgresql.org/download/ и установите.
Также потребуется адаптер PostgreSQL под названием Psycopg2 для Python. Эта команда установит его:
pip install psycopg2==2.7.7
Создадим базу данных PostgreSQL. Откройте консоль и введите следующие команды:
su postgres createuser -dP blog
Дальше нужно будет ввести пароль для нового пользователя. Введите его и создайте базу данных blog , сделав ее владельцем того пользователя, что только что был создан с помощью команды:
createdb -E utf8 -U blog blog
Отредактируйте файл settings.py и измените настройку DATABASES , чтобы она выглядела вот так:
DATABASES = < 'default': < 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'blog', 'USER': 'blog', 'PASSWORD': '*****', # пароль >>
Замените данные выше названием новой базы данных и данными нового пользователя. Новая база данных пустая. Запустите следующую команду, чтобы применить все миграции базы данных:
python manage.py migrate
Наконец, создайте нового суперпользователя:
python manage.py createsuperuser
Можете запустить сервер разработки и перейти на административный сайт https://127.0.0.1:8000/admin/ с помощью новых данных.
Поскольку база данных поменялась, постов здесь нет. Заполните ее с помощью базовых постов так, чтобы можно было осуществлять поиск.
- ТЕГИ
- Django
- Создание блога на Django 2.0
Руководство. Развертывание приложения Django с помощь Службы приложений и Гибкого сервера Базы данных Azure для PostgreSQL

Область применения: гибкий сервер Базы данных Azure для PostgreSQL
В этом руководстве описано, как развернуть приложение Django в Azure с помощью Служб приложений и База данных Azure для PostgreSQL — гибкий сервер в виртуальной сети.
Предварительные требования
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Для этой статьи требуется запустить локально Azure CLI версии 2.0 или более поздней. Чтобы узнать, какая установлена версия, выполните команду az —version . Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Вам потребуется выполнить вход в учетную запись с помощью команды az login. Запишите свойство id из выходных данных команды для соответствующего имени подписки.
az login
Если вы используете несколько подписок, выберите соответствующую, в которой за ресурс будет взиматься плата. Выберите конкретный идентификатор подписки вашей учетной записи, выполнив команду az account set. Подставьте свойство subscription ID из выходных данных az login для своей подписки в заполнитель для идентификатора подписки.
az account set --subscription
Клонирование или скачивание примера приложения
Клонируйте репозиторий примера.
git clone https://github.com/Azure-Samples/djangoapp
Затем перейдите в эту папку:
cd djangoapp
Откройте страницу https://github.com/Azure-Samples/djangoapp, затем выберите действие Clone (Клонировать) и Download ZIP (Скачать ZIP-файл).
Распакуйте ZIP-файл в папку с именем djangoapp.
Затем откройте окно терминала в этой папке djangoapp.
Пример djangoapp содержит управляемое данными приложение Django для опросов, которое вы можете получить, выполнив инструкции по созданию первого приложения из документации по Django. Готовое приложение предоставляется здесь для удобства.
Пример также изменяется для использования в рабочей среде, такой как Служба приложений.
- Параметры рабочей среды находятся в файле azuresite/production.py. Сведения о разработке хранятся в файле azuresite/settings.py.
- Приложение использует параметры для работы в производственной среде, если для переменной среды DJANGO_ENV задано значение production. В учебнике эта переменная среды создается позже вместе с другими переменными, используемыми для настройки базы данных PostgreSQL.
Эти изменения связаны с настройкой Django для запуска в любой рабочей среде и не относятся к Службе приложений. Дополнительные сведения см. в контрольном списке развертывания Django.
Создание гибкого сервера PostgreSQL в новой виртуальной сети
Создайте гибкий сервер с частным доступом и базу данных в виртуальной сети с помощью следующей команды:
# Create Flexible server in a private virtual network (VNET) az postgres flexible-server create --resource-group myresourcegroup --vnet myvnet --location westus2
С помощью этой команды выполняются следующие действия (может занять несколько минут):
- Создайте группу ресурсов, если она еще не существует.
- Создает имя сервера, если оно не указано.
- Создайте виртуальную сеть для нового сервера postgreSQL, если вы решите сделать это после получения соответствующего запроса. Запишите имя виртуальной сети и имя подсети, которые созданы для этого сервера, так как веб-приложение нужно будет добавить в ту же виртуальную сеть.
- Создает имя администратора и пароль для сервера, если он не указан. Запишите имя пользователя и пароль, которые понадобятся на следующем шаге.
- Создайте базу данных postgres , которую можно использовать для разработки. Вы можете выполнить команду psql для подключения к базе данных, чтобы создать другую базу данных.
Если вы не указали пароль, запишите тот, который будет создан для вас автоматически. Если вы забудете пароль, вам придется сбросить его с помощью команды az postgres flexible-server update .
Развертывание кода в Службе приложений Azure
В этом разделе вы создадите узел приложения в приложении Службы приложений, подключите это приложение к базе данных Postgres, а затем развернете код на этом узле.
Создание веб-приложения Службы приложений в виртуальной сети
В терминале убедитесь, что вы находитесь в корне репозитория ( djangoapp ), в котором находится код приложения.
Создайте приложение Службы приложений (хост-процесс) с помощью команды az webapp up :
# Create a web app az webapp up --resource-group myresourcegroup --location westus2 --plan DjangoPostgres-tutorial-plan --sku B1 --name # Enable VNET integration for web app. # Replace and with the virtual network and subnet name that the flexible server is using. az webapp vnet-integration add -g myresourcegroup -n mywebapp --vnet --subnet # Configure database information as environment variables # Use the postgres server name , database name , username , password for the database created in the previous steps az webapp config appsettings set --settings DJANGO_ENV="production" DBHOST=".postgres.database.azure.com" DBNAME="postgres" DBUSER="" DBPASS=""
- Для аргумента —location используйте то же расположение, что и для базы данных в предыдущем разделе.
- Замените уникальным именем в Azure (конечная точка сервера — https://\.azurewebsites.net ). Для допускаются символы A — Z , 0 — 9 и — . Рекомендуется использовать сочетание названия компании и идентификатора приложения.
- Создается план службы приложенийDjangoPostgres-tutorial-plan ценовой категории «Базовый» (B1), если он еще не существует. Параметры —plan и —sku являются необязательными.
- Создается приложение Службы приложений, если оно еще не существует.
- Для приложения включается ведение журнала по умолчанию, если оно еще не включено.
- Передается репозиторий через развертывание на основе ZIP-файла с включенной автоматизацией сборки.
- Команда az webapp vnet-integration добавляет веб-приложение в ту виртуальную сеть, где расположен сервер postgres.
- Код приложения ожидает поиска сведений о базе данных во многих переменных среды. Чтобы задать в Службе приложений переменные среды, вы создаете параметры приложения с помощью команды az webapp config appsettings set.
Многие команды Azure CLI кэшируют общие параметры, такие как имя группы ресурсов и план службы приложений, в файл .azure/config. Поэтому не нужно указывать все эти параметры с помощью последующих команд. Например, чтобы повторно развернуть приложение после внесения изменений, можно просто еще раз запустить az webapp up без параметров.
Перенос базы данных Django
Перенос баз данных Django гарантирует, что схема в базе данных PostgreSQL в Azure соответствует схемам, описанным в вашем коде.
- Откройте в браузере сеанс SSH, перейдя по адресу https://.scm.azurewebsites.net/webssh/host и выполните вход с использованием учетных данных учетной записи Azure (а не учетных данных сервера базы данных).
- Выполните следующие команды в сеансе SSH (можно вставить команды с помощью сочетания клавиш CTRL+SHIFT+V):
cd site/wwwroot # Activate default virtual environment in App Service container source /antenv/bin/activate # Install packages pip install -r requirements.txt # Run database migrations python manage.py migrate # Create the super user (follow prompts) python manage.py createsuperuser
Создание вопроса опроса в приложении
- В браузере откройте URL-адрес http://.azurewebsites.net. В приложении должно отобразиться сообщение No polls are available (Доступных опросов нет), так как в базе данных нет отдельных опросов.
- Перейдите к http://.azurewebsites.net/admin. Выполните вход с использованием учетных данных суперпользователя из предыдущего раздела ( root и postgres1 ). В разделе Polls (Опросы) щелкните Add (Добавить) возле поля Questions (Вопросы) и создайте вопрос с несколькими вариантами ответа.
- Еще раз перейдите по адресу http://.azurewebsites.net/, чтобы убедиться, что пользователь видит вопросы. Ответьте на вопросы произвольным образом, чтобы наполнить базу данных.
Поздравляем! Вы запустили веб-приложение Python Django в Службе приложений Azure для Linux с активной базой данных Postgres.
Служба приложений определяет проекты Django по файлу wsgi.py в каждой подпапке, которая создается в manage.py startproject по умолчанию. Обнаружив такой файл, Служба приложений загружает веб-приложение Django. Дополнительные сведения см. в статье о настройке встроенного образа Python.
Внесение изменений в код и его повторное развертывание
В этом разделе вы внесете локальные изменения в приложение и повторно развернете код в Службе приложений. В процессе вы настроите виртуальную среду Python, которая поддерживает текущую работу.
Локальный запуск приложения
Выполните следующие команды в окне терминала. При создании суперпользователя обязательно следуйте указаниям на экране:
# Configure the Python virtual environment python3 -m venv venv source venv/bin/activate # Install packages pip install -r requirements.txt # Run Django migrations python manage.py migrate # Create Django superuser (follow prompts) python manage.py createsuperuser # Run the dev server python manage.py runserver
После полной загрузки веб-приложения сервер разработки Django предоставит URL-адрес локального приложения в сообщении Starting development server at http://127.0.0.1:8000/. Quit the server with CTRL-BREAK. (Запуск сервера разработки по адресу http://127.0.0.1:8000/. Выйдите из сервера с помощью клавиш CTRL+BREAK).

Локально протестируйте приложение, выполнив следующие действия:
- Перейдите в браузере по адресу http://localhost:8000. Должно отобразиться сообщение No polls are available (Доступных опросов нет).
- Перейдите к http://localhost:8000/admin и войдите под именем администратора, который был создан ранее. В разделе Polls (Опросы) снова щелкните Add (Добавить) возле поля Questions (Вопросы) и создайте вопрос с несколькими вариантами ответа.
- Снова перейдите по адресу http://localhost:8000 и ответьте на вопрос, чтобы проверить приложение.
- Остановите сервер Django, нажав клавиши CTRL+C.
При локальном запуске приложение использует локальную базу данных Sqlite3 и не влияет на рабочую базу данных. При необходимости можно также использовать локальную базу данных PostgreSQL, чтобы лучше имитировать рабочую среду.
Обновление приложения
В файле polls/models.py найдите строку, которая начинается с choice_text и измените значение параметра max_length на 100:
# Find this line of code and set max_length to 100 instead of 200 choice_text = models.CharField(max_length=100)
Так как вы изменили модель данных, создайте миграцию Django и перенесите базу данных:
python manage.py makemigrations python manage.py migrate
Снова запустите сервер разработки с python manage.py runserver и протестируйте приложение по адресу http://localhost:8000/admin:
Снова остановите веб-сервер Django с помощью комбинации клавиш CTRL+C.
Повторное развертывание кода в Azure
Выполните следующую команду в корне репозитория:
az webapp up
Эта команда использует параметры, кэшированные в файле .azure/config. Так как Служба приложений обнаружит, что приложение уже существует, она просто повторно развернет в нем код.
Повторное выполнение миграций в Azure
Поскольку вы внесли изменения в модель данных, все миграции базы данных нужно повторить в Службе приложений.
Снова откройте в браузере сеанс SSH, перейдя по адресу https://.scm.azurewebsites.net/webssh/host. Затем выполните следующие команды:
cd site/wwwroot # Activate default virtual environment in App Service container source /antenv/bin/activate # Run database migrations python manage.py migrate
Проверка приложения в рабочей среде
Перейдите по адресу http://.azurewebsites.net и снова проверьте приложение в рабочей среде. (Так как вы изменили только длину поля базы данных, это изменение заметно только при попытке ввести более длинный ответ при создании вопроса.)
Вы можете использовать django-storages для хранения статических ресурсов и ресурсов мультимедиа в хранилище Azure. Вы можете использовать Azure CDN для упаковки статических файлов в пакеты формата GZIP.
Управление приложением с помощью портала Azure
На портале Azure выполните поиск приложения по имени и выберите его.

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

Очистка ресурсов
Если вы хотите сохранить приложение или продолжить работу со следующим учебником, перейдите к дальнейшим действиям. В противном случае, чтобы избежать постоянных расходов, вы можете удалить группу ресурсов, созданную для этого учебника:
az group delete -g myresourcegroup
Эта команда использует имя группы ресурсов, кэшированное в файле .azure/config. При удалении группы ресурсов будут также освобождены и удалены все ресурсы, содержащиеся в ней.
Дальнейшие действия
Сведения о сопоставлении настраиваемого DNS-имени с вашим приложением:
Узнайте, как Служба приложений запускает приложение Python:
Руководство по PostgreSQL
PostgreSQL — это реляционная СУБД с открытым кодом и свободным распространением. База данных Postgre базируется на стандартном языке запросов SQL, а точнее, на его расширении — процедурном языке PL/pgSQL. PostgreSQL работает в системах Unix (FreeBSD и Linux: дистрибутивах Ubuntu, Debian, CentOS) и Windows.

В статье мы рассмотрим, как установить PostgreSQL на Ubuntu и выполнить настройку, а также как запустить PostgreSQL-сервер и использовать его с фреймворком Django.
PostgreSQL: установка и настройка на Ubuntu
Для установки PostgreSQL (install Ubuntu):
Обновите список пакетов:
sudo apt update
Модели
Для хранения данных в веб-приложении, как правило, применются базы данных. И фреймворк Django уже по умолчанию предоставляет удобный функционал для работы с различными системами баз данных.
Настройки подключения к базе данных
По умолчанию Django в качестве базы данных использует SQLite. Она очень проста в использовании и не требует запущенного сервера. Все файлы базы данных могут легко переноситься с одного компьютера на другой. Однако при необходимости мы можем использовать в Django большинство распространенных СУБД.
Для работы с базами данных в проекте Django в файле settings.py определен параметр DATABASES , который по умолчанию выглядит следующим образом:
DATABASES = < 'default': < 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', >>
Переменная DATABASES содержит набор конфигураций подключений к базам данных в виде словаря. Ключи в этом словаре — названия подключений. То есть мы можем определить кучу подключений. Но как минимум одно подключение должно быть определено в переменной DATABASES — подключение с именем default , которое представляет подключение по умолчанию.
Конфигурация каждого подключения может состоять из ряда параметров. По умолчанию указываются только два параметра. Параметр ENGINE указывает на используемый движок для доступа к БД. В данном случае это встроенный пакет django.db.backends.sqlite3 .
Второй параметр — NAME указывает на путь к базе данных. По умолчанию база данных называется db.sqlite3 . Для установки пути используется каталог из переменной BASE_DIR, которая задана в начале файла:
BASE_DIR = Path(__file__).resolve().parent.parent
По умолчанию BASE_DIR указывает на каталог, в котором находится папка проекта. И после первого запуска проекта в указанном каталоге по умолчанию будет создан файл db.sqlite3 , который собственно и будет использоваться в качестве базы данных.

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