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