77 votes

Accéder à webrick/rails depuis un autre ordinateur sur le réseau local

J'ai une application rails en cours d'exécution sur localhost:3000. Je souhaite y accéder depuis un autre ordinateur sur le même réseau. J'ai l'impression de l'avoir déjà fait facilement, mais cela me pose problème. Je peux bien faire un ping de l'IP de l'ordinateur, mais entrer ip:3000 dans le navigateur ne fonctionne pas. J'ai également essayé de lancer rails s -b adresseip, mais sans succès.

Des suggestions ?

0 votes

Avez-vous un pare-feu bloquant cet accès?

0 votes

Difficile à dire car c'est sur le réseau de mon travail, pas à la maison. L'ordinateur qui le fait tourner est connecté au sous-réseau 192.168.100 par câble. Mon deuxième ordinateur est un portable en wifi, sur le même sous-réseau.

2 votes

Essayez de l'exécuter sur le port 80 au lieu de 3000

201voto

colepanike Points 649

Après avoir vérifié que votre pare-feu côté serveur est ouvert à la connexion entrante sur les ports élevés (ce qui est normalement vrai et le port par défaut est 3000, donc vous n'avez probablement rien à faire), vous devez également démarrer le serveur comme ceci :

rails server -b 0.0.0.0

ce qui le lie à l'adresse universelle. Par défaut, il se lie à localhost.

En utilisant cette méthode, vous n'avez pas besoin de vous lier au port 80, mais vous pouvez le faire comme ceci :

rails server -b 0.0.0.0 -p 80

(Si vous utilisez rvm, vous devrez peut-être utiliser rvmsudo)


Pour rendre ce changement plus permanent, éditez votre config/boot.rb et ajoutez ceci :

require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge(Host:  '0.0.0.0', Port: 3000)
    end
  end
end

Ensuite, vous devriez simplement avoir à utiliser rails s

<em>Source : <a href="https://stackoverflow.com/a/29562898/1795429_">https://stackoverflow.com/a/29562898/1795429</a></em>

30voto

tomascharad Points 100
rails server -b 0.0.0.0 -p 8000

Cela a fonctionné pour moi. Pas de problèmes de pare-feu, et pas besoin de donner des autorisations super-utilisateur.

11voto

Beauty Points 23
  1. Oui, c'était une bonne réponse en général :

    rails server -b 0.0.0.0
  2. Si vous utilisez Ubuntu, vous devrez probablement ouvrir le port dans le pare-feu :

    sudo ufw allow 3000
  3. Si votre système fonctionne sur VirtualBox, vous devrez vérifier vos Paramètres de réseau.

    Dans le cas du mode réseau NAT vous devrez cliquer sur les options étendues et puis sur Redirection de ports. Ajoutez une règle pour le protocole TCP, le port hôte 3000 (ou un autre), et le port invité 3000.

4voto

Lester Peabody Points 1181

En supposant que Webrick démarre sans problème, il s'agit à 100% d'un problème de pare-feu. Vous devriez fournir quelques spécifications, comme le système d'exploitation sur lequel votre hôte fonctionne et si vous avez des privilèges d'administrateur en ce qui concerne le contrôle du pare-feu.

Si vous êtes sur Linux et que vous utilisez le service de pare-feu iptables, vous devez ajouter une règle pour accepter le trafic sur le port 3000. Cela ressemblerait à quelque chose comme :

iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

Cette commande serait une solution ponctuelle, vous devriez étendre votre script de règles actuel d'iptables pour la rendre permanente à chaque fois que votre système démarre ou se connecte.

Si vous utilisez Windows, selon que vous utilisez XP ou Vista/7, vous devriez faire quelque chose de similaire. Je vais supposer que vous êtes dans l'environnement Vista/7, et vous auriez juste besoin de suivre les étapes fournies dans ce guide http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall.

2voto

Mosab.Mohamed Points 71

Je utilise foreman pour gérer mon application basée sur le Procfile.

Ajouter -b 0.0.0.0 à ma commande bundle exec rails s dans le Procfile a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X