Google Cloudのポート問題についての議論?

皆さんこんにちは!Google Cloud で Discourse を起動しようと数回試みました。現在は、VM インスタンス(Ubuntu 18.04 minimal)を作成し、ターミナルから手動で Discourse をインストールする3度目の挑戦中です。ガイドに従って進め、./discourse-setup を実行するまでには問題なさそうに見えるのですが、サイト(http://forum.pvuppsala.se/)にアクセスできません。

また、Google のマーケットプレイスにある「ワンクリック」デプロイソリューション(Google 公式および Bitnami のもの)を使って Discourse をインストールすることも試みました。その場合は、Discourse のランディングページにはアクセスできました。

Google とポート設定に何か問題があるのではないかと思っています(既成のインストールパッケージではこの問題は回避されていたようですが)が、私にはこれらについて詳しくなく、自分でデバッグすることができません。何かご意見はありますか?

「いいね!」 2

ファイアウォールに関連している可能性がありますか?
私の理解では、G Cloud では VM へのパブリックアクセスを許可するために 2 つのチェックボックスにチェックを入れる必要があります。必要に応じて、後で同じ設定を行うことも可能です。

「いいね!」 3

Bhanu さん、ご提案ありがとうございます!

これらのボックスは既にチェック済みです!

まだ動作しません。サイトへの ping を試みましたが、すべて正常のようです:

サイトへ SSH で接続し、ポートを確認するために netstat を実行すると、以下の結果になります:
ports
ただし、netstat にはあまり詳しくありません。

「いいね!」 1

もしかして、私はウェブサーバーを稼働させていないのでしょうか?Discourse をインストールする前または後に Nginx をインストールする必要があるのでしょうか?このスレッドから考えを巡らせたところ、私の問題と全く同じ状況でした。

さて、これが問題の核心だと考え始めています。Nginx はインストールされているように見えたものの、実行されていなかったようです。docker-proxy の PID 14311 と 14295 を終了させ、その後 Nginx を実行しました。すると Nginx がポート 80 にバインドされ、サイトにアクセスすると Nginx のウェルカムページが表示されるようになりました!
次は、Docker と Discourse の連携を再度確立する必要があります。

また、古い Ubuntu バージョンでの Discourse/Nginx のインストールに関するこのガイドも見つけました。彼らは何らかの理由で Docker のポートを 80 から変更しているようです。ここに何らかの競合があるのかもしれません。

どうにかして、Nginx をポート 80 で稼働させ、Docker-proxy を HTTP 用ポート 8060 と HTTPS 用ポート 9443 でリスニングさせることができました(他のチュートリアルで推奨されている設定です)。しかし、これを達成したにもかかわらず、再び行き詰まってしまいました。Discourse は素晴らしいフォーラムのようですが、私のような初心者には Google Cloud へのインストールが不可能に思えてなりません。

「いいね!」 2

Discourse にはすでに nginx サーバーが組み込まれているため、Discourse 以外の目的でサーバーを利用しない限り、専用の Web サーバーを運用する必要はありません。サーバーにパブリック IP アドレスが割り当てられており、ポート 22、80、443 への外部接続が許可されるように設定されていることを確認していただけますか?

参照: VPC firewall rules  |  Cloud Next Generation Firewall  |  Google Cloud Documentation

「いいね!」 2

はい。Google 上の VM インスタンスにはパブリック IP が割り当てられており、ポート 22、80、443 へのトラフィックを許可しています。

これは、ポート 80 と 443 で起動していた docker-proxy プロセスの PID を終了させ、ポート 80 で Nginx を起動した際に、サイトの Nginx ランディングページにアクセスできたことからも確認できました。

「いいね!」 1

つまり、インストール自体に問題があることを示しています。
もし新規インストールであれば、VM を完全に削除して再セットアップする方が簡単でしょう。

「いいね!」 2

すでに3回インストールしましたが、ポートが毎回バインドされません。3回ともインストールは成功したものの、フォーラムにアクセスしたことはありません。そのため、Google版(動作はしますが、SMTPの設定ができません)を使うことにし、その後、Google版からSMTPを設定する方法を探そうと考えています。

「いいね!」 1

インストール完了後に SMTP を設定することはできますか?
このリンクの「手順 11」に従って、discourse.conf ファイルを作成(存在しないため)し、編集することができました。その後、「discourse サービス」を再起動してメール設定をテストできるようです。

つまり、Discourse を再インストールする必要はない、ということで正しいでしょうか?

しかし、実行中のサービスを確認すると、「discourse」という名前のサービスは見当たりません。それでも私の Discourse フォーラムは明らかに稼働しています


Discourse はここに表示されるべきではありませんか?何か別のサービスが存在し、それを再起動することで Discourse サービスも再起動されるようなものはありますか?

「いいね!」 2

申し訳ありませんが、Google Cloud のイメージのセットアップ方法については分かりません。私はすでに12回以上インストールを行っており(先週も1回含む)、おそらくあなたの VM の設定方法に問題があると考えています。

公式インストールガイドに従う前に私が行っている準備手順は以下の通りです:

  1. Compute Engine で HTTP および HTTPS トラフィックを許可するように設定する。
  2. DNS を設定し、確認する。
  3. SSH 経由で VM への接続を確認する。

この手順で問題なく動作することをお約束します。

追伸:Discourse をインストールする際は、通常 Gcloud で Ubuntu の minimal バージョンを使用しています。

「いいね!」 1

Discourse 公式の標準インストールを行っていらっしゃらなかったのでしょうか?

「いいね!」 1

ふむ、なんだか奇妙ですね。でも、Google Cloud で実際に可能であることを確認してくださり、ありがとうございます。Discourse のインストール自体は問題ないと思いますし、問題は VM やポートのようです。明日、もう一度試してみます。毎回、これらの準備ステップは行っているのですが。Bhanu さん、ありがとうございました。

@pfaffman そうです。

「いいね!」 2

また、HTTP/HTTPS トラフィックを許可するのは「Computer Engine」ではなく、「VM インスタンス」ですよね?

「いいね!」 1

Compute Engine は、VM のことを指す Google 独自の用語だったと記憶しています。

「いいね!」 1

Discourse-setup を実行するとポートをチェックします。そのテストは通っていますか?

「いいね!」 2

今すぐ確認します。古いインスタンスとプロジェクトを削除し、Google Cloud で新しいプロジェクトとインスタンスを起動しました。Discourse のインストールを試みて、確認したポートを報告します!

「いいね!」 2

はい、数日後には動作するようになりました!

同じ手順をもう一度実行しましたが、今回は各ステップをより慎重に行いました。
Google Cloud 上のインスタンスとプロジェクトをスクラッチし、新しいプロジェクトから始めました。

その後、新しいプロジェクトと新しいインスタンスを作成しました。Ubuntu 18.04 LTS のミニマル版で、HTTP/HTTPS を有効にしました。上記の公式ガイドに従う前に、Bhanu が言った通り接続性をテストしました。Google Cloud の「ウェルカムチュートリアル」に従い、ポート 80 での Python サーバースクリプトのテストなどを行いました。

「公式ガイド」の手順中は、SMTP の設定に特に注意を払いました。何らかの理由で Mailgun は使わず、代わりに Sendinblue を使うことにしました。これが非常にうまくいっています!

今回何が違ったのかは正直わかりませんが、今は動作しています。スレッドで議論してくださった方々、ありがとうございます!

「いいね!」 6

前の投稿を編集できない理由がわかりませんが、モデレーターが統合するかもしれません。
単に付け加えたいのは、私の問題と解決策は「急ぎすぎたこと」にあったかもしれないということです。

不具合のあるプラグインをインストールしてしまったため、最近 Discourse インスタンスを完全に削除して再インストールする必要がありました。新しいインスタンスを起動すると、新しい IP アドレスが割り当てられました。そこでホスティングサービスにアクセスし、サブドメイン discourse.mydomain.com を Google Cloud インスタンスの IP アドレスに指すように A レコード(DNS)を更新しました。その後、Google Cloud の SSH 経由でセットアップを実行しに戻りました。

./discourse-setup を初めて実行すると、ポート 80 と 443 へのバインドが可能かチェックされます。しかし、何らかの理由で再びポート 80 と 443 へのバインドが拒否されました。who.is で DNS を確認すると、サブドメインは正しく IP に解決されていたのですが、それでも動作しませんでした。./discourse-setup を 3 回実行しましたが、うまくいきませんでした。netstat -ltnpu で確認しても異常は見当たりませんでした。5 分ほど待ってから 4 回目に実行したところ、ようやく動作しました。

「いいね!」 2

前の投稿を編集できませんが、実際にもう一度インストールする際に問題が発生しました。今回は、ファイアウォールに以下の許可を追加しました:

SMTP はおそらく不要かもしれませんが、80 と 443 の「Egress」は必要だったようです。

「いいね!」 1

すべてのポートはデフォルトで開放されていますが、常にブロックされるポート25を除き、送信側のルールを設定する必要はないと思います。

「いいね!」 3