サーバーのクラッシュが発生し、新しいサーバーを作成してバックアップから復元する必要がありました。それは大変な作業でした。発生したことと復元方法の詳細はこちら。
S3アップロードを無効にした後、復元したところ、投稿内の添付ファイルへのリンクがすべて壊れていました(404エラー)。フォーラムで検索しましたが、解決策が見つからず、誰かが正しい方向を示してくれることを願っています。
2つの選択肢があります。
- 投稿に埋め込まれた添付ファイルへのリンク(壊れているリンクはすべて投稿内の添付ファイルへのものです。埋め込み画像は正常に表示され、その他の内部リンクも正常に機能します)であるこれらの壊れた
short-urlリンクを修正できますか?
たとえば、フォーラムの投稿への添付ファイルのURLは https://XYZ.com/uploads/short-url/phu1HOLvkE8LWpkKYfnMPSWsvHh.zip のように表示されます。これは、投稿内の添付ファイルリンクをクリックしたときにログに表示されるもので、404エラーになります。
メッセージ(5件報告あり)
乗っ取られたレスポンスを正しく処理できませんでした: Errno::ENOENT : No such file or directory @ rb_sysopen - /XXXXX.s3.dualstack.us-east-1.amazonaws.com/optimized/1X/46728e07f9819907d1b18387bf02ea7fc25c7981_2_32x32.ico
バックトレース
/var/www/discourse/app/controllers/static_controller.rb:160:in
read' /var/www/discourse/app/controllers/static_controller.rb:160:inblock (2 levels) in favicon’
/var/www/discourse/lib/distributed_memoizer.rb:16:inblock in memoize' /var/www/discourse/lib/distributed_mutex.rb:33:inblock in synchronize’
/var/www/discourse/lib/distributed_mutex.rb:29:insynchronize' /var/www/discourse/lib/distributed_mutex.rb:29:insynchronize’
/var/www/discourse/lib/distributed_mutex.rb:14:insynchronize' /var/www/discourse/lib/distributed_memoizer.rb:12:inmemoize’
/var/www/discourse/app/controllers/static_controller.rb:138:inblock in favicon' /var/www/discourse/lib/hijack.rb:56:ininstance_eval’
サーバーをバックアップから復元中にS3アップロードオプションを無効にした後、これらのshort-urlリンクを修正する方法があることを本当に願っています。投稿の再ベイクでは修正されませんでした。
- 万が一、これが行き詰まりで大量に修正できない場合、S3クラウドに数千もの孤立した添付ファイルがある場合、それらをクリーンアップしてスペースを解放する方法はありますか?DiscourseがS3アップロードバケットをスキャンして、すべての孤立したアセットを削除する方法はありますか?