"bundle exec rake s3:upload_assets"実行時のエラー - Gemfileまたは.bundle/ディレクトリが見つかりませんでした

"bundle exec rake s3:upload_assets" を root として実行しようとすると、以下のエラーが発生します。Could not locate Gemfile or .bundle/ directory.

また、root 以外で実行しようと "sudo -E -u discourse bundle exec rake s3:upload_assets" を試しましたが、以下のエラーが発生しました。sudo: unknown user discourse\nsudo: error initializing audit plugin sudoers_audit

  • 両方のコマンドは以下のディレクトリで実行しました: /var/discourse
    -これは通常のインストールであり、dockerなどは使用していません。

これを実行できるようにするには、どのように修正すればよいでしょうか?

ありがとうございます。

コンテナ内で実行する必要があります。

cd /var/discourse
./launcher enter app

そして、そのコマンドを実行してください。

「いいね!」 1

ありがとうございます!さらに進むことができましたが、今はこのエラーが出ています。

root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root は書き込み可能ではありません。
Bundler は一時的に `/tmp/bundler20250409-510203-w6snye510203` をホームディレクトリとして使用します。
ERROR: config/discourse.conf または環境変数で S3 が設定されていることを確認してください。

Discourse のサイト設定ですべて設定されています。Docker を使用していないので、環境変数は必要ないですよね?

app.yml に環境変数を追加し、再構築してアプリに入り直し、コマンドを実行したところ、次のエラーが発生しました。

`/root` は書き込み可能ではありません。
Bundler は一時的に `/tmp/bundler20250409-1393-48ek5u1393` をホームディレクトリとして使用します。
CORS ルールをインストールしています...
バケット biohacking-forum で ASSETS S3 CORS ルールセットを適用しようとしています。
rake が中止しました!
Seahorse::Client::NetworkingError: 空または不完全なレスポンスボディ (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules
(実行してタスクをトレースすると、完全なトレースが表示されます)

まだ解決できません :frowning:

環境変数が必要です。そのため、アップロード用のS3互換オブジェクトストレージプロバイダーを設定するでそのように文書化されており、エラーメッセージでもそのように指示されています。

S3のすべての変数は、設定で設定しても良い結果が得られないことが多いため、非表示の設定に移動する必要があります。

申し訳ありませんが、Dockerを使用していないことを忘れていました。しかし、はい、それでもENV変数で設定する必要があります。データベースをS3から復元するために、開発環境でそれを行っています。

開発環境以外でこれを行っている場合、大きな間違いを犯している可能性が非常に高いです。

@Eviepayne

以下の手順で修正しました。2つのエラーがありました。

まず、2番目のエラーを次のように修正しました。

rails c
Upload.find(386).destroy!
exit

これにより、破損した投稿(テキストのフォーマットが不正など)が修正されました。

次に、画面上の赤いエラーは、ランダムなサブドメイン(Cloudflare提供)を使用してそこにアップロードしたことが原因でした。新しいドメイン(接続済みのドメインを含む)にファイルをアップロードする必要がありました。

以下を使用しました。

sudo -E -u discourse bundle exec rake s3:upload_assets

次に:

sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

これにより、フォーラムが正しく読み込まれ、右クリックして新しいタブで画像を開くと、R2でホストされていることが表示されました。その後、バックアップを取りました。

最後に、すべてをクリーンアップしました。

sudo -E -u discourse bundle exec rake uploads:clean_up

これにより、ファイルのストレージスペースが解放されました(移行前に、OSレベルとDiscourseレベルの両方で両方のファイルのローカルバックアップを保持していることに注意してください)。

これで、すべてが完璧に機能します!

「いいね!」 3

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