如何公开Django的devserver?一般来说有可能吗?

2024-05-19 19:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在试用Django框架,我将分享/展示/展示一些我制作的东西给我的同事/朋友。我通过VMware在Win7下的Ubuntu工作。所以我的愿望是把我当前的pub IP和端口(例如http://123.123.123.123:8181/django-app/)发送给我的朋友,这样他们可以测试它。

问题是-我使用了django的Dev服务器(python/path to django app/manage.py runserver$IP:$PORT)。

如何公开devserver?

编辑:

哦,有件事我忘了提。不幸的是,我在Ubuntu上使用VMware。我有一个shellscript,它返回我当前的int IP 192.168.xx.xx并将其保存在环境变量($CUR_IP)中 所以,每次我想运行django的devserver时,我只需执行

python /path-to-django-site/manage.py runserver $CUR_IP:8080

这样我就变成了一个http地址(例如http://192.168.40.145:8080/app-name/),可以在虚拟机之外使用。我可以在我的主机(win7)上测试它。这就是我问这个问题的原因。我认为有一种方法可以使用ext IP并使runserver在外部也可用


Tags: topathdjangopyipapphttpmanage
3条回答

假设您已经安装了ruby,那么您只需要获得localtunnel:

gem install localtunnel

然后使用以下命令启动python开发服务器:

python manage.py runserver 0.0.0.0:8000

在另一个shell中,启动localtunnel:

localtunnel -k ~/.ssh/id_rsa.pub 8000 

它将输出一个访问本地服务器的url。

Port 8000 is now publicly accessible from http://xxxx.localtunnel.com

就这样。

python manage.py runserver 0.0.0.0:8181

这将run development server监听端口8181上的所有IP。

注意,从Jun 17, 2011 Django development开始,默认情况下服务器是线程化的(ticket #1609)

来自文档:

Note that the default IP address, 127.0.0.1, is not accessible from other machines on your network. To make your development server viewable to other machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0.

192.168.*.*是一个局域网专用地址——一旦您使用了适当的VMWare(或其他VM管理器)和防火墙咒语,使它可以从局域网访问,它仍然无法从局域网外部访问,也就是说,从整个互联网(也是一件好事,因为这样的开发服务器不是为安全性和可伸缩性而设计的。

要使具有局域网专用IP的计算机的某些端口在整个互联网上可见,您需要一个具有“虚拟服务器”功能的路由器(许多路由器,甚至是便宜的路由器都提供了这种功能,但由于每个品牌都有其独特的方式,所以不可能具体地启用它)。我还建议dyndns或其他类似的服务将一个稳定的DNS名称与您不断变化的公共IP相关联(当然,除非您正从您的连接提供商那里花钱购买一个静态IP,但后一种选择总是变得更昂贵)。

superuser.com或serverfault.com可能会提供更好的答案和详细信息(一旦您给出了问题中配置的每一个小细节),因为问题与软件开发无关,与服务器管理和配置无关。

相关问题 更多 >