Vagrant-从主机连接到django服务器

Vagrant-从主机连接到django服务器

我已经为此挣扎了好几天。这让我发疯了,因为我本可以将所有时间都花在开发上。我在 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

相关内容