2010-12-04 9 views
79

standardmäßigWie man Schienen s -p80 auf Port 80 laufen lässt?

rails s #running on 3000 port 

Jetzt möchte ich es auf Port laufen 80. Also habe ich versucht:

sudo rails -s -p80 

Aber es warf einen Fehler:

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

I verwendet rvm zu Installieren Sie Rubin & Schienen. Es scheint, dass rvm vom Benutzer angegeben wurde. Ist es nicht in der Lage, Schienen in der Wurzel zu finden?

Ich habe auch versucht Code unten:

[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 

Antwort

192
rvmsudo rails server -p 80 
+2

ich musste rvm update bevor rvmsudo für mich verfügbar war – the0ther

+2

[Es funktioniert, aber ich habe keine Ahnung warum] (http://i.qkme.me/ 355ovv.jpg) –

+0

@pinouchon es funktioniert, weil 'rvmsudo' sudo plus lädt rvm als sudo. – iain

1

Wenn Sie RVM verwenden, und Sie können die Standard-Setup haben, dann sollten Sie nicht sudo verwenden.

Nur:

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

jedoch 80 ist ein privilegierter Port, so dass Sie Notwendigkeit als root ausführen, und Sie werden die Anweisungen für Multi-User installation von RVM haben folgen.

+0

root wird für privilegierte Ports benötigt. – cfeduke

+0

@cfeduke - Oh! Du hast Recht. – Swanand

+0

Link ist kaputt :( – marimaf

6

Gingen

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

vorschlagen, aber das immer noch versucht, die globale gemset und nicht das Projekt gemset von RVM zu verwenden. So ...

  1. Vergewissern Sie sich, dass sshd auf Ihrem Mac läuft. (System Prefs => Freigabe => Remote-Anmeldung aktiviert)
  2. Stellen Sie sicher, rails s läuft auf Port 3000 als nicht-Root-Benutzer
  3. Öffnen Sie ein neues Terminal und ...

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

(BTW das Duplikat reduzieren `s auf einzelne, die oben in der Linie, ich kann es nicht herausgefunden, wie man hier richtig entkommen.)

die erste Password: Ihr 012 istBenutzer, der zweite ist das Passwort für wen auch immer whoami zurückkehrt.

Obwohl Sie wahrscheinlich Phusion Passenger installieren und unter Ihrem lokalen Apache einrichten möchten. Es sei denn, Sie versuchen nur, etwas schnell zu demontieren, und das ist natürlich keine dauerhafte Lösung.

+0

Ich benutze rvm nicht, danke dafür! –

+0

stellen Sie sicher, dass Sie verwenden '/ usr/bin/which rails' falls rails aliasing ist –

0

können Sie Server auf Port 80

rails s -p 80 

beginnen Wenn Port 80 nicht bindet (andere Prozesse nicht auf Port 80).

+1

Port unter 1024 benötigt root-Zugriff und Sie können keine Anwendung ausführen, bis Sie keine Rails über die root URL eingerichtet haben. Ich habe es implementiert und getestet. –

16

weiterleiten einfach die Anfrage von Port 80 bis 3000 unter Befehl:

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

Eine weitere Option ist:

rvmsudo rails server -p 80 

Beachten Sie jedoch bitte diesen Port von Apache oder anderen Diensten zu befreien, die dieses verbrauchen Port normalerweise. Außerdem bin ich nicht sicher, ob ich sudo die Erlaubnis geben darf, ein Sicherheitsproblem zu haben oder nicht?

+0

Dies wird zwei Ports verbrauchen, und es wird nicht erlauben, eine andere Ruby-Instanz auf Port 3000 zu betreiben. – Konstantin

+0

Wie kehren Sie das um? Es funktioniert perfekt für mich, das ist großartig, aber was ist, wenn ich die Weiterleitung rückgängig machen möchte? Danke. – robins35

+0

müssen Sie die IP-Routentabelle auf den Standardwert zurücksetzen –

Verwandte Themen