2010-12-04 13 views
79

Por defecto,Cómo ejecutar los rieles s-p80 en el puerto 80?

rails s #running on 3000 port 

Ahora quiero ejecutarlo en el puerto 80. Así que he intentado:

sudo rails -s -p80 

Pero arrojó un error:

[email protected] ~/my/b2c2 $ sudo rails s -p80 
sudo: rails: command not found 

utilicé a RVM instalar ruby ​​& rieles. Parece que rvm es especificado por el usuario. ¿No puede encontrar los raíles en la raíz?

También probé a continuación código:

[email protected] ~/my/b2c2 $ which rails 
/home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails 
[email protected] ~/my/b2c2 $ sudo /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails s -p80 

Respuesta

192
rvmsudo rails server -p 80 
+2

tuve que actualizar rvm antes de que rvmsudo estuviera disponible para mí – the0ther

+2

[Está funcionando, pero no tengo idea de por qué] (http://i.qkme.me/ 355ovv.jpg) –

+0

@pinouchon funciona porque 'rvmsudo' hace sudo más cargando rvm como sudo. – iain

1

Si utiliza RVM, y lo hizo la configuración por defecto, entonces no debería usar sudo.

Justo:

[email protected] ~/my/b2c2 $ rails server -p 80 

Sin embargo 80 es un puerto privilegiado, por lo que necesidad de ejecutar como root, y usted tendrá que seguir las instrucciones para Multi-User installation de RVM.

+0

raíz es necesaria para los puertos con privilegios. – cfeduke

+0

@cfeduke - ¡Oh! Estás en lo correcto. – Swanand

+0

el enlace está roto :( – marimaf

6

iba a sugerir

rails=`which rails` ; sudo $rails server -p 80 

pero que todavía intenta utilizar el gemset global y no la gemset proyecto de RVM. Entonces ...

  1. Asegúrese de que sshd se esté ejecutando en su Mac. (Sistema de Preferencias => Compartir => Remote Login marcada)
  2. Asegúrese rails s se está ejecutando en el puerto 3000 como usuario no root
  3. abierto una nueva terminal y ...

    me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost

(Por cierto reducir el duplicado ` 's de los singulares en la línea de arriba, no puedo imaginar cómo escapar correctamente aquí.)

la primera es su Password:root usuario, el segundo es la contraseña para quien devuelve whoami.

Aunque probablemente desee instalar Phusion Passenger y configurarlo en su Apache local. A menos que solo intentes demoar algo muy rápido y esta no es una solución permanente, por supuesto.

+0

¡No estoy usando rvm, gracias por esto! –

+0

asegúrate de usar '/ usr/bin/which rails' en caso de que los rieles tengan alias –

0

se puede iniciar el servidor en el puerto 80

rails s -p 80 

Si el puerto 80 no se une (otros procesos no está utilizando el puerto 80).

+1

El puerto por debajo de 1024 necesita acceso raíz y no puede ejecutar la aplicación hasta que no haya configurado los rieles mediante la URL raíz. Lo he implementado y probado. –

16

justo delante de la solicitud de puerto 80 a 3000 mediante el siguiente comando:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000 

Otra opción es:

rvmsudo rails server -p 80 

Sin embargo recuerde que debe liberar a este puerto de Apache o cualquier otro servicio que consumen este puerto normalmente. Además, no estoy seguro si dar permiso a su RVD puede tener algún problema de seguridad o no.

+0

Esto consumirá dos puertos, y no permitirá ejecutar otra instancia de ruby ​​en el puerto 3000. – Konstantin

+0

¿Cómo revierte esto? Funciona perfectamente para mí, lo cual es genial, pero ¿qué ocurre si quiero deshacer la redirección? Gracias. – robins35

+0

necesita restablecer la tabla de ruta IP a la predeterminada –

Cuestiones relacionadas