내부 IP로 여는 방법?

전문가분들께,

귀하의 기여에 진심으로 감사드립니다!!

현재 로컬 컴퓨터에 Discourse를 성공적으로 구축했으며, localhost:3000으로 접속할 수 있습니다. 주제 생성, 게시물 작성 등 모든 기능이 훌륭하게 작동하고 있습니다.

주요 설치 과정은 여기의 가이드를 따랐습니다. 정말 훌륭했습니다!

하지만 내부 IP(즉, 로컬 영역 네트워크 IP)로는 접속할 수 없습니다. 예를 들어 10.1.2.139와 같은 IP입니다. 이 포럼을 다른 기기(예: 노트북)에서도 접속할 수 있도록 하려면 어떻게 해야 할까요?

재현 방법

다음 주소에서 bash(install_discourse.sh) 스크립트를 가져옵니다: install-rails/linux at main · discourse/install-rails · GitHub

chmod +x install_discourse.sh
sudo ./install_discourse.sh

git clone https://github.com/discourse/discourse.git ~/discourse
sudo -u postgres createuser -s "$USER"
cd ~/discourse

source ~/.bashrc
bundle install

bundle exec rake db:create 
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

bundle exec rake autospec (여기서는 오류가 발생할 수 있습니다.)

서버 시작:

bundle exec rails server
또는
bundle exec rails server --binding=0.0.0.0

관리자 생성

RAILS_ENV=development bundle exec rake admin:create

메일 설정

mailcatcher --http-ip 0.0.0.0

로컬 IP를 통해 접속하는 방법에 대한 조언이 있을까요?
매우 감사합니다.

감사합니다,
Chieh

서버를 시작할 때 어떤 명령어를 사용하셨나요? 다음 명령어를 사용해야 합니다:

bundle exec rails server --binding=0.0.0.0

저도 최근 Ubuntu에서 개발용 설치를 한 후, 개발용 컴퓨터가 IP 주소를 수신하도록 설정하는 데 어려움을 겪었습니다.

Simon이 추천한 방법과 bin/rails를 사용하는 것 모두 수행했다고 확신합니다.

안녕하세요, @simonk님,

답변 주셔서 감사합니다!!
터미널에서 ctrl+c를 눌러 프로세스를 중단하고, bundle exec rails server --binding=0.0.0.0 명령어로 다시 시작해 보았지만 여전히 작동하지 않는 것 같습니다.

프로세스를 올바르게 중단한 후 다시 시작하는 방법을 알고 싶습니다. 터미널을 이미 닫았음에도 불구하고 여전히 포럼에 접근할 수 있기 때문입니다. 또한 도커 컨테이너를 통해 빌드하지 않아 ./launcher stop app 명령을 사용할 수 있는 launcher가 없습니다. kill $(cat tmp/pids/server.pid) 명령도 시도해 보았지만 cat: tmp/pids/server.pid No such file or directory라는 응답이 돌아왔습니다.

도움이 될 만한 힌트를 주시면 감사하겠습니다.

정말 감사합니다!

감사합니다,
Chieh

(면책 조항: 저는 이렇게 rails를 직접 실행해 본 적이 없습니다 - 대신 Docker 기반 개발 환경을 사용합니다)

정말 확실합니까? 이전에 브라우저가 discourse 애플리케이션을 캐시해 두어서 서버 프로세스가 실행되지 않는 상태에서도 주제 간 탐색이 가능했던 적이 있었습니다. 대신 curl을 사용하여 테스트해 보시는 것이 좋습니다:

curl http://localhost:3000

또한 ruby 프로세스가 실행 중인지 확인해 볼 수도 있습니다:

ps -ef | grep ruby

netstat 도구를 사용하면 어떤 프로세스가 어떤 포트에서 리스닝하고 있는지 알 수 있습니다. 예를 들어, 다음과 같은 단순한 python 웹 서버를 실행하면:

$ python3 -m http.server 8099
Serving HTTP on 0.0.0.0 port 8099 (http://0.0.0.0:8099/) ...

그런 다음 netstat를 실행하면:

$ netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address   State    PID/Program name
tcp        0      0 0.0.0.0:8099     0.0.0.0:*         LISTEN   2511478/python3
...

이것은 PID 2511478이 모든 인터페이스(0.0.0.0은 "모든 인터페이스"를 의미)의 포트 8099에서 리스닝하고 있음을 알려줍니다. 해당 프로세스에 대해 조금 더 정보를 얻으려면:

$ ps -fp 2511478
UID          PID    PPID  C STIME TTY          TIME CMD
simon    2511478 1250783  0 09:53 pts/11   00:00:00 python3 -m http.server 8099

@simonk 님, 안녕하세요!

정보 주셔서 감사합니다! 정말 유용합니다. 추가로, 저는 이미 Docker 컨테이너로 이 방식으로 이전했습니다.
Discourse에서 더 많은 것을 시도해 볼 예정입니다. 정말 기대가 됩니다.

다시 한번 감사합니다!

Chieh 드림