内部IP経由で開く方法

専門家の方々、こんにちは。

ご尽力に心から感謝申し上げます!!

現在、ローカルコンピュータ上で Discourse のビルドに成功し、localhost:3000 でアクセスできるようになりました。トピックの作成や投稿など、非常に素晴らしい動作をしています。

主に こちら のガイドを参考にしました。本当に素晴らしいです!

しかし、内部 IP(つまり LAN 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

「いいね!」 2

サーバーを起動するためにどのコマンドを使用しましたか?次のコマンドを使用する必要があります。

bundle exec rails server --binding=0.0.0.0
「いいね!」 3

私も、Ubuntu での最新の開発環境インストール後、開発用ボックスが IP アドレスを認識しないという問題に直面しました。

シモンが推奨した手順を踏んだ上で、bin/rails を使用したことも確かです。

「いいね!」 2

@simonk

ご返信ありがとうございます!!
ターミナルでプロセスを停止するために Ctrl+C を使用し、その後 bundle exec rails server --binding=0.0.0.0 コマンドで再起動しましたが、まだ動作しないようです。

正しい停止方法と再起動の方法についてご教示いただけますでしょうか?ターミナルを閉じても、まだフォーラムにアクセスできることに気づきました。また、Docker コンテナを使用してビルドしていないため、./launcher stop app というコマンドを実行するための launcher が存在しません。さらに、kill $(cat tmp/pids/server.pid) を試してみましたが、cat: tmp/pids/server.pid No such file or directory というエラーが表示されました。

何かヒントがあれば、大変助かります。

よろしくお願いいたします。

Chieh

「いいね!」 1

(免責事項:私はこの方法で Rails を実行したことはありません。代わりに Docker ベースの開発環境 を使用しています)

本当にそうでしょうか?以前、ブラウザが Discourse アプリケーションをキャッシュしていたために、サーバープロセスが実行されていないにもかかわらずトピック間を閲覧できてしまい、誤解したことがありました。代わりに curl を使ってテストすることをお勧めします。

curl http://localhost:3000

また、ruby プロセスが実行されているか確認することもできます。

ps -ef | grep ruby

netstat ツールを使えば、どのプロセスがどのポートでリッスンしているかがわかります。例えば、以下のように簡単な Python の Web サーバーを実行した場合:

$ 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 がポート 8099 ですべてのインターフェース(0.0.0.0 は「すべてのインターフェース」を意味します)でリッスンしていることがわかります。そのプロセスについてさらに詳しい情報を取得するには:

$ 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
「いいね!」 3

@simonk さん、こんにちは。

ご教示いただき、ありがとうございます!非常に役立ちました。加えて、私はすでにこの方法で Docker コンテナに移行しています。
Discourse についてもさらに試してみたいと思います。とても楽しみです。

改めてありがとうございます。

よろしくお願いいたします、
Chieh

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.