Портирование Django Heroku

#django #windows #heroku

#django #Windows #heroku

Вопрос:

Пытаюсь настроить конфигурации Django для общедоступного URL.

Итак, я запустил это первым.

 $ echo "web: python manage.py runserver 0.0.0.0:$PORT" > Procfile
$ git add Procfile
$ git commit -m "Specify the command to run your project"
 

В Procfile:

 web: python manage.py runserver 0.0.0.0:$PORT 
release: python manage.py migrate
 

В Settings.py:

 PORT = os.getenv("PORT", default="5000")
# SECURITY WARNING: don't run with debug turned on in production!
# DEBUG = True

DEBUG = os.environ.get('DJANGO_DEBUG', '') != 'False'

ALLOWED_HOSTS = ["url"]
 

В env.:

 PORT=5000
SECRET_KEY=value
 

Использовал вышеуказанные команды и получил

 (portfolio) PS C:UsersarundDesktopCodeDjangoportfolio-project> heroku config:get PORT
5000
(portfolio) PS C:UsersarundDesktopCodeDjangoportfolio-project> heroku local
[OKAY] Loaded ENV .env File as KEY=VALUE Format
3:08:10 PM web.1 |  CommandError: "0.0.0.0:$PORT" is not a valid port number or address:port pair.
[DONE] Killing all processes with signal  SIGINT
3:08:10 PM web.1 Exited with exit code null
 

Я также использовал $PORT без обратной косой черты и $. Как мне поступить отсюда, чтобы заставить общедоступный URL работать.

 CommandError: "0.0.0.0:PORT" is not a valid port number or address:port pair does the same thing. 
 

веб: python manage.py runserver 0.0.0.0: 5000 будет работать, хотя для локальных

Ответ №1:

Используйте gunicorn для обслуживания вашего веб-приложения через Heroku, как описано здесь:

https://devcenter.heroku.com/articles/python-gunicorn

Что касается вашей ошибки, я думаю, что вы технически избегаете $ и поэтому не расширяете переменную.

Попробуйте удалить или, для целей отладки посмотрите, работает ли это, жестко запрограммировав порт, в котором вы ожидаете находиться, $PORT и посмотрите, работает ли это, если это так, я полагаю, вам нужно установить переменную $PORT env.

Комментарии:

1. Я использую компьютер с Windows.

2. И жесткое кодирование номера порта?

3. Попытка переключиться между local и prod после одного конфигурационного переключателя DJANGO_DEBUG. Итак, localhost: 5000 будет работать, а затем сайт после того, как я установил DJANGO_DEBUG в False.

4. Каким было решение в итоге @Arundeep?

5. procfile. windows в сочетании с некоторыми другими материалами

Ответ №2:

Мне потребовалось около 2 часов, чтобы наконец понять, что происходит, поэтому я оставляю этот ответ для всех, кому это может помочь. Если вы используете локальную ОС Windows (скажем, powershell в vscode), ни $PORT, ни $PORT не будут обрабатываться как переменные среды. Поэтому вы можете захотеть протестировать что-то жестко запрограммированное, например 5000. Но поскольку ОС Heroku основана на Linux, она распознается. Короче говоря, локально вы можете использовать

‘веб: python manage.py сервер запуска 0.0.0.0:5000’

и прежде чем перейти к Heroku, измените строку на

‘веб: python manage.py сервер запуска 0.0.0.0:$ПОРТ’

(без обратной косой черты обратная косая черта экранируется в Linux).