Перенос проекта django на сервер linux

Обновлено: 01.07.2024

Развертывание Django с помощью Apache и mod_wsgi — проверенный и испытанный способ запуска Django в рабочую среду.

mod_wsgi — это модуль Apache, в котором может размещаться любое приложение Python WSGI, включая Django. Django будет работать с любой версией Apache, поддерживающей mod_wsgi.

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

Базовая конфигурация¶

Первый бит в строке WSGIScriptAlias ​​— это базовый путь URL-адреса, по которому вы хотите обслуживать свое приложение ( / указывает корневой URL-адрес), а второй — это расположение «файла WSGI» (см. ниже) в вашей системе. обычно внутри пакета вашего проекта ( mysite в этом примере). Это указывает Apache обслуживать любой запрос ниже заданного URL-адреса с помощью приложения WSGI, определенного в этом файле.

Если вы устанавливаете зависимости Python вашего проекта в виртуальной среде, добавьте путь с помощью WSGIPythonHome. Дополнительные сведения см. в руководстве по виртуальной среде mod_wsgi.

Строка WSGIPythonPath гарантирует, что пакет вашего проекта доступен для импорта по пути Python; другими словами, импорт mysite работает.

Эта деталь гарантирует, что Apache сможет получить доступ к вашему файлу wsgi.py.

Далее нам нужно убедиться, что этот wsgi.py с объектом приложения WSGI существует. Начиная с Django версии 1.4, startproject создаст его для вас; в противном случае вам нужно будет создать его. См. обзорную документацию по WSGI, чтобы узнать, какое содержимое по умолчанию вы должны поместить в этот файл, и что еще вы можете в него добавить.

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

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

Исправление ошибки UnicodeEncodeError при загрузке файлов

Если вы получаете ошибку UnicodeEncodeError при загрузке или записи файлов с именами файлов или содержимым, содержащим символы, отличные от ASCII, убедитесь, что Apache настроен на поддержку кодировки UTF-8:

Обычно эта конфигурация размещается в /etc/apache2/envvars .

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

Подробности см. в разделе "Файлы" справочного руководства по Unicode.

Использование режима демона mod_wsgi¶

"Режим демона" является рекомендуемым режимом для запуска mod_wsgi (на платформах, отличных от Windows). Чтобы создать необходимую группу процессов демона и делегировать экземпляр Django для запуска в ней, вам потребуется добавить соответствующие директивы WSGIDaemonProcess и WSGIProcessGroup. Еще одно изменение, необходимое для приведенной выше конфигурации, если вы используете режим демона, заключается в том, что вы не можете использовать WSGIPythonPath; вместо этого вы должны использовать параметр python-path для WSGIDaemonProcess , например:

Подробнее о настройке режима демона см. в официальной документации mod_wsgi.

Обслуживание файлов¶

Django не обслуживает файлы самостоятельно; он оставляет эту работу любому веб-серверу, который вы выберете.

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

Однако, если у вас нет другого выбора, кроме как обслуживать медиафайлы на том же Apache VirtualHost, что и Django, вы можете настроить Apache для обслуживания некоторых URL-адресов в качестве статических медиафайлов, а других — с использованием интерфейса mod_wsgi для Django.

В этом примере Django настраивается в корне сайта, но robots.txt , favicon.ico и все, что находится в пространстве URL /static/ и /media/, используется как статический файл. Все остальные URL будут обслуживаться с помощью mod_wsgi:

Обслуживание файлов администратора¶

Когда django.contrib.staticfiles находится в INSTALLED_APPS , сервер разработки Django автоматически обслуживает статические файлы приложения администратора (и любых других установленных приложений). Однако это не тот случай, когда вы используете любое другое расположение серверов. Вы несете ответственность за настройку Apache или любого другого веб-сервера, который вы используете, для обслуживания файлов администратора.

Файлы администратора находятся в ( django/contrib/admin/static/admin ) дистрибутива Django.

