连接到EC2 Django开发服务器

时间:2012-03-26 01:32:16

标签: django amazon-ec2

我是EC2和Web开发的新手。目前我正在运行Linux EC2实例,并已安装Django。在开始我的真实项目并尝试运行Django测试服务器之前,我正在创建一个测试项目。

这是我在shell中的输出:

python manage.py runserver ec2-###-##-##-##.compute-1.amazonaws.com:8000
Validating models...

0 errors found
Django version 1.3, using settings 'testsite.settings'
Development server is running at http://ec2-###-##-##-##.compute-1.amazonaws.com:8000/
Quit the server with CONTROL-C.

为了测试它是否正在徘徊我尝试访问:ec2-###-##-##-##.compute-1.amazonaws.com:8000但我总是从浏览器中收到“无法连接”消息。

每当我在计算机上执行此操作时,我会成功访问DJango开发主页127.0.0.1:8000。当我在我的EC2实例上执行此操作而不是我自己的笔记本电脑时,有人可以帮我弄清楚我做错了什么/可能会丢失吗?

5 个答案:

答案 0 :(得分:42)

在Ubuntu中使用ec-2实例,我发现指定0.0.0.0:8000有效:

$python manage.py runserver 0.0.0.0:8000  

当然,在安全组设置中需要为TCP打开8000。

答案 1 :(得分:18)

您可能没有在防火墙上打开端口8000。检查您的实例正在运行的安全组(可能是“默认”)并检查它正在运行的规则。您可能会发现未列出端口8000。

答案 2 :(得分:9)

1)您需要确保将端口8000作为自定义TCP规则添加到入站端口的安全组列表中

2)可能的情况是,您在AWS控制台上列出的与您的实例关联的IP是 PUBLIC IP 或PUBLIC域名(即ec2 - ### - #亚马逊指定的# - ## - ##。compute-1.amazonaws.com或174.101.122.132。

2.1)如果它是公共IP,那么您的实例无法知道分配给它的公共IP是什么,而只知道它所分配的本地IP。

2.2)要在Linux系统上获取本地IP,请键入:

    $ ifconfig

然后查看eth0数据,您将看到格式为xxx.xxx.xxx.xxx的“inet addr”旁边的IP(例如10.10.12.135)这是您的本地IP

3)要成功运行runserver,您可以执行以下两种操作之一:

    $ python manage.py runserver <LOCAL IP>:8000
    or
    $ python manage.py runserver 0.0.0.0:8000

**选项二也很有效,正如欧内斯特·艾兹在答案中提到的那样。 编辑:来自Django Book:“IP地址0.0.0.0告诉服务器监听任何网络接口”

**我的公共IP理论可能是错误的,因为我不确定亚马逊如何分配IP。我很感激被纠正。

答案 3 :(得分:1)

是的,如果您使用快速启动EC2选项,则应添加新的HTTP规则(就像它在列表中显示的那样)以运行开发服务器。

答案 4 :(得分:1)

我遇到了同样的问题。但我在EC2上运行RHEL。除了向安全组添加规​​则外,我还必须手动向firewalld添加端口。

firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload

这对我有用! (虽然不知道为什么我必须这样做)