アップロードのためのS3互換のオブジェクトストレージプロバイダーを設定する

JavaScriptコンソールを確認してください。CDNが間違っているか、プリコンパイル済みアセットの部分を正しく設定できていないかのどちらかだと思います。

https://community.itechguides.com/ は現在動作しています。

もし動作しない場合は、ハードリロードやシークレットウィンドウを試してみてください。

「いいね!」 2

サイトが表示されたのは、サイトを開いた時点では app.yml ファイルから以下の行をコメントアウトしていたためです。

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: accesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: secretkey
DISCOURSE_S3_CDN_URL: https://community-cdn.itechguides.com
DISCOURSE_S3_BUCKET: itg-community-files
DISCOURSE_S3_BACKUP_BUCKET: itg-community-files/backups
DISCOURSE_BACKUP_LOCATION: s3

これらの行を再度有効にしてコンテナを再構築しました。しかし、サイトは再び空白ページを表示しています!

下のスクリーンショットは、app.yml にコードを配置した場所を示しています。ご覧のとおり、S3 設定コードは DISCOURSE_NOTIFICATION_EMAIL の下に配置しました。


a

「いいね!」 1

DISCOURSE_CDN_URL をコメントアウトするとどうなりますか?

「いいね!」 1

それをしていません。しかし、トラブルシューティングを行っており、S3 CDNを正しく設定していないと強く信じています。StackPathを使用しており、オリジンアドレスとホストヘッダーに何を使用すればよいかわかりません。

「いいね!」 1

もう一つ、DigitalOceanのSpaceバケットのファイル一覧表示機能をどのように設定すればよいかわかりません。現在、リスト表示を制限しています。これは何かに影響しますか?

「いいね!」 1

DISCOURSE_S3_CDN_URL をコメントアウトしたところ、サイトが読み込まれました。これにより、S3 CDN のセットアップに問題があることは確認できましたが、まだ正しくセットアップする方法がわかりません。

ご協力いただけると大変助かります。

「いいね!」 1

設定セクションのすべてのタスクを完了しましたか?
私の記憶が正しければ、app.yml で DISCOURSE_S3_CDN_URL を設定すると、アセットが S3 に保存されていることが 必要 になります。

「いいね!」 2

Discourse がどのように機能するかあまり知りません。私は PHP の世界から来た別のコピー&ペーストのウェブマスターですが、なぜ同じ CDN を 2 回宣言する必要があるのか疑問に思っています。

DISCOURSE_S3_CDN_URL を使用しているため、DISCOURSE_CDN_URL は使用していません(そして、おそらく私が読んだドキュメントはそれを使用するように指示していませんでした)。そこで試してみました。

DISCOURSE_CDN_URL: <cdn-url> を追加しました。再構築してもエラーは発生しませんでしたが、502 エラーが発生しました。削除すると、フォーラムは再び機能しました。

それでも、あなたの問題はどこか別の場所で設定が間違っているために発生する可能性があります。しかし、私は簡単な解決策が好きです。たとえ私が間違っていても、そして CDN を異なるニーズのために 2 回伝えている状況を非難しています。あるいは何か。

「いいね!」 2

DISCOURSE_CDN_URLとDISCOURSE_S3_CDN_URLは異なります。DISCOURSE_CDN_URLがフォーラムを指すのに対し、DISCOURSE_S3_CDN_URLはS3ストレージURLを指します。

アイデアは、DISCOURSE_CDN_URLがCSSのようなプル可能なアセットを提供し、DISCOURSE_S3_CDN_URLがJS、画像、ユーザーアップロードのようなプッシュ可能なアセットを提供することです。

すべて機能させることができましたが、S3ストレージCDNだけはできません。app.ymlファイルでその部分を有効にすると、フォーラムが空白で表示されます。

ブラウザのインスペクト要素のネットワークを見ると、DISCOURSE_S3_CDN_URLによって配信されるアセットがエラー404を表示していることがわかります。

ここで詰まっています。S3 CDNがアセットを配信できない理由がわかりません。

「いいね!」 4

ご辛抱強いご説明ありがとうございます!

それは私にとってかなり…馴染みのないものです。しかし、申し上げたように、私の経験は非常に限られています。WordPressで静的ファイルのみを対象に、S3/CloudFlare経由でAWSをCDNとして使用していますが、スクリプトには別の設定が必要です。WPとDiscourseは根本的に異なるプラットフォームなので、比較する意味はないと思います。しかし、ここではそのコンセプトの原則を理解しようとしています。

さて、あなたよりもずっと多くのことを得られました :smile:

編集: ああ、私の設定も完全に間違っていました :flushed: すべてのJavaScript、画像などはCDN経由で提供されています。しかし、CSSはそこでは見つかりませんでした。

「いいね!」 1

はい、そうです。アップデートありがとうございます。

「いいね!」 1

@Jagsterさん、ご協力いただけると大変助かります。

現在、私のサイトがObject Storage CDNから.gz.jsアセットを読み込もうとしていますが、ファイルが存在しません。Discoursにこれらの.gz.jsアセットをObject Storageにアップロードさせるにはどうすればよいですか?

「いいね!」 1

ガイドのこの部分がそれを行います。

「いいね!」 1

その行はすでにアプリ.ymlにあります。上記のコードをプラグイン定義の後に配置しました。それともプラグインリストの上に移動しますか?

「いいね!」 1

それは間違っています。 after_assets_precompile YAML キーは hooks キーの下にある必要があります。

デフォルトでは、次のように出荷されます。

## プラグインはここに追加します
## 詳細については https://meta.discourse.org/t/19157 を参照してください
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

そして、あなたが望むのは次のようなものです。

## プラグインはここに追加します
## 詳細については https://meta.discourse.org/t/19157 を参照してください
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
「いいね!」 1

ありがとうございます、@Falco。今移動して、もう一度試してみます。

「いいね!」 2

他のプラグインについてはどうですか?以下にリストしてもよろしいでしょうか。

  • sudo -E -u discourse bundle exec rake s3:upload_assets ?
「いいね!」 1

いいえ。

以下のようになります。

## プラグインはここに追加します
## 詳細については https://meta.discourse.org/t/19157 を参照してください
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets

YAML はツリーのようなデータ構造であり、空白のインデントによって構造が定義されます。

「いいね!」 3

@Falcoと@pfaffmanのガイダンスにより、この設定を正常に完了しました。

設定を確認したい他のコミュニティメンバーのために、スクリーンショットを以下に示します。また、設定中に包括的なガイドも作成しました。

StackPathとDigitalOcean Spacesを使用しました。私のガイドには、すべて設定のステップバイステップが含まれています。このガイドが必要な場合は、リクエストに応じてURLを喜んで投稿します。

「いいね!」 2

@Falco@pfaffman、お二人とも本当にありがとうございました。Discourseの構成は初めてですが、最も難しい部分(だと思います!)は完了しました。大変感謝しています!

「いいね!」 3