【问题标题】:Deploying my website -- I'm totally stuck on what to do (django, gunicorn, nginx, gandi)部署我的网站——我完全被困在做什么(django、gunicorn、nginx、gandi)
【发布时间】:2015-04-16 10:58:07
【问题描述】:

我一直在想办法让我的网站上线,我真的需要一些帮助。我确定这是对某些内容的转贴,但我已经阅读了我能找到的所有内容。

我使用 django 编写了我的网站。有用。让我们将我的网站称为myproject。我正在尝试将我的网站与我购买的域名链接起来,我将其称为example.com

当我键入 whois mysite.com 时,所有内容都会出现,包括三个名称服务器:A.DNS.GANDI.NET、B.DNS.GANDI.NET C.DNS.GANDI.NET。我不知道该怎么处理这些,如果有的话。我通过 Gandi.net 购买了我的域名。

我在我的树莓派上创建了一个虚拟环境,我认为我现在可以将其用作主机。这可能是一个糟糕的主意,但我并不完全理解托管的想法,特别是因为我的网站使用 rabbitmq 连接到我在本地网络上的数据库,所以我知道我需要以某种方式连接到该数据库。我的网站进行了大量计算,或者更确切地说,它发出一个 rabbitmq 请求在我的家庭服务器上进行大量计算,然后在 myproject 上处理结果。

在我在树莓派上创建的虚拟环境中,我按照一些指南安装了 gunicorn 和 nginx。我可以运行 gunicorn 并通过http://127.0.0.1:8001 访问myproject

我不知道如何将myproject 转到example.com

我通过 Gandi “购买”了免费的 Simple Hosting 网站,我可以通过我已经在 djago 和 html 中完成的一系列自定义来“编辑我的网站”,所以我不想这样做。

这是我的 virtualenv/django 设置:

gunicorn.config.py:

command = '/usr/local/virtualenvs/django_virtualenv/bin/gunicorn'
pythonpath = '/usr/local/virtualenvs/leagueofanalysis'
bind = '0.0.0.0:8001'
workers = 1

ngnix 配置文件:

server {
server_name example.com;

access_log off;

location /static/ {
    alias /usr/local/virtualenvs/myproject/static/;
}

location / {
    proxy_pass http://www.example.com:8001;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}

我的项目 django settings.py:

...
ALLOWED_HOSTS = '*' # I need to change this, but what to???
...

显然我是新手,但我是一名研究生,精通计算机,而且我已经使用 linux 10 年了,所以我对编程或类似的东西并不陌生。我只是不明白这个网站的爵士乐!

请解释我如何配置 djano、gunicorn、nginx 和 gandi.net 来发布我的网站,以及其他任何你能说我不理解的内容。如果您也有关于托管的建议,那将不胜感激,因为我知道我无法在我的树莓派上托管,但我不明白其他服务如何允许您托管。例如,您是否真的只是 ssh 进入,安装 gunicorn、nginx、rabbitmq 等,然后将您的 django 项目复制过来并点击“运行”?

在过去的 10 天里,我阅读了大量指南和文档,但我显然遗漏了一些东西。如果您发布指向指南的链接,请用您自己的知识对其进行大量补充。谢谢!

另外,如果需要,请告诉我您还需要什么其他信息。

【问题讨论】:

  • 如果 Gunicorn 监听 127.0.0.1:8001,为什么你的 nginx 配置 proxy_pass 到 example.com:8001?或者我会添加听 80;到 nginx 服务器块。我想知道 nginx 在到达 example.com 时是否不会自动使用端口 80,因为不存在监听指令。

标签: django nginx deployment gunicorn


【解决方案1】:
ALLOWED_HOSTS

变量应包含您希望为您的网站提供服务的域列表。例如,如果您的变量看起来像这样

ALLOWED_HOSTS = [".example.com", "foo.net"]

您的 django 应用程序将在 me.example.com example.com www.example.com(注意“example”之前的点)和 foo.net 上为您的网站提供服务,但不会在该列表之外的任何其他域上提供服务。

另外,您的 nginx 和 gunicorn 设置似乎有点不对劲。为此,我会指出你here。按照这个一步一步来,它是一个很好的教程,关于如何使用套接字文件而不是 proxy_pass 让 gunicorn 和 nginx 运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2021-09-12
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2020-12-26
    • 2020-12-18
    • 2020-04-06
    相关资源
    最近更新 更多