Автор оригинала: Ousseynou Diop.
Вступление
Heroku-это платформа облачных приложений, она облегчает развертывание веб-приложения. Они поддерживают несколько языков программирования, включая Python.
Установите Heroku Toolbelt
Чтобы установить heroku Toolkit Зарегистрируйтесь в heroku , Затем установите Heroku Toolbelt это очень мощный инструмент командной строки, который поможет вам управлять вашим приложением. После установки панели инструментов откройте терминал/CMD и войдите в свою учетную запись:
$ heroku login Enter your Heroku credentials. Email: your email Password (typing will be hidden): Authentication successful.
Подготовка нашей заявки
поместите в свое приложение
$ cd my-application/
Вот список вещей, которые вам, вероятно, потребуется добавить в свой проект:
- Добавьте профиль в корень проекта;
- Добавить requirements.txt файл со всеми требованиями в корневом каталоге проекта;
- Добавьте Гуникорн в requirements.txt;
- А runtime.txt чтобы указать правильную версию Python в корне проекта;
- Настройте белый шум для обслуживания статических файлов.
Профиль
- Создайте файл с именем Procfile в корне проекта
- Добавьте следующее содержимое:
web: gunicorn my-application.wsgi --log-file -
Примечание: измените my-application с именем вашего проекта Django.
В requirements.txt
Выполните эту команду, в этой команде будут перечислены все зависимости:
$ pip freeze > requirements.txt You should see somthing like this : dj-database-url==version Django==version gunicorn==version psycopg2==version psycopg2-binary==version pytz==version whitenoise==version
В runtime.txt
Создайте файл с именем runtime.txt в корне проекта и поместите конкретную версию Python, которую использует ваш проект: python 3.8
Настройка Статических Ресурсов
Настройте параметры, связанные со СТАТИКОЙ, на settings.py:
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") ]
Настройка Whitenoise
Установка белого шума
$ pip install whitenoise
Добавьте Белый шум в приложение Django в wsgi.py файл:
""" WSGI config for repertoire project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ """ import os from whitenoise.django import DjangoWhiteNoise from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my-application.settings') application = get_wsgi_application() application = DjangoWhiteNoise(application)
Обновите settings.py
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Добавьте промежуточное программное обеспечение белого шума в верхней части списка промежуточного программного обеспечения в settings.py
Развертывание приложения
Обновление конфигурации базы данных в settings.py (в нижней части файла)
import dj_database_url prod_db = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(prod_db)
Создайте приложение в Heroku из терминала
$ heroku create myapplication Creating ⬢ myapplication... done https://myapplication.herokuapp.com/ | https://git.heroku.com/myapplication.git
Выберите любое имя для вашего приложения. Heroku сообщит вам, если имя уже существует
Добавьте доменное имя вашего приложения в ALLOWED_HOSTS settings.py.
ALLOWED_HOSTS = ['myapplication.herokuapp.com']
Инициализируйте Git и подключите новое приложение (или существующее) к удаленному репозиторию Heroku Git и нажмите приложение. в вашем терминале/CMD:
$ git init $ heroku git:remote -a myapplication $ git add . $ commit -m "Initial commit" $ git push heroku master
Если вы получите сообщение об ошибке с collectstatic, просто отключите его, проинструктировав Heroku игнорировать запуск manage.py команда collecstatic в процессе развертывания.
$ heroku config:set DISABLE_COLLECTSTATIC=1
Затем беги:
$ git push heroku master
Перенос базы данных:
$ heroku run python manage.py migrate
Дайте мне знать в разделе комментариев, если у вас есть какие-либо ошибки.
Спасибо, что прочитали.