Последняя глава будет посвящена развертыванию веб-приложения Django на Heroku, чтобы другие люди могли использовать его в любой точке мира.
Героку
Heroku — это программная платформа, которая позволяет нам запускать и управлять веб-приложениями в облаке.
Выполните следующие шаги, чтобы развернуть веб-приложение Django на Heroku.
- Перейдите в 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
.
Протестируйте веб-сайт, просмотрев все страницы и функции.
Героку — Пользовательский домен
Шаги могут различаться в зависимости от поставщика домена, которого вы используете, но процесс должен быть схожим.
- Перейдите на панель инструментов 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