从主机浏览器访问VirtualBox/Vagrant虚拟机上的Django服务器?

5
我有一个在VirtualBox/Vagrant上运行“bento/centos-6.7-i386”的Django Web服务器。我已经按照这个指南创建了一个Django项目:https://docs.djangoproject.com/en/dev/intro/tutorial01/
我的客户机内部有一个Web服务器在http://127.0.0.1:8000/运行,这是我第一次运行Django Web服务器。它应该是一个“Hello World”应用程序。
我该如何从主机浏览器访问此Web应用程序? 我尝试在Vagrant文件中添加此行 - config.vm.network "private_network", ip: "55.55.55.5",然后尝试运行python manage.py runserver 0.0.0.0:80命令,如其他人在以前的讨论中解释的其中一种解决方案,但我无法使用55.55.55.5:8000从我的主机浏览器访问该网站。
我该如何从浏览器访问Web服务器?
以下是我的Vagrant文件:
# -- mode: ruby -- 
# vi: set ft=ruby : 
VAGRANTFILE_API_VERSION = "2" 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
config.vm.box = "bento/centos-6.7-i386" 
config.vm.network "forwarded_port", guest: 8000, host: 8000 
config.vm.network "forwarded_port", guest: 8080, host: 8080 
config.vm.network "forwarded_port", guest: 5000, host: 5000 
config.vm.network "private_network", ip: "10.10.10.10" 
end

1
尝试运行 python manage.py runserver 0.0.0.0:8000 并访问您主机机器的8000端口。 - Klaus D.
如果您运行了 python manage.py runserver 0.0.0.0:80,请确保添加一行 config.vm.network "forwarded_port", guest: 80, host: 8800,以便将端口80从虚拟机(您运行服务器的地方)转发到主机端口8800,这样您就可以从主机Web浏览器访问 http://localhost:8800/(有时需要根据浏览器和配置更改localhost为127.0.0.1)。 - Frederic Henri
3个回答

9
你正在将客户机的8000端口转发到主机的8000端口。尝试使用以下命令:
python manage.py runserver 0:8000

接着在你的浏览器中访问:http://localhost:8000

这样可以释放端口80,如果你之后想要运行一个用于测试的web服务器的话。祝你好运!


3

如果你在你的 Vagrantfile 中使用以下代码来进行端口转发

config.vm.network "forwarded_port", guest: 8000, host: 8000

这意味着您可以在主机的端口8000上通过浏览器访问运行在端口8000的客户应用程序。因此,您可以通过在主机中输入http://127.0.0.1:8000http://localhost:8000来访问。
为什么要强制在0.0.0.0上运行您的应用程序?这不是必需的,或者如果您想使用客户IP地址访问,则没有使用端口转发的意义。
如果您在配置文件Vagrantfile中进行了更改,请务必重新加载。
vagrant reload

谢谢,这对我也有用。但是我不得不在admin.py中将IP添加到允许的主机列表中。 - thephpx

0

我在Django和VB内部端口转发方面遇到了问题。

Django不允许外部主机访问它。

所以将启动命令更改为 python3 ./manage.py runserver 0.0.0.0:8000

然后一切都正常了。


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