Мы настоятельно рекомендуем использовать django.contrib.staticfiles для обработки файлов администратора (вместе с веб-сервером, как описано в предыдущем разделе; это означает использование команды управления collectstatic для сбора статических файлов в STATIC_ROOT , а затем настройку вашего веб-сервера). сервер для обслуживания STATIC_ROOT по адресу STATIC_URL ), но есть еще три подхода:

  1. Создайте символическую ссылку на статические файлы администратора из корня вашего документа (для этого может потребоваться +FollowSymLinks в вашей конфигурации Apache).
  2. Используйте директиву Alias, как показано выше, чтобы связать соответствующий URL-адрес (вероятно, STATIC_URL + admin/ ) с фактическим расположением файлов администратора.
  3. Скопируйте статические файлы администратора, чтобы они находились в корневом каталоге вашего документа Apache.

Аутентификация в пользовательской базе данных Django из Apache¶

Django предоставляет обработчик, позволяющий Apache аутентифицировать пользователей напрямую с помощью механизмов аутентификации Django. См. документацию по аутентификации mod_wsgi .

В этом руководстве предполагается, что вы уже настроили свой виртуальный частный сервер с выбранной вами операционной системой (для этого руководства использовался Debian 7; Ubuntu также подойдет). Если вы еще этого не сделали, вы можете следовать этому руководству. Прежде чем начать, убедитесь, что ваш облачный сервер правильно настроен для размещения приложений Django с уже установленным сервером базы данных, веб-сервером и virtualenv. Если вы еще этого не сделали, выполните шаги 1–6 по настройке сервера для Django.

Шаг 1. Обновление пакетов

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

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

Шаг второй: настройте Virtualenv

Если вы выполнили предварительные условия, это уже должно быть настроено, и вы можете пропустить этот шаг.

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

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

Теперь, когда вы настроили виртуальную среду, вы можете активировать ее и установить Django и любые другие пакеты Python, которые могут вам понадобиться, используя pip. Ниже приведен пример того, как активировать виртуальную среду и использовать pip для установки Django:

Теперь мы готовы создать базу данных для нашего проекта!

Шаг третий: создание базы данных

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

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

Теперь в приглашении вашего терминала должно быть указано «postgres@yourserver». Если это так, запустите эту команду, чтобы создать базу данных, заменив «mydb» на желаемое имя базы данных:

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

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

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

Теперь у вас есть база данных и пользователь для доступа к этой базе данных. Затем мы можем работать над настройкой нашего веб-сервера для обслуживания наших статических файлов!

Шаг четвертый: настройте VPS

Нам нужно создать новый файл конфигурации для нашего сайта. В этом руководстве предполагается, что вы используете NGINX в качестве облачного сервера. Если это не так, вам нужно будет проверить документацию для выбранного вами веб-сервера, чтобы выполнить этот шаг.

Для NGINX выполните следующую команду, чтобы создать и отредактировать файл конфигурации веб-сервера вашего сайта, заменив «myproject» в конце команды на имя вашего проекта:

Теперь введите следующие строки кода в открытый редактор:

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

Оказавшись там, запустите эту команду:

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

При перезапуске может появиться следующая ошибка:

Вы можете решить эту проблему, отредактировав ' /etc/nginx/nginx.conf'

Откройте файл и раскомментируйте следующую строку:

Теперь давайте загрузим файлы нашего проекта в наш дроплет!

Шаг пятый: перенос локального проекта Django в дроплет

Найдите каталог, в котором вы настроили свой virtualenv или где вы хотите разместить свой проект. Перейдите в этот каталог с помощью следующей команды:

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

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

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

Если ваш проект уже находится в репозитории Git, просто убедитесь, что весь код зафиксирован и отправлен. Вы можете проверить, так ли это, выполнив следующую команду локально на своем компьютере в терминале (для Mac) или в командной строке (для ПК):

Если вы не видите файлов в выводе, значит, все в порядке. Теперь подключитесь к дроплету по SSH и установите Git с помощью следующей команды:

Обязательно отвечайте «да» на все запросы, вводя «y» и нажимая «enter». После установки Git используйте его для загрузки файлов проекта в каталог проекта с помощью следующей команды:

