Dostęp webrick / rails z innego komputera w sieci lokalnej

Mam aplikację rails działającą na localhost: 3000. Chcę uzyskać do niego dostęp z innego komputera w tej samej sieci. Czuję się, jakbym robił to już wcześniej z łatwością, ale to przyprawia mnie o smutek. Mogę ping IP komputera dobrze, ale uderzenie ip: 3000 w przeglądarce nie działa. Próbowałem też odpalić rails s -b ipaddress i bez powodzenia.

Sugestie?

Author: agmcleod, 2011-09-07

7 answers

Spróbuj uruchomić serwer na porcie 80, twój firewall prawdopodobnie blokuje port 3000.

 3
Author: VNO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-06 20:40:53

Po upewnieniu się, że firewall po stronie serwera jest otwarty dla połączenia przychodzącego na wysokich portach (zwykle jest to prawdą, a domyślny port to 3000, więc prawdopodobnie nie musisz nic robić) musisz również uruchomić serwer w następujący sposób:

rails server -b 0.0.0.0

Który wiąże go z uniwersalnym adresem. Domyślnie wiąże się z localhost.

Używając tej metody nie musisz wiązać się z portem 80, ale możesz to polubić:

rails server -b 0.0.0.0 -p 80

(Jeśli używasz rvm, może być konieczne użycie rvmsudo)


Aby ta zmiana była bardziej trwała Edytuj swój config/boot.rb i dodaj to:

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

Wtedy należy tylko użyć rails s

źródło: https://stackoverflow.com/a/29562898/1795429

 148
Author: OneHoopyFrood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 07:05:37
rails server -b 0.0.0.0 -p 8000
To mi pomogło. Brak problemów z zaporą i nie ma potrzeby nadawania uprawnień super user.
 21
Author: tomascharad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 07:06:19

Zakładając, że Webrick uruchamia się bez problemu, jest to w 100% problem z zaporą sieciową. Powinieneś podać pewne specyfikacje, takie jak system operacyjny, na którym działa twój host i czy masz uprawnienia administratora, jeśli chodzi o kontrolowanie zapory.

Jeśli używasz Linuksa i używasz usługi zapory sieciowej iptables, musisz dodać regułę akceptującą ruch na porcie 3000. Wyglądałoby to tak:

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

To polecenie byłoby rozwiązaniem jednorazowym, musisz rozszerzyć swój obecny skrypt reguł iptables, aby stał się on za każdym razem, gdy system uruchomi się lub zaloguje.

Jeśli używasz systemu Windows, w zależności od tego, czy używasz XP czy Vista / 7, musisz zrobić coś podobnego. Zakładam, że jesteś w środowisku Vista / 7 i po prostu musisz postępować zgodnie z instrukcjami zawartymi w tym przewodniku http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall .

 4
Author: Lester Peabody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-06 20:38:34
  1. Tak, to była dobra odpowiedź ogólnie :

    rails server -b 0.0.0.0
    
  2. Jeśli używasz Ubuntu , prawdopodobnie musisz otworzyć port w firewall :

    sudo ufw allow 3000
    
  3. Jeśli Twój system działa w VirtualBox , musisz sprawdzić ustawienia sieci .

    W przypadku trybu sieciowego NATnależy kliknąć na rozszerzone opcje i tam na Przekierowanie Portów. Dodaj regułę dla protokołu TCP, host port 3000 (lub każdy inny), a port gościnny 3000.

 4
Author: Beauty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-18 20:32:53

Jednym z powodów jest to, że twój adres ip nie jest powiązany z serwerem rails. Możesz powiązać adres ip z opcją polecenia-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
 0
Author: lsc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 10:20:31

Używam Foremana do zarządzania moją aplikacją opartą na Procfile.

Dodanie -b 0.0.0.0 do mojej komendy bundle exec rails s w Procfile zadziałało na mnie.

 0
Author: Mosab.Mohamed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-10 16:35:33