Автор оригинала: Ekwenugo Mirabel.
Heroku-это облачная платформа на основе контейнеров для развертывания, управления и масштабирования приложений. Несмотря на то, что существуют и другие подобные платформы, такие как OpenShift от Red Hat, Windows Azure, Amazon Web Services, Google App Engine и т. Д., Heroku выделяется тем, что он довольно прост и очень прост в работе. Он также поставляется с бесплатным пакетом для небольших приложений.
Развертывание приложения Django на Heroku может быть очень сложным. Даже со всеми учебными пособиями в Интернете это все равно немного сбивает с толку. Иногда вы сталкиваетесь с определенными ошибками, которые не понимаете. Этот пост научит вас простым шагам, которым следует следовать при развертывании приложения на Heroku.
В этом посте я предполагаю, что вы хорошо разбираетесь в Django и создании приложений Django.
Давайте Начнем
Внутри вашего терминала активируйте virtualenv
для проекта и запустите pip install dj-database-url gunicorn white noise
. Это позволит установить три разных пакета. Во-первых, dj-database-url
настроит адаптер базы данных в проекте. Мы будем запускать его на Gunicorn в Heroku — вот почему мы установили gunicorn, и whitenoise будет обслуживать наши статические файлы на Heroku.
Шаг 1: Первое, что вам нужно, это requirements.txt файл. Этот файл важен, потому что он сообщает Heroku о различных библиотеках и пакетах, которые необходимо установить для запуска вашего приложения. Если у вас нет этого файла, вы можете просто зайти в свой терминал (убедитесь, что вы находитесь в virtualenv для проекта) и выполнить следующую команду в корневом каталоге вашего приложения: pip freeze >> requirements.txt
. Эта команда поместит все библиотеки, установленные в данный момент, в новый файл с именем requirements.txt .
Шаг 2: Поскольку Heroku работает на Postgres, нам нужно будет предоставить для него адаптер. С вашего терминала запустите pip install psycopg2
или просто добавьте psycopg2==2.6.2
в requirements.txt
файл и запустите pip install
.
Шаг 3: Следующее, что вам понадобится, – это файл Proc . Это просто говорит Героку, что нужно запускать. Создайте файл в корневом каталоге вашего проекта и назовите его Профиль . Откройте его с помощью текстового редактора или в командной строке и вставьте в него следующее: web: gunicorn xyz.wsgi
. Создайте файл с именем xyz.wsgi
, вы можете изменить xyz на имя вашего приложения. Убедитесь, что к нему добавлено расширение .wsgi . Это подскажет Heroku запустить gunicorn с нашим файлом .wsgi
.
Шаг 4: В нашем settings.py
файл, нам нужно установить DEBUG в False и изменить ALLOWED_HOSTS на [‘*’], так как мы еще не знаем ваш URL Heroku.
Шаг 5: В корневом каталоге создайте файл и назовите его runtime.txt
. Этот файл подскажет Heroku, с какой версией Python запускать наше приложение. Внутри файла вставьте python-2.7.10
или любую версию python, которую вы используете.
Шаг 6: В нашем settings.py файл, замените объект БАЗЫ ДАННЫХ следующим кодом и сохраните:
import dj_database_url DATABASES = { 'default': dj_database_url.config( default='sqlite:////{0}'.format(os.path.join(BASE_DIR, 'db.sqlite3')) ) }
Это позволит нам продолжать использовать нашу локальную базу данных SQLite, используя там базу данных Heroku.
Шаг 7: наизнанку xyz.wsgi файл (или любой другой wsgi.py файл называется), добавьте следующую строку и сохраните:
from whitenoise.django import DjangoWhiteNoise application = DjangoWhiteNoise(application)
Героку
Шаг 1: Вам нужно будет установить пояс инструментов Heroku, если у вас его еще нет. Перейти к Heroku Toolbelt для установки.
Шаг 2: Создайте бесплатную учетную запись Heroku здесь .
Шаг 3: Аутентифицируйте свою учетную запись heroku, запустив heroku login
на своем терминале.
Шаг 4: Запустите heroku create <ваше имя приложения>
на вашем терминале. Вы можете просто запустить heroku create
, и Heroku даст вашему приложению случайное имя.
Шаг 5: Heroku использует git для своих развертываний. Вы можете пойти дальше и запустить git add .
и git commit <сообщение о фиксации>
на вашем терминале.
Шаг 6: Наконец, вы можете развернуть Heroku, запустив git push heroku master
на своем терминале.
Шаг 7: Вы можете сказать Heroku, чтобы запустить этот веб-процесс, запустив heroku ps:scale
на своем терминале.
Шаг 8: Поскольку мы создали новую/пустую базу данных на Heroku, мы запустим миграцию. На вашем терминале введите heroku run python manage.py перенесите
, а затем создайте суперпользователя администратора django heroku run python manage.py создает суперпользователя
.
Теперь вы можете посетить свое приложение в браузере, выполнив команду heroku open
на терминале.
Вот и все!
Если вам интересно узнать больше о развертывании приложений на Heroku, вот статья о развертывании приложения Crystal на Heroku и о том, как запускать Python и Ruby на Heroku!