J'ai Vagrant/VirtualBox exécutant un système d'exploitation Ubuntu 12.04 LTS. J'ai configuré Vagrant pour transférer le port invité 8000 vers mon port hôte 8888.
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8000 => 8888 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
Lorsque la machine virtuelle démarre, je démarre un serveur de développement Django sur le port 8000.
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Très bien, je peux le mettre en arrière-plan et je peux même curl localhost:8000
et obtenir une sortie du serveur
<div id="explanation">
<p>
You're seeing this message because you have <code>DEBUG = True</code> in your
Django settings file and you haven't configured any URLs. Get to work!
</p>
</div>
Mais lorsque j'essaie de frapper le serveur depuis mon ordinateur hôte avec Firefox/Chrome/Telnet, la connexion est réinitialisée/Connexion perdue/ERR_CONNECTION_RESET, etc.
J'ai d'abord pensé que c'était peut-être quelque chose d'iptables, mais il s'avère que Ubuntu a tout autorisé par défaut. J'ai également désactivé le pare-feu sur mon ordinateur hôte. Comment puis-je aller au fond des choses?
J'ai eu Django à l'écoute sur 127.0.0.1:8000 (par défaut)
Comme expliqué dans la réponse de Mitchell ici: La redirection de port de Vagrant ne fonctionne pas J'aurais dû écouter sur 0.0.0.0. Voici une citation de sa réponse:
Je voulais ajouter une note supplémentaire selon laquelle cela est souvent causé par le serveur au sein de VM car il se lie à 127.0.0.1, qui est un bouclage . Assurez-vous que le serveur est lié à 0.0.0.0 pour que toutes les interfaces peuvent y accéder.
Si vous utilisez Django, vous voulez démarrer le serveur de développement de la manière suivante: ./manage.py runserver 0.0.0.0:8000
Une autre solution consiste à utiliser ssh tunneling with vagrant . Ouvrez un terminal et cd
dans le répertoire où votre Vagrantfile
est . En supposant que votre machine virtuelle est opérationnelle (vagrant up
), exécutez la commande suivante.
# save vagrant ssh config to a file named `vagrant-ssh-config`
vagrant ssh-config > vagrant-ssh-config
Transférez ensuite le port 8000 de l'invité à l'hôte.
ssh -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default
Maintenant, ouvrez votre navigateur et vérifiez 127.0.0.1:8000
.
Notez que la commande précédente ouvrira également un shell sur serveur ssh. Si vous voulez ouvrir le tunnel ssh sans un shell sur le serveur ssh, ajoutez -N
ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default