1

我正在尝试在 Digital Ocean 服务器上使用 Cookiecutter。(不使用 Docker)

我按照指示在 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 安装。找不到任何文件?

谢谢你。

4

2 回答 2

0

在这个阶段,您需要将'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 以使用套接字文件,并且您将使用 Nginx 在端口 80 上访问该网站,因此您不需要'128.199.100.100:8000'在您的ALLOWED_HOSTS.

于 2018-01-17T11:22:19.890 回答
0

我有类似的问题,我相信我找到了解决方案。

如果您使用传递 DJANGO_ALLOWED_HOST 值的环境变量(部署时复制凭据的最安全方式)。

然后仔细查看定义主机允许的 IP 地址列表的语法。环境变量的语法与 django 环境变量完全不同,这让我很困惑。

起初我使用 python 语法定义了 DJANGO_ALLOWED_HOSTS

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"
于 2019-04-24T22:34:15.823 回答