如何访问在Amazon ec2上运行的django应用程序?

时间:2013-11-12 05:37:26

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

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

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

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

我确实尝试通过以下方式运行django app: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请求,并成功完成。

我哪里错了?将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:9)

您正在端口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解释了如何设置它(以及一个总是习惯进入的虚拟环境)。

答案 1 :(得分:0)

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