在多个端口上运行Django

时间:2010-10-07 15:57:28

标签: python django

有人能告诉我如何在两个端口上同时运行Django吗?默认的Django配置仅侦听端口8000.我还想在端口xxxx上运行另一个实例。我想将所有请求重定向到第二个端口到我的Django应用程序中的特定应用程序。

我需要使用默认的Django安装来完成此操作,而不是使用像nginx,Apache等网络服务器。

谢谢


假设我的Django应用程序中有两个应用程序。现在我不是指两个单独的Django应用程序,而是“app”目录中的单独文件夹。我们称之为app1app2

我希望端口8000上的所有请求都转到app1,并且端口XXXX上的所有请求都转到app2

HTH。

3 个答案:

答案 0 :(得分:9)

只需运行./manage.py runserver的两个实例。您可以直接指定端口:./manage.py runserver 8002以侦听端口8002。

编辑我真的不明白你为什么要这样做。如果您希望两台服务器为您网站的不同部分提供服务,那么您实际上有两个网站,这两个网站需要两个单独的settings.pyurls.py个文件。然后,您将分别运行runserver的一个实例,并相应地传递设置标记:./manage.py runserver 8002 --settings=app1.settings

答案 1 :(得分:4)

还有一件事需要考虑 - django的会话内容将为每个站点使用相同的会话cookie,自cookies are not port specific以来,除非您使用多个浏览器,否则每次在Windows之间切换时都会遇到问题开发期间的会话/私人浏览。

虽然这是您在同一站点上以2个不同的用户身份登录时需要执行的操作,但是登录到在不同localhost端口上运行django的2个不同站点不必像这样工作。

一个简单的解决方案是编写一个简单的中间件来修复此问题,方法是将端口号附加到用于存储会话ID的变量名称。 Here's the one I use

答案 2 :(得分:1)

内置的Web服务器仅用于开发,因此您需要在需要在多个端口上运行的情况下使用apache或类似服务器。

另一方面,您应该只需启动多个runserver实例即可启动多个服务器。只要您使用单独的数据库服务器,我认为不会有任何额外的问题。