Procfile для Heroku

Так что объяснения Heroku бесполезны, если вы еще не знаете, что делаете, и я понятия не имею, что должно быть в моем Procfile.

Я пытался:

web: python appname.py

потому что я нашел подобный пример для приложений на python (я использовал Django, поэтому использовал сборку на python).

Дальнейший поиск ничего не прояснил, кроме того, что мне, возможно, придется использовать gunicorn вместо python. Я нашел различные сообщения, предлагающие различные форматы, такие как:

web gunicorn
web:gunicorn
web: gunicorn

Я понятия не имею, что должно идти после gunicorn, некоторые посты содержат язык программирования, некоторые - IP-адрес, некоторые - различные другие вещи.

Некоторые предлагают запустить:

heroku ps:scale web=1

но это приводит к ошибке:

Scaling dynos... !
 !    Couldn't find that process type (web).

Я просто не имею понятия и не знаю, куда обратиться; Heroku ничего не объясняет.

Формат Героку Procfile довольно прост. Как описано в документации :

Профайл объявляет свои типы процессов в отдельных строках, каждая из которых имеет следующий формат:

<process type>: <command>

Вы видите, что после типа процесса должно стоять двоеточие, поэтому

web gunicorn

пример в вашем вопросе не будет работать правильно. Вы должны начать строку с web:.

<command> указывает команду, которую должен выполнить каждый dyno данного типа процесса при запуске, например rake jobs:work

.

Для Django, при разработке вы обычно используете python manage.py runserver для запуска приложения, поэтому разумной попыткой для Django будет

web: python manage.py runserver

Это должно работать, но это не подходит для работы на производстве:

НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СЕРВЕР В ПРОИЗВОДСТВЕННЫХ УСЛОВИЯХ. Он не проходил аудита безопасности или тестов производительности. (И так оно и останется. Мы занимаемся созданием веб-фреймворков, а не веб-серверов, так что улучшение этого сервера для работы в производственной среде выходит за рамки Django.)

<<<Вместо этого вы должны использовать веб-сервер производственного класса в производстве. Gunicorn является распространенным выбором, и

вы можете запустить ваше Django приложение с Gunicorn следующим образом:

gunicorn myproject.wsgi

Составляя все это вместе, Procfile для Django на Heroku может выглядеть следующим образом

web: gunicorn myproject.wsgi

где myproject - имя вашего проекта Django. Это именно то, что предлагает документация Heroku для Django-приложений.

Обратите внимание, что вам придется добавить Gunicorn в зависимости вашего проекта, чтобы Heroku установил его. Я рекомендую также установить его локально, чтобы вы могли использовать heroku local для тестирования вашего приложения на вашей dev-машине в условиях, более похожих на производственную среду Heroku.

heroku ps:scale используется для изменения количества и типа дино для типов процессов, которые вы уже определили. Он не имеет никакого отношения к определению этих типов процессов. Именно для этого предназначен ваш Procfile.

в Procfile, тип

release: python manage.py migrate
web: gunicorn yourprojectname.wsgi

В runtime.txt введите вашу версию python следующим образом

python-3.9.6

Наконец, вам понадобится requirements.txt

  • Создайте сначала приложение в heroku dashboard и выберите осмысленное имя
  • .
  • скопируйте его url: herokuappname.herokuapp.com в ALLOWED_HOSTS = ['herokuappname.herokuapp.com']
  • Установите DEBUG = False
  • Затем в терминале перейдите в папку проекта и введите следующие команды одну за другой
  • Heroku login
  • heroku git:remote -a yourAppname
  • git init
  • git add .
  • git commit -m "first push"
  • git push heroku master

После успешного развертывания

  • heroku logout
Вернуться на верх