Развертывание веб-приложений Django в облаке Azure с использованием PostgreSQL в качестве базы данных предоставляет масштабируемость, надежность и гибкость. Это руководство проведет вас через все этапы этого процесса, начиная с создания проекта Django и заканчивая настройкой CI/CD.
Обзор: Почему Azure и PostgreSQL для Django?
Azure предоставляет надежную инфраструктуру для размещения веб-приложений, а PostgreSQL – мощная и стабильная база данных с открытым исходным кодом. Совместное использование Azure и PostgreSQL обеспечивает следующие преимущества:
- Масштабируемость: Azure позволяет легко масштабировать ваше приложение в зависимости от нагрузки.
- Надежность: Azure обеспечивает высокую доступность и отказоустойчивость.
- Управляемая база данных: Azure Database for PostgreSQL предоставляет управляемый сервис, упрощающий администрирование базы данных.
- Интеграция: Azure App Service обеспечивает простую интеграцию с другими сервисами Azure.
Необходимые условия: Инструменты и учетные записи
Перед началом работы убедитесь, что у вас есть следующее:
- Учетная запись Azure: Необходима активная подписка Azure. Если у вас ее нет, можно создать бесплатную пробную версию.
- Python 3.8+: Установите Python 3.8 или более поздней версии на вашем компьютере.
- Pip: Менеджер пакетов Python, обычно поставляется вместе с Python.
- Git: Система контроля версий для управления кодом.
- Azure CLI: Интерфейс командной строки для управления ресурсами Azure.
- Azure DevOps (опционально): Для настройки CI/CD.
Создание базового Django проекта
Сначала создадим базовый Django проект. Откройте терминал и выполните следующие команды:
pip install django
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
Теперь настроим myapp/views.py
:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
"""Простое представление для отображения приветствия."""
return HttpResponse("Привет, мир! Это мое первое Django приложение в Azure.")
В myproject/urls.py
добавим URL для нашего представления:
from django.contrib import admin
from django.urls import include, path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
]
Настройка PostgreSQL в Azure
Создание базы данных PostgreSQL в Azure
- Войдите в портал Azure.
- Найдите «Azure Database for PostgreSQL servers» и создайте новый ресурс.
- Выберите гибкий сервер (Flexible Server).
- Укажите имя сервера, имя администратора, пароль, регион и другие параметры.
- Создайте базу данных с именем
mydatabase
.
Настройка правил брандмауэра для доступа к базе данных
После создания сервера PostgreSQL необходимо настроить правила брандмауэра, чтобы разрешить доступ к нему из Azure App Service и вашего локального компьютера (для отладки).
- Перейдите к созданному серверу PostgreSQL в портале Azure.
- Выберите «Безопасность подключения» -> «Правила брандмауэра».
- Добавьте IP-адрес вашего локального компьютера и разрешите доступ сервисам Azure.
Настройка параметров Django для подключения к PostgreSQL
Установите пакет psycopg2
для работы с PostgreSQL в Django:
pip install psycopg2-binary
Обновите файл myproject/settings.py
:
import os
import dj_database_url
DEBUG = os.environ.get('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = ['*'] # Измените это в production
DATABASES = {
'default': dj_database_url.config(
default=os.environ.get('DATABASE_URL')
)
}
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# Simplified static file serving.
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Установите whitenoise
:
pip install whitenoise
В myproject/settings.py
добавьте whitenoise.middleware.WhiteNoiseMiddleware
в MIDDLEWARE
:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Развертывание Django приложения в Azure App Service
Создание Azure App Service
- В портале Azure найдите «App Services» и создайте новый ресурс.
- Выберите имя, операционную систему (Linux), регион и план.
- Выберите план Premium или более высокий для лучшей производительности.
Настройка параметров приложения в Azure App Service
Перейдите в «Конфигурация» вашего App Service и добавьте следующие параметры:
DATABASE_URL
: Строка подключения к PostgreSQL. Получите её на портале Azure в разделе «Строки подключения» вашего сервера PostgreSQL.SECRET_KEY
: Секретный ключ Django. Сгенерируйте его с помощьюpython -c 'import secrets; print(secrets.token_hex())'
.DEBUG
: Установите значениеFalse
в production.ALLOWED_HOSTS
: Установите список допустимых хостов (например,your-app-name.azurewebsites.net
).
Развертывание кода Django в Azure App Service с помощью Git или Azure DevOps
Развертывание с помощью Git:
-
В App Service выберите «Центр развертывания» -> «Локальный Git».
-
Настройте учетные данные развертывания.
-
Добавьте удаленный репозиторий Git в ваш локальный репозиторий Django:
git remote add azure <URL_из_Центра_развертывания>
-
Запуште код в Azure:
git push azure master
Развертывание с помощью Azure DevOps:
Создайте конвейер Azure DevOps, который автоматически собирает и развертывает ваш код в Azure App Service.
Настройка Gunicorn для обслуживания статических файлов
Создайте файл Procfile
в корне вашего проекта Django:
web: gunicorn myproject.wsgi --log-file -
Закоммитьте Procfile
и запуште изменения в Azure.
В myproject/settings.py
добавьте:
import os
if not DEBUG:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Выполните сбор статики:
python manage.py collectstatic
Настройка CI/CD для Django приложения в Azure
Создание конвейера Azure DevOps для автоматического развертывания
- Создайте новый проект в Azure DevOps.
- Создайте новый конвейер (Pipeline).
- Выберите ваш репозиторий Git.
- Выберите шаблон «Azure App Service deployment».
- Укажите вашу подписку Azure и App Service.
Настройка автоматического тестирования и сборки
Добавьте шаги для запуска тестов Django в вашем конвейере. Например:
- script: |
python manage.py test
displayName: 'Run tests'
Автоматическое развертывание при изменениях в репозитории Git
Настройте триггеры в вашем конвейере, чтобы он запускался автоматически при каждом изменении в репозитории Git.
Мониторинг и отладка Django приложения в Azure
Использование Application Insights для мониторинга производительности
- В портале Azure найдите «Application Insights» и создайте новый ресурс.
- Подключите Application Insights к вашему App Service.
- Используйте Application Insights для мониторинга производительности приложения, количества запросов, времени ответа и других метрик.
Отладка приложения с использованием журналов Azure
Включите ведение журналов в вашем App Service. Просматривайте журналы в портале Azure или загружайте их для анализа.
Оптимизация производительности Django приложения в Azure
- Используйте кэширование (например, Redis) для уменьшения нагрузки на базу данных.
- Оптимизируйте запросы к базе данных.
- Используйте CDN для обслуживания статических файлов.
- Включите сжатие Gzip.
- Рассмотрите возможность использования Azure Cache for Redis.