【问题标题】:Django CookiecutterDjango Cookiecutter
【发布时间】:2018-01-17 11:07:01
【问题描述】:

我正在尝试在 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 安装。找不到任何文档?

谢谢。

【问题讨论】:

    标签: django production-environment cookiecutter-django


    【解决方案1】:

    在这个阶段,您需要将'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 上的网站,因此您的ALLOWED_HOSTS 中不需要'128.199.100.100:8000'

    【讨论】:

    • 我添加了两个主机,但仍然出现相同的错误?我应该直接进入 Nginx 部分还是必须先掌握这一步?
    • 确保你已经重启runserver,如果你仍然不能让它工作,那么你可以尝试继续,因为最终的部署不会端口8000。
    • @AlexVolkov 我不明白你在问什么。
    【解决方案2】:

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

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

    然后仔细查看定义主机允许的 IP 地址列表的语法。环境变量的语法和django环境变量完全不同,搞得我一头雾水。

    一开始我使用 python 语法定义了 DJANGO_ALLOWED_HOSTS

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

    查看 Settings 部分下的错误消息跟踪是完全不正确的,我得到了以下 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"
    

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 2023-01-02
      • 2020-03-21
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多