Development Tip

로컬 네트워크의 다른 컴퓨터에서 webrick / rails에 액세스

yourdevel 2020. 12. 9. 21:54
반응형

로컬 네트워크의 다른 컴퓨터에서 webrick / rails에 액세스


localhost : 3000에서 실행되는 rails 응용 프로그램이 있습니다. 동일한 네트워크에있는 다른 컴퓨터에서 액세스하고 싶습니다. 전에 쉽게 해본 것 같지만 슬픔을 느끼고 있습니다. 컴퓨터의 IP를 ping 할 수는 있지만 브라우저에서 ip : 3000을 누르면 작동하지 않습니다. 나는 발사 rails s -b ipaddress시도했지만 운이 없었다.

제안?


대신 포트 80에서 서버를 실행 해보십시오. 방화벽이 포트 3000을 차단하고있을 수 있습니다.


서버 측 방화벽이 높은 포트에서 들어오는 연결에 대해 열려 있는지 확인한 후 (일반적으로 true이고 기본 포트는 3000이므로 아무것도 할 필요가 없습니다) 다음과 같이 서버를 시작해야합니다.

rails server -b 0.0.0.0

범용 주소에 바인딩합니다. localhost기본적으로에 바인딩됩니다 .

이 방법을 사용하면 포트 80에 바인딩 할 필요가 없지만 다음과 같이 할 수 있습니다.

rails server -b 0.0.0.0 -p 80

(rvm을 사용하는 경우을 사용해야 할 수 있습니다. rvmsudo)


이 변경을 더 영구적으로 만들려면 다음 config/boot.rb을 추가하십시오.

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

그런 다음 사용해야합니다 rails s

출처 : https://stackoverflow.com/a/29562898/1795429


rails server -b 0.0.0.0 -p 8000

이것은 나를 위해 일했습니다. 방화벽 문제가 없으며 슈퍼 사용자 권한을 부여 할 필요가 없습니다.


  1. 예, 이것은 일반적으로 좋은 대답 이었습니다 .

    rails server -b 0.0.0.0
    
  2. Ubuntu 를 사용하는 경우 방화벽 에서 포트를 열어야합니다 .

    sudo ufw allow 3000
    
  3. 시스템이 VirtualBox 에서 실행 중이 네트워크 설정 을 확인해야 합니다 .

    네트워크 모드의 경우 NAT확장 옵션을 클릭하고 포트 포워딩 을 클릭해야합니다 . TCP 프로토콜, 호스트 포트 3000 (또는 기타) 및 게스트 포트 3000에 대한 규칙을 추가합니다.


Webrick이 문제없이 시작된다고 가정하면 이것은 100 % 방화벽 문제입니다. 호스트가 실행중인 운영 체제 및 방화벽 제어에 대한 관리자 권한이 있는지 여부와 같은 몇 가지 사양을 제공해야합니다.

Linux에서 iptables 방화벽 서비스를 실행하는 경우 포트 3000을 통한 트래픽을 허용하는 규칙을 추가해야합니다. 다음과 같이 표시됩니다.

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

이 명령은 일회성 솔루션이지만 시스템을 부팅하거나 로그인 할 때마다 영구적으로 만들기 위해 현재 iptables 규칙 스크립트를 확장해야합니다.

Windows를 실행하는 경우 XP 또는 Vista / 7을 실행하는지 여부에 따라 비슷한 작업을 수행해야합니다. 귀하가 Vista / 7 환경에 있다고 가정하고이 가이드를 통해 제공된 단계를 따르기 만하면됩니다. http://windows.microsoft.com/en-US/windows7/Open-a-port -in-Windows-Firewall .


한 가지 이유는 IP가 레일 서버에 바인딩되지 않았기 때문입니다. -b 명령 옵션으로 ip를 바인딩 할 수 있습니다.

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

Foreman을 사용하여 Procfile 기반 응용 프로그램을 관리하고 있습니다.

Procfile에서 -b 0.0.0.0bundle exec rails s명령에 추가하면 저에게 효과적이었습니다.

참고 URL : https://stackoverflow.com/questions/7325663/access-webrick-rails-from-another-computer-on-local-network

반응형