Я боролся с этим в течение многих дней. Его управление мной безумный, потому что все то время я, возможно, потратил разработку. Я установил django в VM Ubuntu, и я должен получить доступ к нему от хоста (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
, и это обнаруживает апачскую работу сервера порта 80, но ничего не обнаруживает на порте 8000. Это могло быть проблемой, apache2 мог использовать порт, который обычно использовал бы django сервер?
Править: Я думаю, что проблема состоит в том, что гостевой порт установлен на 22. Который является проблемой, потому что это портирует используемый другими сервисами, когда я пытаюсь выполнить django веб-сервер на ней, она говорит свое запрещенное. И настоящая проблема здесь состоит в том, когда я изменяюсь config.yaml
файл, это ничего не изменяет, когда я перезагружаю VM. Ничто, что я делаю, к которому config.yaml файл имеет любой эффект. Есть ли своего рода кэш, который я должен очистить?
Я понял это. Проблема была с конфигурацией перенаправления портов. Я решил его путем добавления этого к 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