2011-09-06 9 views
48

Tengo una aplicación de rieles ejecutándose en localhost: 3000. Deseo acceder desde otra computadora en la misma red. Siento que ya he hecho esto con facilidad, pero me está causando un poco de dolor. Puedo hacer ping al IP de la computadora sin problemas, pero presionar ip: 3000 en el navegador no funciona. Intenté lanzar rails s -b ipaddress también, y no tuve suerte.Acceso a webrick/rails desde otra computadora en la red local

Sugerencias?

+0

¿Tiene un servidor de seguridad que bloquea este acceso? – Brian

+0

Es difícil de decir, ya que está en la red de mi trabajo, no en casa. La computadora que la ejecuta está conectada a la subred 192.168.100. Mi segunda computadora es una laptop en wifi, misma subred. – agmcleod

+2

Trate de ejecutarlo en el puerto 80 en lugar de 3000 – VNO

Respuesta

2

intente ejecutar el servidor en el puerto 80 en su lugar, el servidor de seguridad es, probablemente, bloqueando el puerto 3000.

+2

Lo hice, pero todavía no puedo acceder a myip: 80 ya sea desde la misma máquina u otra en la misma red – marimaf

+1

OneHoopyFrood answer es perfecto –

+2

La respuesta de OneHoopyFrood debe ser la que se marque. Esta respuesta es bastante floja. –

4

Suponiendo que Webrick se inicia sin problemas, se trata de un problema del 100% de firewall. Debe proporcionar algunas especificaciones, como qué sistema operativo está ejecutando su host y si tiene o no privilegios de administrador en cuanto al control del firewall.

Si estás en Linux y en funcionamiento el servicio iptables firewall, es necesario agregar una regla para aceptar el tráfico a través del puerto 3000. Se vería algo como:

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

ese comando sería un uno Sin embargo, necesitaría ampliar su secuencia de comandos actual de las reglas de iptables para que sea permanente cada vez que su sistema arranque o inicie sesión.

Si está ejecutando Windows, dependiendo de si está ejecutando XP o Vista/7, necesitarías hacer algo similar. Asumiré que estás en el entorno de Vista/7, y solo necesitarías seguir los pasos provistos a través de esta guía http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall.

139

Después de asegurarse de que su servidor de seguridad del lado del servidor está abierto a la conexión entrante en puertos altos (esto es normalmente verdadero y el puerto por defecto es 3000, por lo que es probable que no tiene que hacer nada) también debe iniciar el servidor de esta manera:

rails server -b 0.0.0.0 

que se une a la dirección universal. Se une a localhost de forma predeterminada.

El uso de este método que no tiene que enlazar con el puerto 80, pero se puede desea:

rails server -b 0.0.0.0 -p 80 

(Si utiliza RVM entonces es posible que tenga que utilizar rvmsudo)


Para realizar este cambio más permanente editar su config/boot.rb y añadir:

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

Entonces sólo debería tener que utilizar rails s

Fuente: https://stackoverflow.com/a/29562898/1795429

+5

La respuesta elegida no me ayudó porque el firewall ya estaba desactivado, sin embargo, este sí lo hizo. – nipponese

+0

Esto funcionó para mí. –

+0

Sin desactivar el servidor de seguridad "rails server -b 0.0.0.0" no funcionó para mí. Primero tuve que desactivar el firewall usando: "sudo ufw disable" y luego ejecuté el servidor usando: "rails server -b 0.0.0.0" –

21
rails server -b 0.0.0.0 -p 8000 

Esto funcionó para mí. Sin problemas de firewall, y sin necesidad de otorgar permisos de superusuario.

0

Una razón es que su ip no está vinculada al servidor de rieles. Puede enlazar el ip con la opción de comando -b.

Usage: rails server [mongrel, thin etc] [options] 
-p, --port=port     Runs Rails on the specified port. 
           Default: 3000 
-b, --binding=IP     Binds Rails to the specified IP. 
           Default: localhost 
3
  1. Sí, esto fue una buena respuesta en general:

    rails server -b 0.0.0.0 
    
  2. Si utiliza Ubuntu, es probable que tenga que abrir el puerto en el cortafuegos:

    sudo ufw allow 3000 
    
  3. Si su sistema se ejecuta en VirtualBox, debe verificar su configuración de red .

    En el caso del modo de red NAT tiene que hacer clic en las opciones extendidas y allí en Reenvío de puertos. Agregue una regla para protocolo TCP, puerto host 3000 (o cualquier otro) y puerto de invitado 3000.

Cuestiones relacionadas