"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などは使用していません。
これを実行できるようにするには、どのように修正すればよいでしょうか?
ありがとうございます。
pfaffman
(Jay Pfaffman)
3
コンテナ内で実行する必要があります。
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
(実行してタスクをトレースすると、完全なトレースが表示されます)
pfaffman
(Jay Pfaffman)
7
環境変数が必要です。そのため、アップロード用の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
system
(system)
クローズされました:
9
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.