所以,我已经查看了堆栈溢出+其他站点,但还没有能够解决这个问题:因此发布此问题!
我最近开始学习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请求,并成功完成。
我哪里错了?将不胜感激任何帮助!
答案 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
。
为django运行预先配置的AMI图像(如bitnami中的this one)。
将前端服务器配置为侦听端口80,然后将请求代理到django应用程序。这里的常见堆栈是nginx + gunicorn + supervisor,this blog post解释了如何设置它(以及一个总是习惯进入的虚拟环境)。
答案 1 :(得分:0)
确保在Django project / app / settings.py脚本的ALLOWED_HOSTS部分中包括您的IPv4公共IP地址...