【问题标题】:How do I access my django app running on Amazon ec2?如何访问我在 Amazon ec2 上运行的 django 应用程序?
【发布时间】:2013-11-12 05:37:26
【问题描述】:

所以,我查看了堆栈溢出 + 其他站点,但未能解决这个问题:因此发布了这个问题!

我最近开始学习 django ......现在正在尝试在 ec2 上运行它。

我有一个这种格式的 ec2 实例:ec2-xx-xxx-xx-xxx.us-west-2.compute.amazonaws.com,我在上面运行了一个 django 应用程序。我更改了此实例的安全组以允许 http 端口 80 连接。

我确实尝试通过以下方式在 django 应用程序中运行它:python manage.py runserver 0.0.0.0:8000 和 python manage.py runserver ec2-xx-xxx-xx-xxx.us-west-2.compute。 amazonaws.com:8000,这似乎也没有帮助!

为了确保 django 方面没有任何问题,我打开了另一个终端窗口并 ssh 进入实例并向 localhost:8000/admin 发出 curl GET 请求,该请求成功通过。

我哪里错了?将不胜感激!

【问题讨论】:

  • 这可能是端口限制问题。您应该让您的应用在端口 80 或 8080 而不是 8000 上运行。

标签: python django amazon-web-services amazon-ec2


【解决方案1】:

您正在端口 8000 上运行应用程序,而该端口未在实例上打开(您仅打开端口 80)。

所以要么关闭端口 80,然后从安全组打开端口 8000,要么在端口 80 上运行您的应用。

在小于 1024 的端口上运行任何应用程序都需要 root 权限;所以如果你以普通用户的身份尝试python manage.py runserver 0.0.0.0:80,你会得到一个错误。

除了sudo python manage.py runserver 0.0.0.0:80,你有几个选择:

  1. 为 django 运行预配置的 AMI 映像(例如来自 bitnami 的 this one)。

  2. 配置前端服务器监听 80 端口,然后将请求代理到您的 django 应用程序。这里的常见堆栈是 nginx + gunicorn + supervisor,this blog post 解释了如何设置它(以及一个始终是一个好习惯的虚拟环境)。

【讨论】:

  • 成功了!谢谢布尔汉!我认为添加 HTTP 连接就足够了。我需要将端口 8000 上的 TCP 连接添加到我的安全组。现在工作。谢谢!
  • 我有同样的问题,可以curl,无法从ec2公共dns访问页面,我得到一个404,nginx错误。我已经为端口 8000 添加了 tcp 规则
  • 我遇到了完全相同的问题,添加了一个自定义 TCP,端口范围为 8000,来源:0.0.0.0/0 起到了作用,谢谢!
【解决方案2】:

确保在 Django project/app/settings.py 脚本的 ALLOWED_HOSTS 部分中包含您的 IPv4 公共 IP 地址...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多