J'essaye juste d'exécuter mon serveur localement. Je suis sur Windows et utiliser Ruby on Rails sur Windows est une douleur, donc j'utilise Vagrant. Je fais toutes ces commandes depuis mon shell Vagrant.
J'ai essayé les rails s et rails s -b 0.0.0.0 . Les deux me donnent des réponses OK dans le terminal:
config.vm.network "forwarded_port", guest: 3000, host: 3000
Cependant, quand je vais à localhost: 3000 dans mon navigateur, cela me donne: p>
curl: (7) Failed to connect to localhost port 3000: Connection refused
Quand j'ai essayé de curl http: // localhost: 3000 get:
This site can't be reached. localhost refused to connect.
I ont également la ligne de code suivante dans mon fichier Vagrant:
=> Rails 5.2.3 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.6.1-p33), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development
Je ne sais vraiment pas quoi faire ensuite. En ce moment, j'installe le fichier ISO d'Ubuntu (cela se fera dans 5 heures, donc c'est un peu de temps) pour créer une instance VirtualBox comme sauvegarde si cela ne fonctionne pas. En espérant pouvoir trouver une solution à ce problème.
3 Réponses :
L'élément clé ici est "localhost" sur votre boîte Vagrant et "localhost" sur votre machine sont deux choses différentes. La redirection de port peut souvent résoudre ce problème, mais si vous avez deux machines Vagrant utilisant le même port, vous pouvez envoyer du trafic vers le mauvais.
Il est souvent préférable d'obtenir l'adresse IP de la machine Vagrant et de s'y connecter directement. Si cette adresse IP ne cesse de changer, vous pouvez la verrouiller:
config.vm.network "private_network", ip: "172.30.1.5"
Ensuite, vous vous connectez à http://172.130.1.5:3000/ de manière prévisible.
C'est intéressant. Mais, ce post stackoverflow.com/questions/ 14870900 / how-to-find-the-vagrant -ip dit que la box Vagrant n'a pas d'adresse IP ...? Je pensais que mon IP serait partagée avec Vagrant puisque ce Vagrant est sur ma machine.
Par défaut, il n'a pas d'adresse IP externe, comme dans une adresse accessible en dehors de votre propre machine. Cependant, il a toujours une sorte d'adresse IP. Vous ne pouvez pas partager l'IP sauf via le mode réseau "NAT", qui est une valeur par défaut pour autant que je sache.
J'ai donc ajouté cette ligne de code dans mon Vagrantfile. Ensuite, j'ai couru rails s et je suis allé à http://172.130.1.5:3000/ mais la connexion est toujours refusée. Ma ligne de commande dit Écoute sur tcp: // localhost: 3000 même si j'ai spécifié l'adresse IP de la machine Vagrant.
S'il écoute "localhost", il n'acceptera pas les connexions externes. Vous devez vous lier à 0.0.0.0 comme vous l'avez fait dans votre question avec -b . La liaison à 127.0.0.1 (ou :: 1 en IPv6) signifie que seules les connexions locales sont autorisées et que votre machine Windows n'est pas considérée comme locale, c'est une machine différente du point de vue IP.
Attendez, ce que vous venez de dire n'est-il pas contradictoire? La liaison n'autorise que les hôtes locaux et ma machine Windows n'est pas considérée comme locale. Alors ... ça ne va pas m'empêcher de me connecter au serveur? Quoi qu'il en soit, j'ai essayé cela, en exécutant rails s -b 0.0.0.0 et en allant à http://172.130.1.5:3000/ mais cela a toujours échoué. Cela n'a aucun sens pourquoi la ligne de commande continue de dire: Écoute sur tcp: // localhost: 3000
Oh, vous devez dire qu'en liant le réseau privé à cette adresse IP, ma machine et la machine Vagrant sont considérées comme locales.
Il y a une différence entre «local» comme dans «même machine physique» et «local» comme «localhost» sur la pile IP.
continuons cette discussion dans le chat .
Si la redirection de port est activée, il n'est pas nécessaire de se connecter à l'adresse IP de la VM. Vous verriez également une erreur lors du démarrage de la VM si une autre VM utilisait déjà ce port.
Ce n'était pas le problème. Mais j'ai fini par faire fonctionner mon serveur Rails en utilisant VB.
Résolu en exécutant Ruby on Rails sur la machine UBUNTU VirtualBox.
Je voudrais vous suggérer docker. Docker n'est pas nouveau, il a été lancé en 2012 et est depuis devenu l'une des technologies à la croissance la plus rapide dans le développement Web et les devops.
Certains des avantages que vous aurez si vous commencez à l'utiliser:
Bon codage avec la baleine!
J'y jetterais un œil! Merci filipe: p
Est-ce là toute la sortie que vous obtenez de
rails s -b 0.0.0.0? Voici le mien: Puma démarre en mode cluster ... Version 3.12.0 (ruby 2.5.5-p157), nom de code: Llamas in Pyjamas Min threads: 1, max threads: 1 Environnement: développement Process workers: 1 Preloading application Écoute sur tcp : //0.0.0.0: 3000 Utilisez Ctrl-C pour arrêter Worker 0 (pid: 6037) démarré, phase: 0 Une chose clé à rechercher estÉcoute sur tcp: //0.0.0.0: 3000 code >. Peut-être que quelque chose ne va pas dans votre config / puma.rb? Pouvez-vous poster si vous l'avez?Un moyen simple de tester si le port est ouvert et de retirer les rails et le puma de l'équation - dans le terminal vagrant, faites
nc -l 3000- netcat écoutera sur le port 3000 et affichera tout ce qu'il reçoit. Ensuite, dans votre navigation, connectez-vous à localhost: 3000. nc doit afficherGET / HTTP / 1.1avec les autres en-têtes http envoyés par le navigateur. S'il n'y a pas de sortie, il y a probablement un problème avec la redirection de port. S'il y a une sortie, il y a probablement un problème avec la configuration des rails.