taher1
1
サイトの画像やアセット(js)を S3 に移動させた後、/admin/upgrade インターフェースを使用してフォーラムをアップグレードしようとしました。アップグレード自体は正常に完了しましたが、アセットが S3 バケットにアップロードされなかったため、サイトが利用不能になってしまいました。その後、シェルからアプリを再ビルドすることで復旧しました。
そこには、それを自動で行うフックがあります。このような機能を Web インターフェースにも実装できると便利です。もし既に実装されている場合は、お知らせください。
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
いいえ、管理画面からアセットを S3 に移動することはできません。この移行時には追加のタスクが必要となるため、SSH を通じて行う必要があります。ただし、新規インストールの場合は例外です。
taher1
3
ああ、なるほど。S3 に切り替えるまでは、ダウンタイムなしのシームレスなアップグレード方法が好きでした。JavaScript は S3 経由で配信せず、画像のみを S3 経由で配信することは可能でしょうか?
JS は S3 経由で配信できません。S3 を通じては、メディア(画像、ドキュメント、動画など)のアップロードと配信のみが可能です。
JS の場合は、CloudFront などの CDN が必要です。
taher1
5
はい、JS は S3 から直接配信していません。S3 に保存し、CDN を通じて配信しています。私が聞きたかったのは、JS をローカルに保存し、CDN を通じて配信し、メディアのみを S3 に保存することは可能かどうかです。
またしても完全に間違っています。
Discourse の JS は、Discourse のインストールをプルオリジンとして、CDN を介して直接配信されることを想定しています。JS を S3 に配置する方法がわかりませんが、JS はリビルド時に再生成される点に留意してください。S3 を通じて配信するものはおそらく古くなっており、さらにトラブルを招くことになります。
taher1
7
この現象は、以下の手順で S3 設定を構成した後から発生するようになりました:Configure an S3 compatible object storage provider for uploads
そのため、更新されたアセットを S3 にアップロードするために、after_assets_precompile フックが追加されました。
この問題をどのように修正すればよいでしょうか?ローカルサーバー経由でアセットにアクセスしようとすると 404 エラーになります。S3 経由である必要があります。そうでなければ、CDN にエッジルーティングルールを設定して、アセット要求をローカルドメイン経由で取得させていたはずです。
投稿タイトルをお読みいただければ、「アップロード用オブジェクトストレージ」とあり、タイトルだけで十分です。
ローカルドメインとは何を指していますか?Discourse はどこにインストールされていますか?
taher1
9
ローカルドメインとは、Discourse がインストールされているサーバーのことを指します。つまり、js ファイルは S3 上ではなく、nginx サーバー上にローカルに存在しているということです。
RGJ
(Richard - Communiteq)
10
残念ながら、言及されているトピックは、タイトルが「アップロード用のオブジェクトストレージの使用」であるにもかかわらず、そのようには機能していません。そのトピックの指示に従ってフォーラムを設定すると、アセットを S3 へプッシュする必要があります。
taher1
11
Discourse インストールサーバーに JS ファイルを保持できるような設定方法はありますか?