Рубрики
Без рубрики

Запуск приложений Django

День развертывания, и это Джанго. Когда начать. У нас есть сервер, который мы можем SSH, мы получили наш код и … Теги с Джанго, учебником, Python, производительностью.

День развертывания, и это Джанго. Когда начать. Мы получили сервер, который мы можем SSH, мы получили наш код и конечные точки – если это будет готов к употреблению.

Прямо здесь мы собираемся посмотреть лучшие практики с точки зрения разработки наших бэкэндов, или SSRS (если мы использовали шаблон Django). Посредством процесса мы уточняемся на хищных приложениях по производству приложения, как только мы создаем наш проект, в отличие от ожидания завершения всего процесса развития.

Почему сейчас?

Для одного хороший продукт никогда не закончен. Всегда есть то, что одно интерфейс пользовательских интерфейсов есть, что одно ошибку или логическое расхождение или лучшее еще, обратная связь пользователей, подсказывая добавление функции – наше приложение должно получать некоторую тягу. Посмотрите на это таким образом, мы будем ждать, пока мы не получим все наши отзывы пользователя, прежде чем оптимизировать наше приложение для производства? Как насчет того, как мы обслуживаем наши медиафайлы? Будем ли мы все еще слушать его прямо через? Буду ли у нас пароли для наших баз данных, жесткозедированных? Что, если я добавлю функцию или настроить интернет-интерфейс на мою локальную настройку? Это сломало бы главное производственное приложение сразу с батата?

Указатель, к которым мы получаем: запустите ваше приложение и внесите небольшие инкрементные изменения, когда вы идете. Тадааа нет! Работает и никогда не сломается или не изменится! момент. Если бы вы просто кодировали, как будто это было на вашей машине и в ожидании «идеальной» возможности, вы должны остановиться. Остановить это. Получите ваше приложение и трубопроводы, как только вы начнете проект. Будьте готовыми к «Hello World».

Достаточно разговоров. Давайте имеем что-то, с чем мы можем работать здесь. Мы создаем виртуальную среду, устанавливаем наши зависимости и имейте нашу проект BoaterPlate.

GreenCodes ➤ mkdir launch-ready                                                                                                                                       
GreenCodes ➤ cd launch-ready                                                                                                                                          
launch-ready ➤ python -m venv .venv                                                                                                                                   
launch-ready ➤ source .venv/bin/activate                                                                                                                              
(.venv) launch-ready ➤

Мы сделали каталог под названием Готовый запуск наше предполагаемое имя заявления. Мы также создали и активировали виртуальную среду. Продолжайте и установите Django и создайте проект во время этого.

pip install django
django-admin startproject LaunchReady .  

Наш каталог теперь должен выглядеть так:

(.venv) launch-ready ➤ ls                                                                                                                                             
LaunchReady  manage.py
(.venv) launch-ready ➤ ls LaunchReady                                                                                                                                 
asgi.py  __init__.py  settings.py  urls.py  wsgi.py
(.venv) launch-ready ➤

Бег Python Manage.py Runserver даст страницу запуска по умолчанию для Django.

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

Создайте настройки производства и разработки.

Linkready Каталог имеет один файл настроек. В этом каталоге мы создаем еще один каталог с именем Настройки и переместите наши настройки файлы в него, переименовая его в процессе для base.py Отказ

mkdir settings
mv -i settings.py settings/base.py

Создайте два дополнительных файла в Настройки каталог и назовите их dev.py – Содержать настройки развития – и Prod.py – иметь настройки производства. Наш каталог заканчивается, как показано ниже:

(.venv) settings ➤ ls                                                                                                                                                 
base.py  dev.py  prod.py

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

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

echo .env >> .gitignore

Затем мы идем вперед и установите Python-Dotenv (Чтобы прочитать переменные из файла .evn) и mysqlclient (обертка вообще взаимодействовать с MySQL от Django).

pip install python-dotenv mysqlclient

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

dev.py

from dotenv import load_dotenv

from LaunchReady.settings.base import *

load_dotenv()

# since it's running on my machine, show me the errors
DEBUG = True

SECRET_KEY = os.getenv("SECRET_KEY")


DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": os.getenv("DATABASE_NAME"),
        "USER": os.getenv("DATABASE_USER"),
        "PASSWORD": os.getenv("DATABASE_PASSWORD"),
        "HOST": os.getenv("DATABASE_HOST")
    }
}

# show mail messages on the terminal
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"

# run on every host.
ALLOWED_HOSTS = ["*"]


Таким образом, у нас есть переменные среды, которые читаются из настроек разработки, но где мы устанавливаем эти предметы. Простой. Мы создаем .env Файл рядом с нашим dev настройки.

(.venv) settings ➤ ls  -a                                                                                                                                               
base.py  dev.py  prod.py .env

Содержание файла?

SECRET_KEY = 'django-generated-secret-key'
DATABASE_NAME=database_name
DATABASE_USER=database_user
DATABASE_PASSWORD=database_password
DATABASE_HOST=localhost

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

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

Мы устанавливаем DJ-база данных-URL – Пакет Python, который позволяет нам прочитать и выполнять действия в базе данных в случае, если он был на отдельной платформе или другой из нашего основного приложения.

pip install dj-database-url

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

prod.py

import dj_database_url
from LaunchReady.settings.base import *


ADMINS = (("Developer name", "Developer email"),)

# always set this to false in production
DEBUG = False

SECRET_KEY = os.environ["SECRET_KEY"]

ALLOWED_HOSTS = ["launch-ready-domain.com", "server-ip-address"]

DATABASES = {}
DATABASES["default"] = dj_database_url.config(conn_max_age=600, ssl_require=True)


# ToDo: get an email host provider
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = os.environ["EMAIL_HOST_USER"]
EMAIL_HOST_PASSWORD = os.environ["EMAIL_PASSWORD"]

EMAIL_PORT = 587
EMAIL_USE_TLS = True

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

ADMINS = (("Developer name", "Developer email"),)

Как у нас есть наш сервер Linux. На этот раз мы создаем постоянные переменные окружающей среды, на этот раз прочитали из файлов конфигурации Bash, настраивая их, /etc/Environment (Для конфигурации среды широкой среды) или в ~/.bashrc – Для конфигурации для каждого пользователей в случае, если у нас есть несколько.

**/etc/environment **

SECRET_KEY=''
DATABASE_URL=''
# this is common with heroku and can be set via the console or dashboard interface
DJANGO_SETTINGS_MODULE=''
EMAIL_HOST_USER=''
EMAIL_PASSWORD=''

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

DATABASES = {}
DATABASES["default"] = dj_database_url.config(conn_max_age=600, ssl_require=True)

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

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

python manage.py runserver --settings=LaunchReady.settings.dev

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

python manage.py runserver 0.0.0.0:8000 --settings=LaunchReady.settings.prod

Запустите браузер и отправьтесь до http://launch-ready-domain.com:8000 . Вы должны получить ту же страницу, что и в вашей среде разработки.

Что дальше?

Конечно, есть больше с точки зрения настроек и настройки сервера развертывания, особенно с точки зрения сервировки статических файлов. Это, однако, можно оставить на следующий час. Мы касаемся базы с этим довольно длинным штуком, так как мы подводим, и сделаем это далее в следующем, и да, код может быть доступен прямо сейчас Гринсенды Репозиторий.

До следующего раза,

Гринсенды

Оригинал: “https://dev.to/marvinkweyu/launching-django-applications-53ji”