안녕하세요! 해당 가이드를 따라 Ubuntu 18.04 가상 머신(VMware Workstation 15 Player 사용)에 Discourse를 성공적으로 설치했습니다. VM 내부에서 http://localhost:3000/에 접근하는 것은 문제없지만, Windows 10 호스트 시스템에서는 접속할 수 없습니다. VM 네트워크는 브리지드(bridged) 모드로 설정되어 있으며, rails 서버를 실행하기 위해 다음 명령을 사용했습니다:
bundle exec rails server --binding=0.0.0.0
하지만 호스트 머신에서 http://192.168.0.172:3000/로 접속하면 연결 거부(connection refused) 오류가 발생합니다. VM 내부에서 간단한 Python HTTP 서버를 설정해 보았습니다:
python3 -m http.server 3000
이것은 호스트 머신에서 정상적으로 접속할 수 있으므로, 이 문제가 Discourse에만 특이한 것 같다고 생각합니다. 제가 놓치고 있는 부분이 있을까요?
안녕하세요 @neounix, 답변 주셔서 감사합니다. VM 네트워크를 이미 브리지 모드로 설정해 두었고, 같은 포트(3000)와 주소(0.0.0.0)로 리스닝하는 간단한 Python HTTP 서버를 통해 외부에서 접근할 수 있습니다. 그런데 왜인지 Discourse 서버에서는 작동하지 않네요…
여기서 문제는 --binding 옵션이 완전히 무시된다는 것입니다. 로컬에서 해당 명령어를 실행해 보니 출력 결과에 이 줄이 있었습니다(출력 내용이 매우 방대해서 이 줄을 놓치기 쉽습니다):
I, [2020-06-08T17:26:55.938086 #21001] INFO -- : listening on addr=127.0.0.1:3000 fd=15
config/unicorn.conf.rb 파일을 살펴보면, 서버가 0.0.0.0을 수신하도록 하려면 UNICORN_BIND_ALL=1 환경 변수를 설정해야 합니다. 따라서 이렇게 하면 작동해야 합니다: UNICORN_BIND_ALL=1 bundle exec rails server.
대신 bin/unicorn 스크립트를 사용할 수도 있으며, 이 스크립트는 0.0.0.0에 바인딩하는 데 사용할 수 있는 --host 옵션을 지원합니다.
감사합니다, 덕분에 고생 좀 덜었습니다.
공식 사용 가이드에 이 내용을 포함시켜 주실 수 있을까요? bundle exec rails server -b 0.0.0.0를 사용하는 작동하지 않는 솔루션 대신 말입니다.
인터넷 여기저기서 이 방법을 봤는데, 작동하지 않을 거라고는 상상도 못 했거든요.