Если вы используете Github или Bitbucket для хостинга Git, вы можете использовать кнопку клонирования, чтобы получить эту команду. Обязательно добавьте «.» в конце. Если мы этого не сделаем, Git создаст каталог с именем репо внутри каталога вашего проекта, чего вы не хотите.

Если вы не используете Git, используйте FTP или другой протокол передачи для передачи файлов в каталог проекта, созданный на шагах выше.

Теперь осталось только настроить сервер приложений!

Шаг шестой: установка и настройка сервера приложений

Если вы выполнили предварительные условия, это уже должно быть настроено, и вы можете пропустить этот шаг.

Теперь нам нужно установить наш сервер приложений и убедиться, что он прослушивает порт 8001 для запросов к нашему приложению Django. В этом примере мы будем использовать Gunicorn. Чтобы установить Gunicorn, сначала активируйте виртуальную среду:

Как только ваша виртуальная среда активируется, выполните следующую команду, чтобы установить Gunicorn:

Теперь, когда Gunicorn установлен, привяжите запросы для вашего домена или IP к порту 8001:

Теперь вы можете нажать «ctrl + z», а затем ввести «bg», чтобы запустить процесс в фоновом режиме (если хотите). Более продвинутую настройку и настройку Gunicorn можно найти в девятом шаге этого руководства.

Теперь вы готовы к последнему шагу!

Шаг седьмой: настройте приложение

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

Путь к вашему файлу настроек может отличаться в зависимости от того, как настроен ваш проект. Соответственно измените путь в приведенной выше команде.

Открыв файл настроек, измените настройки DEBUG на False:

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

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

Теперь измените настройки статических файлов:

Сохраните и закройте файл. Теперь все, что нам нужно сделать, это собрать наши статические файлы. Перейдите в каталог, где находится ваш скрипт «manage.py», и выполните следующую команду:

Эта команда соберет все статические файлы в каталог, который мы указали в нашем файле settings.py выше.

И все! Теперь ваше приложение развернуто в рабочей среде и готово к работе.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Django – это мощная веб-инфраструктура, позволяющая развертывать приложения или веб-сайты Python. Django включает в себя множество функций, таких как аутентификация, настраиваемая база данных ORM (Object-Relational Mapper) и расширяемая архитектура плагинов. Django упрощает сложные веб-разработки, позволяя вам сосредоточиться на написании кода.

В этом руководстве вы настроите проект Django и развернете его на платформе приложений DigitalOcean с помощью GitHub.

Предпосылки

Для выполнения этого руководства вам потребуется:

  • Аккаунт GitHub.
  • Python3 установлен на вашем локальном компьютере. Вы можете следовать следующим руководствам по установке Python в Windows, Mac или Linux.
  • Текстовый редактор. Вы можете использовать Visual Studio Code или любой другой текстовый редактор.

Шаг 1. Создание виртуальной среды Python для вашего проекта

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

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

Теперь создайте виртуальную среду с помощью Python:

Это создаст каталог с именем django в вашем каталоге .venvs. Внутри он установит локальную версию Python и локальную версию pip. Вы можете использовать его для установки и настройки изолированной среды Python для вашего проекта.

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

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

При активной виртуальной среде установите Django, Gunicorn, dj-database-url и адаптер PostgreSQL psycopg2 с локальным экземпляром pip :

Примечание. Когда виртуальная среда активирована (когда перед приглашением стоит (django)), используйте pip вместо pip3 , даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда называется pip , независимо от того, версии Python.

Эти пакеты делают следующее:

  • django — устанавливает платформу и библиотеки Django.
  • gunicorn — инструмент для развертывания Django с WSGI.
  • dj-database-url – инструмент Django для анализа URL базы данных.
  • psycopg2 — адаптер PostgreSQL, позволяющий Django подключаться к базе данных PostgreSQL.

Теперь, когда у вас установлены эти пакеты, вам нужно сохранить эти требования и их зависимости, чтобы App Platform могла установить их позже. Вы можете сделать это с помощью pip и сохранения информации в файле requirements.txt:

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

Шаг 2. Создание проекта Django

Создайте свой проект с помощью инструмента django-admin, который был установлен при установке Django:

