#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).