我已经为此挣扎了好几天。这让我发疯了,因为我本可以将所有时间都花在开发上。我在 Ubuntu VM 中安装了 django,我需要从主机(Windows 10)访问它,但似乎没有办法访问它。我使用 puphpet 进行设置,这是 config.yaml 文件中定义网络 IP 和主机的部分:
machines:
vflm_zpwmfbk4aw05:
id: machine1
hostname: machine1.puphpet
network:
private_network: 192.168.56.101
forwarded_port:
vflmnfp_pjysbxl944a0:
host: '9346'
guest: '22'
memory: '2000'
cpus: '1'
当我像这样运行 django 服务器时:
python manage.py runserver 0.0.0.0:8000
它运行良好,但无法从主机访问它。将浏览器指向192.168.56.101:8000
它时出现 404 错误。我尝试了各种方法,更改端口、更改 IP。
文件中的内容如下/etc/hosts
:
127.0.0.1 machine1.puphpet machine1
127.0.0.1 localhost
127.0.1.1 vagrant.vm vagrant
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这是接口文件:
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp
pre-up sleep 2
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto enp0s8
iface enp0s8 inet static
address 192.168.56.101
netmask 255.255.255.0
#VAGRANT-END
我运行了一个端口扫描器192.168.56.101
,它检测到 apache 服务器在端口 80 上运行,但在端口 8000 上没有检测到任何东西。这可能是问题所在,apache2 是否使用了 django 服务器通常使用的端口?
编辑:我认为问题在于来宾端口设置为 22。这是一个问题,因为其他服务使用的端口,当我尝试在其上运行 django web 服务器时,它说它是被禁止的。这里真正的问题是当我更改文件时config.yaml
,当我重新加载虚拟机时它不会改变任何东西。我对 config.yaml 文件所做的一切都没有任何效果。我需要清除某种缓存吗?
答案1
我找到了答案。问题出在端口转发配置上。我通过将以下内容添加到 Vagrantfile 中解决了这个问题:
config.vm.network "forwarded_port", guest: 8000, host: 3333
8000
这意味着我可以通过将主机浏览器指向端口 来连接到客户机上在端口上运行的服务器3333
。例如,我在客户机上运行服务器,如下所示:
python manage.py 0.0.0.0:8000
然后在我的客户机上,我可以通过将浏览器指向此处来访问它:
127.0.0.1:3333