На этом этапе ваш текущий каталог (django_app в вашем случае) будет иметь следующее содержимое:

  • manage.py : сценарий управления проектом Django.
  • django_app/ : пакет проекта Django. Он должен содержать файлы __init__.py , settings.py , urls.py , asgi.py и wsgi.py.

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

Давайте настроим некоторые параметры перед развертыванием.

Настройка параметров проекта

Теперь, когда вы создали проект Django, вам нужно изменить настройки, чтобы обеспечить его правильную работу в App Platform. Откройте файл настроек в текстовом редакторе:

Давайте рассмотрим нашу конфигурацию шаг за шагом.

Чтение переменных среды

Во-первых, вам нужно добавить оператор импорта os, чтобы иметь возможность читать переменные среды:

Установка секретного ключа

Далее вам нужно изменить директиву SECRET_KEY. Это устанавливается Django при первоначальном создании проекта и будет иметь случайно сгенерированное значение по умолчанию. Небезопасно хранить это жестко закодированное значение в коде после его отправки на GitHub, поэтому вам следует либо прочитать его из переменной среды, либо сгенерировать при запуске приложения. Для этого добавьте следующий оператор импорта вверху файла настроек:

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

Настройка разрешенных хостов

Теперь найдите директиву ALLOWED_HOSTS. Это определяет список адресов серверов или доменных имен, которые можно использовать для подключения к экземпляру Django. Любой входящий запрос с заголовком Host, которого нет в этом списке, вызовет исключение. Django требует, чтобы вы установили это, чтобы предотвратить определенный класс уязвимостей безопасности.

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

Платформа приложений предоставляет вам настраиваемый URL-адрес по умолчанию, а затем позволяет установить личный домен после развертывания приложения. Поскольку вы не будете знать этот настраиваемый URL-адрес, пока не развернете приложение, вам следует попытаться прочитать ALLOWED_HOSTS из переменной среды, чтобы App Platform могла внедрить его в ваше приложение при его запуске.

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

Установка директивы отладки

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

Здесь вы использовали метод getenv для проверки переменной среды с именем DEBUG .Если эта переменная не найдена, мы должны по умолчанию использовать False для безопасности. Поскольку переменные среды будут считываться из App Platform как строки, обязательно выполните сравнение, чтобы убедиться, что ваша переменная оценивается правильно.

Настройка режима разработки

Теперь создайте новую директиву с именем DEVELOPMENT_MODE, которая также будет установлена ​​как переменная среды. Это вспомогательная переменная, которую вы будете использовать, чтобы определить, когда подключаться к вашей базе данных Postgres и когда подключаться к локальной базе данных SQLite для тестирования. Вы будете использовать эту переменную позже при настройке подключения к базе данных:

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

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

Предупреждение. Если вы не измените эти настройки и продолжите работу с базой данных SQLite, ваша база данных будет удалена после каждого нового развертывания. Платформа приложений не обслуживает диск при повторном развертывании приложений, и ваши данные будут потеряны.

Измените настройки с информацией о базе данных PostgreSQL. Вы прочтете информацию о подключении к базе данных и учетные данные из переменной среды DATABASE_URL, которая будет предоставлена ​​платформой приложений. Используйте адаптер psycopg2, который мы установили вместе с pip, чтобы дать Django доступ к базе данных PostgreSQL. Вы будете использовать установленный пакет dj-database-url, чтобы получить всю необходимую информацию из URL-адреса подключения к базе данных.

Чтобы облегчить локальную разработку вашего приложения, вы также будете использовать оператор if здесь, чтобы определить, установлено ли для DEVELOPMENT_MODE значение True и к какой базе данных следует обращаться. По умолчанию для этого будет установлено значение False, и он попытается подключиться к базе данных PostgreSQL. Вы также не хотите, чтобы Django пытался установить соединение с базой данных PostgreSQL при попытке собрать статические файлы, поэтому вы напишете оператор if для проверки выполненной команды и не будете подключаться к базе данных, если вы определите, что данная команда была collectstatic . Платформа приложений будет автоматически собирать статические файлы при развертывании приложения.

