这是初学者的问题。对于经常做这些事情的人来说,这可能很明显。但我在设置运行在 EC2 bitnami 实例上的 django 时遇到了困难。
我设置了我的服务器,并且可以登录。为了测试这一点,我设置了投票示例。下面是我为运行它而执行的命令。
问题:
- 我在这里做错了什么?
- 如何显示我的基本民意调查页面?
- 此外,我应该遵循什么最佳实践来配置实时服务器?
任何逐步说明都将不胜感激。
----命令-----
$ cd /opt/bitnami/projects/Project #directory already exists
$ sudo python manage.py startapp polls
$ sudo chown -R bitnami * # tired of doing sudo.. Good move or not?
$ vim polls/models.py # matches the example
$ vim polls/views.py #see below
$ vim urls.py # added: (r'^polls/$', 'polls.views.index'),
$ vim settings.py #added polls
$ python manage.py syncdb # tables created successfully
$ python manage.py runserver # server started
# Now I open my browser and go to: http://10.206.xxx.yyy:8000/polls/
# also tried ports 8080 and 80
# Error: unable to connect
-------views.py-----------
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the poll index.")
我也尝试了下面所述的评论,但没有成功。
端口 80
$ sudo python manage.py runserver 0.0.0.0:80
Django version 1.3, using settings 'Project.settings'
Development server is running at http://0.0.0.0:80/
Quit the server with CONTROL-C.
Error: That port is already in use.
端口 8000
$ python manage.py runserver 0.0.0.0:8000
#also tried python manage runserver 10.206.xxx.yyy:8000 (same results)
Django version 1.3, using settings 'Project.settings'
Development server is running at http://10.206.xxx.yyy:8000/
in browser: http://10.206.xxx.yyy:8000
result: Firefox can't establish a connection to the server at 10.206.xxx.yyy:8000.
in browser: http://10.206.xxx.yyy:8000/polls
result: same Firefox can't establish a connection
网络状态
$ netstat -aon
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp6 0 0 :::80 :::* LISTEN off (0.00/0/0)
# I don't know what this means exactly and why I can't see this server from the browser
知道为什么它不起作用吗?
答案1
如果您使用 vanilla,runserver
它会连接到 localhost (127.0.0.1)。这意味着您只能在实际的服务器实例中访问它。要让它连接到实际 IP,您可以使用:
$ python manage.py runserver 0.0.0.0:8000
如果愿意,您可以使用其他端口,但如果您想在端口 80 上连接它,则需要使用 sudo:
$ sudo python manage.py runserver 0.0.0.0:80
笔记:这可能不太明显,所以以防万一:该0.0.0.0
部分是故意的。它本质上意味着连接到分配给服务器的 IP 地址。您可以使用实际的 IP 地址,但我发现这更容易:您不必记住或查找服务器的 IP。
仅供参考:当您为桥接网络设置虚拟机时,这对于浏览器测试也非常有效。虚拟机通过桥接网络在 LAN 上获得自己的 IP。因此,例如,在 Windows 主机上运行 Linux 客户机时,您可以通过这种方式在虚拟机中加载 runserver,转到 Windows 主机上打开 IE,并将其指向虚拟机的 IP 地址。
答案2
看来你正在使用BitNami DjangoStack。堆栈中包含的 Apache 服务器应该正在运行,这就是您无法在端口 80 启动服务器的原因。如果您只是在开发并且想要使用 django 服务器,您可以停止 Apache 服务器。
sudo /opt/bitnami/ctlscript.sh stop apache
另请注意,如果您想使用其他端口,您可能需要在您的亚马逊安全组。
答案3
这两个答案都是正确的,但我认为你的整个方法并不理想。django 开发服务器在某些方面很好,但实际上在云中运行不一定是其中之一。我建议实际上只使用 Apache,bitnami djangostack 让你可以轻松使用它。
因此,在运行 runserver 之前,您会做同样的事情,此时,您将编辑包含 django 内容的相应 apache 配置文件,我认为该文件称为 django.conf:
WSGIScriptAlias /django “/opt/bitnami/apps/django/conf/django.wsgi”
或者任何正确的事情(它可能已经是正确的了)。
然后编辑该文件以确保内容指向正确的位置:
sys.path.append(‘/opt/bitnami/’)
sys.path.append(‘/opt/bitnami/myproject’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘myproject.settings’
然后重新启动 apache。现在,当您访问端口 80 时,它应该会调用您的 django 代码。您可以做的一件事是确保在 settings.py 文件中将 DEBUG 设置为 True,这样您就可以消除调用 django 的问题和实际 django 代码或配置的问题。