Джанго Печенье

Я пытаюсь использовать Cookiecutter на сервере Digital Ocean. (Не используя Докер)

Я следовал указаниям по установке на Ubuntu 16 с помощью Django, Postgres и Gunicorn. https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

Не могу пройти мимо ошибки разрешенного хоста.

DisallowedHost at /
    Invalid HTTP_HOST header: '128.199.100.100:8000'. 
    You may need to add '128.199.100.100' to ALLOWED_HOSTS

У меня есть настройка в production.py

ALLOWED_HOSTS = env.list ( 'DJANGO_ALLOWED_HOSTS', 
                       default = [ '128.199.100.100' ] )

Нужно ли мне изменить какие-либо настройки, чтобы сделать его рабочей средой?

Единственная документация на сайте Cookiecutter предназначена для pythonAnywere и Docker. http://cookiecutter-django.readthedocs.io/en/latest/deployment-on-pythonanywhere.html

Я просто хочу простую установку DO. Не можете найти документацию?

Спасибо.


person diogenes    schedule 17.01.2018    source источник


Ответы (2)


На этом этапе вам нужно добавить '128.199.100.100:8000' (включая порт) в ваш ALLOWED_HOSTS. Вы можете установить его как переменную среды в команде runserver:

ALLOWED_HOSTS = env.list ( 'DJANGO_ALLOWED_HOSTS', 
                   default = [ '128.199.100.100', '128.199.100.100:8000' ] )

Или вы можете временно добавить его в default в настройках.

DJANGO_ALLOWED_HOSTS=128.199.100.100:8000 ~/myproject/manage.py runserver 0.0.0.0:8000

В конце концов, руководство изменит gunicorn на использование файла сокета, и вы получите доступ к веб-сайту через порт 80 с помощью Nginx, поэтому вам не понадобится '128.199.100.100:8000' в вашем ALLOWED_HOSTS.

person Alasdair    schedule 17.01.2018
comment
Я добавил оба хоста и по-прежнему получаю ту же ошибку? я должен просто перейти к части Nginx или мне нужно сначала освоить этот шаг? - person diogenes; 17.01.2018
comment
Убедитесь, что вы перезапустили runserver, если вы все еще не можете заставить его работать, тогда вы можете попробовать двигаться дальше, так как окончательное развертывание все равно не перенесет 8000. - person Alasdair; 17.01.2018
comment
@AlexVolkov Я не понимаю, о чем ты спрашиваешь. - person Alasdair; 25.04.2019

У меня была аналогичная проблема, и я считаю, что нашел решение.

Если вы используете переменные среды, которые передают значение DJANGO_ALLOWED_HOST (наиболее безопасный способ копирования учетных данных при развертывании).

Затем внимательно посмотрите на синтаксис, где вы определяете список IP-адресов, разрешенных для хоста. Синтаксис переменных среды полностью отличается от переменных среды django, и это меня смутило.

Сначала я определил DJANGO_ALLOWED_HOSTS, используя синтаксис Python.

export DJANGO_ALLOWED_HOSTS="['localhost', '127.0.0.1', '192.168.1.110']"

Что совершенно неверно, поскольку, просматривая трассировку сообщения об ошибке в разделе Настройки, я получил следующее значение ALLOWED_HOSTS.

ALLOWED_HOSTS   ["['localhost',", "' 127.0.0.1'"," ' 192.168.1.110']"

Это просто означает, что переменные анализируются с совершенно другим синтаксисом. Преобразование настроек django в строку с разделителями-запятыми также не решило проблему.

export DJANGO_ALLOWED_HOSTS="localhost, 127.0.0.1, 192.168.1.110"

Результат синтаксического анализа выглядит следующим образом: обратите внимание на пробел во втором и третьем элементах.

ALLOWED_HOSTS   ['localhost', ' 127.0.0.1', ' 192.168.1.110']

Кажется, что логика, которая анализирует значения адресов, очень специфична и является единственным правильным способом перечисления нескольких хостов с использованием только запятой в качестве разделителя.

export DJANGO_ALLOWED_HOSTS="localhost,127.0.0.1,192.168.1.110"
person Alex Volkov    schedule 24.04.2019