Сначала установите библиотеку sys, чтобы можно было определить команду, которая была передана в manage.py, и библиотеку dj_database_url, чтобы иметь возможность анализировать переданный URL-адрес:

Затем удалите текущий блок директив DATABASE и замените его следующим:

Затем перейдите к нижней части файла и добавьте параметр, указывающий, где следует размещать статические файлы. Когда ваше приложение Django развернуто на платформе приложений, python manage.py collectstatic будет запущен автоматически. Установите маршрут в соответствии с директивой STATIC_URL в файле настроек:

Если вы планируете хранить статические файлы в других местах, помимо ваших отдельных статических файлов приложения Django, вам потребуется добавить дополнительную директиву в файл настроек. Эта директива укажет, где найти эти файлы. Имейте в виду, что эти каталоги не могут иметь то же имя, что и ваш STATIC_ROOT. Если у вас нет дополнительных статических файлов, не включайте этот параметр.:

Просмотр завершенного файла settings.py

Ваш завершенный файл будет выглядеть следующим образом:

Примечание. В файле settings.py есть значения, характерные для вашего проекта (например, WSGI_APPLICATION и ROOT_URLCONF), которые генерируются при первой настройке приложения. Если вы назвали свое приложение иначе, чем django_app, и собираетесь скопировать и вставить этот код напрямую, обязательно измените эти настройки в соответствии с вашим проектом. Они будут правильно установлены в файле settings.py, созданном для вас.

Сохраните и закройте файл settings.py .

Вы завершили настройку приложения Django для работы на платформе приложений. Затем вы отправите приложение на GitHub и развернете его на платформе приложений.

Шаг 3. Отправка сайта на GitHub

DigitalOcean App Platform развертывает ваш код из репозиториев GitHub, поэтому первое, что вам нужно сделать, это добавить свой сайт в репозиторий git, а затем отправить этот репозиторий на GitHub.

Сначала инициализируйте проект Django как репозиторий git:

Когда вы работаете над своим приложением Django локально, добавляются определенные файлы, которые не нужны для развертывания. Давайте исключим этот каталог, добавив его в список игнорирования Git. Создайте новый файл с именем .gitignore :

Теперь добавьте в файл следующий код:

Сохраните и закройте файл.

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

Сделайте первоначальную фиксацию:

Ваши файлы будут зафиксированы:

Откройте браузер и перейдите на GitHub, войдите в свой профиль и создайте новый репозиторий с именем django-app . Создайте пустой репозиторий без README или файла лицензии.

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

Сначала добавьте GitHub в качестве удаленного репозитория:

Затем переименуйте ветку по умолчанию main , чтобы она соответствовала ожиданиям GitHub:

Наконец, переместите свою основную ветку в основную ветку GitHub:

Ваши файлы будут перенесены:

Введите свои учетные данные GitHub, когда будет предложено отправить код.

Ваш код теперь находится на GitHub и доступен через веб-браузер. Теперь вы развернете свой сайт на платформе приложений DigitalOcean.

Шаг 4. Развертывание в DigitalOcean с помощью App Platform

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

Нажмите «Установить и авторизоваться». Вы вернетесь на панель управления DigitalOcean, чтобы продолжить создание приложения.

После подключения вашей учетной записи GitHub выберите репозиторий your_account /django-app и нажмите "Далее".

Затем укажите название своего приложения, выберите регион и убедитесь, что выбрана основная ветвь. Затем убедитесь, что отмечены изменения кода автоматического развертывания. Нажмите «Далее», чтобы продолжить.

DigitalOcean обнаружит, что ваш проект является приложением Python, и автоматически заполнит команду частичного запуска.

Приложение Python обнаружено и заполнена команда частичного запуска

Нажмите ссылку «Изменить» рядом с командами «Сборка» и «Выполнить», чтобы завершить команду сборки. Ваша завершенная команда сборки должна ссылаться на файл WSGI вашего проекта. В этом примере это django_app.wsgi. Ваша завершенная команда запуска должна быть gunicorn --worker-tmp-dir /dev/shm django_app.wsgi .

Завершение команды запуска

