Domyślnie,
rails s #running on 3000 port
Teraz chcę go uruchomić na porcie 80. Spróbowałem więc:
sudo rails -s -p80
Ale wyrzucił błąd:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo rails s -p80
sudo: rails: command not found
Użyłem rvm do zainstalowania Ruby & Rails. Wygląda na to, że rvm jest określony przez użytkownika. Czy nie jest w stanie znaleźć szyn w katalogu głównym?
Wypróbowałem też poniższy kod:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ which rails
/home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails s -p80
ruby-on-rails
ruby-on-rails-3
mlzboy
źródło
źródło
rvmsudo
sudo plus ładuje rvm jako sudo.socket.rb:206:in
powiązanie ': Adres już używany - bind (2) dla 0.0.0.0:80 (Errno :: EADDRINUSE) `errorPo prostu prześlij żądanie z portu 80 do 3000 za pomocą poniższego polecenia:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
Inną opcją jest:
rvmsudo rails server -p 80
Należy jednak pamiętać, aby zwolnić ten port od Apache lub innych usług, które normalnie używają tego portu. Ponadto nie jestem pewien, czy udzielenie pozwolenia sudo RVM może mieć jakiś problem z bezpieczeństwem, czy nie?
źródło
-I
z-D
, więcsudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
. Odpowiedzi tutaj są bardziej szczegółowe: serverfault.com/questions/159544/undoing-port-forwarding .Miał zamiar zasugerować
rails=`which rails` ; sudo $rails server -p 80
ale to wciąż próbuje używać globalnego zestawu gemset, a nie projektu gemset z RVM. Więc...
rails s
działa na porcie 3000 jako użytkownik inny niż rootOtwórz nowy terminal i ...
me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost
(Swoją drogą zredukuj zduplikowane znaki `` do liczby pojedynczej w powyższej linii, nie mogę dowiedzieć się, jak właściwie uciec przed tym tutaj).
Pierwsza
Password:
to Twójroot
użytkownik, druga to hasło dla każdego, ktowhoami
wraca.Chociaż prawdopodobnie chcesz zainstalować Phusion Passenger i skonfigurować go pod lokalnym Apache. Chyba że próbujesz po prostu szybko zaprezentować coś naprawdę i nie jest to oczywiście trwałe rozwiązanie.
źródło
/usr/bin/which rails
w przypadku, gdy szyny mająJeśli używasz RVM i wykonałeś domyślną konfigurację, nie powinieneś używać
sudo
.Właśnie:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ rails server -p 80
Jednak port 80 jest uprzywilejowanym portem, więc musisz działać jako root i postępować zgodnie z instrukcjami instalacji RVM dla wielu użytkowników .
źródło
możesz uruchomić serwer na porcie 80
rails s -p 80
Jeśli port 80 nie łączy się (inne procesy nie używają portu 80).
źródło