如何从实际计算机访问虚拟机上的Django开发服务器

12

好的,我有我的实际笔记本电脑,上面安装了vmware player。我正在作为虚拟机运行lubuntu,并在虚拟机上安装了django,测试我的应用程序,所以我运行了python manage.py runserver,我可以通过访问127.0.0.1:8000从我的虚拟机访问该应用程序,然而,如果我从实际计算机(而非虚拟机)访问127.0.0.1:8000,则会显示“chrome无法连接到127.0.0.1:8000”..有任何解决办法吗?


请查看类似的主题: https://dev59.com/y3M_5IYBdhLWcg3wt1g0 https://dev59.com/-nM_5IYBdhLWcg3w9oIA - ambi
你采用什么网络模式?桥接?NAT?仅主机? - Jeff Li
@JeffLi NAT.. 当我尝试将网络模式更改为桥接时,我的虚拟机操作系统失去了互联网访问。 - SilentDev
3个回答

17
你可以尝试在服务器上运行0.0.0.0
python manage.py runserver 0.0.0.0:8000

IP地址0.0.0.0表示“本地机器上的所有IP地址”(或本地机器上的所有IPv4地址)。

接下来,您需要VM的IP地址。在其他计算机上访问http://<ip_address_of_vm>:8000应该可以访问VM上的django开发服务器。

注意:如果您的VM只有内部IP地址(例如192.168.x.x),则只有在同一网络中的计算机才能访问VM。


嗯,不起作用,所以我运行了python manage.py runserver 0.0.0.0:8000并从虚拟机中访问了0.0.0.0:8000,它可以工作。然后我在虚拟机上打开终端并键入ifconfig,它显示inet addr:192.168.174.132,所以我从我的计算机访问了192.168.174.132:8000,但那没用...有什么想法是错的吗? - SilentDev
1
我已经成功完成了这个任务,并且在主机上连接到了 localhost:8000。我已经设置了Virtualbox使用NAT并将客户端的8000端口转发。 - Dan
1
有一个快捷方式可以做到这一点,如果你运行 python manage.py runserver 0:8000,那么它就可以从主机上访问(当然,如果你设置了端口转发等)。 - mndeveci

15

我成功地使用了@Kerberos的答案。(没有足够的积分来评论,所以我将它作为单独的答案添加)。

我在VMWare中运行Ubuntu 12.04 LTS客户机操作系统。主机笔记本电脑运行Windows 8。

如Kerberos所述,在VMware中,转到 Player ==> 管理 ==> 虚拟机设置...

在“硬件”选项卡上,选择网络适配器,然后选择 桥接:直接连接到物理网络的单选按钮。选择确定

在虚拟机中,网络连接信息现在应该与主机操作系统的互联网连接具有相同的IP地址。在我的情况下是:192.168.1.141(您的IP地址将有所不同)。

在虚拟机中,使用 python manage.py runserver 192.168.1.141:8000启动Django

使用此方法,我能够从虚拟机内部,主机计算机和同一192.168.1.xxx网络中的其他系统访问在虚拟机中运行的web服务器。


没错,但我的问题是,即使我尝试了你所做的,一旦我将VM的连接设置为“桥接”,然后点击确定,我无法从VM连接到互联网。我的VM的IP地址也没有改变,当我尝试在我的主机操作系统的IP地址上运行服务器时,它会出现错误,说“该IP地址无法分配”,我确认这里建议的两行代码:s/13505540/error-that-ip-address-cant-be-assigned-to-in-django 已经在我的etc/network/interfaces中了。 - SilentDev
2
好的,我刚刚关闭了我的虚拟机并重新启动它,然后桥接了网络,这样就可以了。在桥接之后,我只需在0.0.0.0:8000上运行服务器,然后从我的主机操作系统的Google Chrome中访问我的虚拟机IP地址(192.169.2.49:8000),这样就可以了。 - SilentDev
完美的答案! - XpressGeek
这个答案很有道理,而且确实可行。另外,有没有一种方法可以配置它,以便我们不必在runserver命令中输入完整的IP地址? - Bhanu Prakash

2

如果想要从主机外部访问虚拟机(客户机),必须将客户机网络模式设置为桥接

桥接模式将客户机连接到实际网络,以便其他计算机可以连接到它


我打开VMWare Player,点击“Player -> Manage -> Virtual Machine Settings”,然后将“Network Adapter”从“NAT”更改为“Bridged”。更改后,我的虚拟机操作系统失去了Internet连接。我在0.0.0.0:8000上运行了django服务器,并可以通过访问0.0.0.0:8000或http://192.168.174.233:8000/来自客户端操作系统访问它,但我无法从主机操作系统的这两个链接中访问它。有什么想法吗? - SilentDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接