Далее вам нужно определить переменные среды, которые вы объявили в настройках вашего проекта. Платформа приложений имеет концепцию переменных для всего приложения , которые представляют собой переменные среды, предоставляемые платформой приложений, такие как APP_URL и APP_DOMAIN . Платформа также поддерживает Component-Specific Variables, которые являются переменными, экспортируемыми из ваших компонентов. Это будет полезно для предварительного определения вашего APP_DOMAIN, чтобы вы могли правильно установить DJANGO_ALLOWED_HOSTS. Вы также будете использовать эти переменные для копирования настроек конфигурации из вашей базы данных.

Чтобы узнать больше об этих различных переменных, обратитесь к документации по переменным среды платформы приложений

Чтобы ваше приложение Django функционировало, вам необходимо установить следующие переменные среды следующим образом:

  • DJANGO_ALLOWED_HOSTS -> $
    • Это позволяет нам узнать случайно сгенерированный URL-адрес, который предоставляет платформа приложений, и передать его нашему приложению.
    • В этом случае мы назовем нашу базу данных db на следующем шаге, поэтому это должно быть $
    • Сейчас установите для этого параметра значение True, чтобы убедиться, что ваше приложение работает, и установите значение False, когда придет время запустить это приложение в рабочую среду.
    • Вы можете либо разрешить своему приложению генерировать его при каждом запуске, либо выбрать надежный пароль длиной не менее 32 символов, который будет использоваться в качестве ключа. Для этого лучше всего использовать безопасный генератор паролей.
    • Не забудьте установить флажок "Шифровать", чтобы ваши учетные данные были зашифрованы в целях безопасности.

    Чтобы настроить базу данных, нажмите кнопку "Добавить базу данных". Вам будет предложено выбрать небольшую базу данных для разработки или интеграцию с управляемой базой данных в другом месте. Для этого развертывания выберите базу данных разработки и убедитесь, что имя базы данных — db. Убедившись в этом, нажмите кнопку "Добавить базу данных".

    Добавить базу данных

    Нажмите «Далее», и вы будете перенаправлены на экран «Завершение и запуск», где вы сможете выбрать свой план. Обязательно выберите подходящий план в соответствии с вашими потребностями, будь то базовое приложение или профессиональное приложение, а затем нажмите «Запустить приложение» внизу. Ваше приложение будет создано и развернуто:

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

    После этого нажмите на ссылку на свое приложение, предоставленную платформой приложений.

    Эта ссылка должна привести вас на стандартную начальную страницу Django.

    Выполнение начальных задач Django

    И теперь у вас есть приложение Django, развернутое на платформе приложений. Любые изменения, которые вы вносите и отправляете на GitHub, будут автоматически развернуты.

    Шаг 5. Развертывание ваших статических файлов

    Теперь, когда вы развернули свое приложение, вы можете заметить, что ваши статические файлы не загружаются, если для параметра DEBUG задано значение False . Django не обслуживает статические файлы в производстве и вместо этого хочет, чтобы вы развернули их с помощью веб-сервера или CDN. К счастью, платформа приложений может сделать именно это. Платформа приложений предоставляет бесплатное обслуживание статических ресурсов, если вы запускаете службу вместе с ней, как вы это делаете со своим приложением. Итак, вы собираетесь развернуть то же самое приложение Django, но на этот раз в виде статического сайта.

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

    Добавить статический Сайт

    Выберите тот же репозиторий GitHub, что и развернутая служба Django. Нажмите «Далее», чтобы продолжить.

    Затем укажите название своего приложения и убедитесь, что выбрана основная ветвь. Нажмите «Далее», чтобы продолжить.

    Ваш компонент будет определен как служба, поэтому вам следует изменить тип на статический сайт. По сути, мы заставим Django собирать наши статические файлы и обслуживать их. Установите маршрут на то, что вы установили в директиве STATIC_URL в файле настроек. Мы устанавливаем нашу директиву на /static/, поэтому устанавливаем маршрут на /static. Наконец, ваши статические файлы будут собраны в выходной каталог вашего приложения в соответствии с настройкой STATIC_ROOT в settings.py. У вас установлено значение staticfiles , поэтому установите его в качестве выходного каталога.

    Static Site Настройки

    Нажмите «Далее», чтобы перейти к экрану «Завершение и запуск». Когда статические файлы связаны с услугой, это бесплатно, поэтому вы не увидите никаких изменений в своем счете. Нажмите «Запустить приложение» и разверните свои статические файлы. Теперь, если для параметра Отладка задано значение False, статические файлы будут отображаться правильно.

    Обзор

    В этом руководстве вы:

    • Настройте проект Django.
    • Настроил проект Django для подключения к базе данных.
    • Развернул приложение и его статические файлы на платформе приложений.

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

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

    Что дальше?

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

    ПРИМЕЧАНИЕ. Разделы «Подход А», упомянутые ниже, не относятся к собственным установщикам Bitnami. Пользователи собственных установщиков Bitnami должны обращаться только к разделам подхода B.

    Разработка

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

    localhost и PORT являются необязательными параметрами. 127.0.0.1:8000 будет использоваться по умолчанию, если вы не укажете ни один из них. Если вы планируете получить удаленный доступ к серверу, вам следует использовать IP-адрес 0.0.0.0 или фактический IP-адрес сервера.

    ВАЖНО: не забудьте открыть порт, используемый сервером Django, в брандмауэре сервера. Дополнительные сведения см. в разделе часто задаваемых вопросов для Windows, Linux и macOS.

    Производство

    Подход A: установка Bitnami с использованием системных пакетов

    Чтобы обслуживать ваше приложение через веб-сервер Apache с модулем mod_wsgi, выполните следующие действия.

    Включить конфигурацию WSGI для приложения Django

    Убедитесь, что проект Django содержит файл wsgi.py с содержимым, подобным этому:

    Включить предопределенные виртуальные хосты для проекта Django

    Скопируйте файлы, чтобы удалить суффикс .disabled:

    ПРИМЕЧАНИЕ. Эти файлы предполагают, что проект Django называется sample и находится в installdir/projects/sample. Если ваш проект Django называется или расположен по-другому, отредактируйте файлы ниже и соответствующим образом обновите пути к файлам.

    Перезапустите Apache, чтобы изменения вступили в силу:

    Настроить проект Django для общего доступа

    Чтобы проект Django правильно работал в вашем веб-браузере, могут потребоваться некоторые дополнительные изменения. Откройте файл settings.py для проекта Django и выполните следующие действия:

    Добавьте строку ниже в начало файла:

    Отключить режим DEBUG:

    Установите параметр ALLOWED_HOSTS, чтобы сделать проект Django доступным удаленно:

    Общий доступ к проекту Django:

    Ограниченный доступ, например. только запросы с IP-адреса 11.22.33.44:

    Установите STATIC_URL и STATIC_ROOT для обслуживания статических файлов:

    Создайте статические файлы. Выполните следующую команду:

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

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

    ПРИМЕЧАНИЕ. Эти шаги предполагают, что ваш проект Django будет находиться в каталоге installdir/projects.

    ПРИМЕЧАНИЕ. Замените заполнитель APPNAME на фактическое название вашего проекта.

    ПРИМЕЧАНИЕ. Замените заполнитель APPNAME на фактическое название вашего проекта.

    Перезапустите сервер Apache:

    Подход B: Автономные установки Bitnami

    Для рабочей среды мы рекомендуем настроить Apache с помощью модуля mod_wsgi, прежде чем начать обслуживание вашего приложения (по умолчанию он уже установлен и активирован).

    Сначала измените файл сценария приложения WSGI в PROJECT/PROJECT/wsgi.py внутри каталога проекта Django. Не забудьте заменить PROJECT фактическим путем и именем вашего проекта Django.

    СОВЕТ. Если у вас возникли проблемы при редактировании вышеуказанного файла, проверьте, правильно ли установлены разрешения в вашем стеке.

    Хотя точное содержимое может отличаться в зависимости от вашей версии Django, убедитесь, что содержимое похоже на приведенный ниже код, и что вы добавляете свой проект в путь с помощью sys.path.append.< /p>

    Создайте папку conf/ в каталоге installdir/apps/django/django_projects/PROJECT/.

    Читайте также: