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

Героку

Heroku — это программная платформа, которая позволяет нам запускать и управлять веб-приложениями в облаке.

Выполните следующие шаги, чтобы развернуть веб-приложение Django на Heroku.

  1. Перейдите в Heroku и создайте учетную запись.

2. Нам также нужен CLI Heroku, поэтому перейдите в CLI Heroku и следуйте инструкциям по его установке.

3. Выполните следующие команды в терминале.

pip install django-heroku
pip install gunicorn

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

4. Выполните следующую команду, чтобы создать файл requirements.txt.

pip freeze > requirements.txt

После выполнения приведенной выше команды в каталоге проекта должен появиться файл requirements.txt.

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

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

#project/requirements.txt
asgiref==3.3.1
beautifulsoup4==4.9.3
boto3==1.17.93
botocore==1.20.93
crispy-bootstrap5==0.4
dj-database-url==0.5.0
Django==3.1.6
django-bootstrap-v5==1.0.4
django-crispy-forms==1.12.0
django-filter==2.4.0
django-heroku==0.3.1
django-storages==1.11.1
gunicorn==20.1.0
importlib-metadata==3.10.1
jmespath==0.10.0
Pillow==8.1.0
psycopg2==2.8.6
psycopg2-binary==2.8.6
python-dateutil==2.8.1
pytz==2021.1
s3transfer==0.4.2
six==1.16.0
soupsieve==2.2
sqlparse==0.4.1
urllib3==1.26.4
whitenoise==5.2.0
zipp==3.5.0

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

5. Создайте файл runtime.txt в каталоге проекта и добавьте версию Python, которую вы используете в данный момент.

PROJECT
└── example
├── listings
├── media
├── users
├── venv
├── manage.py
├── requirements.txt
└── runtime.txt

Чтобы проверить версию Python, которую вы используете, введите следующую команду.

python --version

Добавьте версию Python в файл runtime.txt.

#project/runtime.txt
python-3.9.6

6. Создайте еще один файл с именем Procfile(без расширения файла) в каталоге проекта и добавьте следующий код.

#project/Procfile
web: gunicorn example.wsgi --log-file -

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

Обычно каталог, содержащий файл settings.py, является папкой проекта, в моем случае example.

7. Откройте settings.py и внесите в код следующие изменения.

#example/settings.py
import django_heroku
...
# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = False
...
django_heroku.settings(locals())

Мы собираемся развернуть проект на Heroku, поэтому измените настройку DEBUG на False.

Мы также добавили строки кода, необходимые для импорта Heroku.

8. Проверьте, установлен ли у вас Git. Git позволяет нам отслеживать изменения, внесенные в проект.

Введите следующую команду, чтобы узнать, установлен ли у вас Git.

git --version

Если у вас его нет, загрузите Git и установите его.

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

git config --global user.name
"admin"
git config --global user.email
"[email protected]"

10. Создайте файл с именем .gitignore в каталоге проекта и добавьте следующий код.

PROJECT
└── example
├── listings
├── media
├── users
├── venv
├── manage.py
├── requirements.txt
├── runtime.txt
├── Procfile
└── .gitignore

Файл Gitignore

#project/.gitignore
venv/
__pycache__/

Нам не нужно отслеживать все файлы, поэтому мы игнорируем весь каталог venv и каталог __pycache__, содержащий файлы .pyc, которые создаются автоматически при запуске проекта Django.

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

git init
*Initialized empty Git repository in /home/admin/…/.git/*
git add .
git commit -am “Ready for deployment” 
*A bunch of files will be created after issuing the command above.*
git status 
*On branch master nothing to commit, working tree clean*

12. Выполните следующие команды, чтобы отправить проект в Heroku.

heroku login 
*heroku: Press any key to open up the browser to login or q to exit:
Logging in... done*
heroku create
*Creating app... done, ⬢ guarded-citadel-37748
https://guarded-citadel-37748.herokuapp.com/|https://git.heroku.com/guarded- citadel-37748.git*
git push heroku master 
*Wait for installation
...
remote: Verifying deploy... done.
To https://git.heroku.com/guarded-citadel-37748.git
* [new branch]	master -> master*

13. Переименуйте приложение с помощью следующей команды.

heroku apps:rename bikefindr
*Renaming guarded-citadel-37748 to bikefindr... done*
*https://bikefindr.herokuapp.com/ | https://git.heroku.com/bikefindr.git*

Heroku присваивает веб-приложению случайное имя при вводе команды heroku create.

14. Перейдите на панель инструментов Heroku и нажмите на название приложения.

15. Go to Resources > Dropdown Menu > Delete Add-on..

Мы удаляем базу данных, которая поставляется с Heroku, чтобы мы могли настроить свою собственную базу данных (Amazon RDS).

16. Go to Settings > Reveal Config Vars.

17. Откройте settings.py, чтобы собрать информацию, необходимую для завершения Config Vars.

#example/settings.py
...
DATABASES = {
  'default': {
      'ENGINE': 'django.db.backends.postgresql',
      'NAME': 'example_1',
      'USER': 'example', 
      'PASSWORD': 'password12345', 
      'HOST': 'database-2.c9cggbqhqnex.us-east-2.rds.amazonaws.com',
      'PORT': '5432',
 }
}
...     
#S3 BUCKETS
AWS_ACCESS_KEY_ID = 'AKIAWY4F45EVDNFWIXGL' 
AWS_SECRET_ACCESS_KEY = 'X9j1UG2z18T6moU17VlUJKwpQ875y3h5kLM+vh5V'
AWS_STORAGE_BUCKET_NAME = 'exampleaws-bucket1'
...

Первые три поля прямые. Информация для этих полей — это два ключа AWS и имя корзины.

Убедитесь, что вы используете свои собственные ключи AWS.

Для поля DATABASE_URL следуйте приведенному ниже формату.

postgres://username:password@database-endpoint:port/database-name

После включения информации из DATABASES имеем следующее.

postgres://example:password12345@database-2.c9cggbqhqnex.us-east-2.rds.amazonaws.com:5432/example_1

18. Выполните следующую команду, чтобы открыть приложение.

heroku open

Вы также можете открыть приложение с веб-сайта Heroku.

19. Посетите веб-сайт.

Домен изменился с 127.0.0.1 на bikefindr.herokuapp.com.

Протестируйте веб-сайт, просмотрев все страницы и функции.

Героку — Пользовательский домен

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

  1. Перейдите на панель инструментов Heroku и нажмите Settings.

2. Прокрутите вниз до раздела Domains и нажмите Add domain.

3. Добавьте свой домен в следующем формате www.yourdomain.com и нажмите Next.

4. Снова нажмите Add domain, добавьте свой домен в следующем формате *.yourdomain.com и нажмите Next.

5. Нажмите значок редактирования рядом с доменом в формате *.yourdomain.com.

6. Скопируйте поле DNS target.

7. Перейдите на панель управления вашего провайдера домена и найдите настройки DNS.

Поле Тип должно быть CNAME, а поле Имя должно быть www.

В поле «Цель» вставьте цель DNS и сохраните изменения.

Обычно изменение происходит за пару минут.

8. Откройте браузер и введите свой домен, в моем случае www.bikefindr.com.

Вы должны увидеть свой сайт с обновленным доменом.

Если вам нравится сериал, следите за мной в Twitter и на Youtube, чтобы узнать больше.

Youtube: Брайам Лоайза

Твиттер: balt1794