شكرًا لك! ساعدتني على التقدم، الآن أنا أواجه هذا الخطأ:
root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root غير مكتوب بإذن
Bundler سيستخدم "/tmp/bundler20250409-510203-w6snye510203" كدليل المنزل مؤقتًا.
خطأ: تأكد من تكوين S3 في ملف config/discourse.conf أو متغيرات البيئة
لدي كل شيء مُكوَّن في إعدادات موقع Discourse. أنا لا أستخدم Docker، هل يعني ذلك أنني لست بحاجة إلى متغيرات البيئة؟
لقد حاولت إضافة متغيرات البيئة في app.yml، وأعدت البناء، وأعدت إدخال التطبيق وتشغيل الأمر، ويظهر هذا:
`/root` غير قابل للكتابة.
سيستخدم Bundler `/tmp/bundler20250409-1393-48ek5u1393' كدليل المنزل الخاص بك مؤقتًا.
جارٍ تثبيت قواعد CORS...
محاولة تطبيق مجموعة قواعد CORS للأصول S3 في الدلو biohacking-forum.
تم إلغاء أمر 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
(انظر التتبع الكامل عن طريق تشغيل المهمة مع --trace)
يجب نقل جميع متغيرات S3 إلى الإعدادات المخفية، حيث لا يمكن أن يأتي الكثير من الخير من تكوينها في الإعدادات.
آسف، ولقد نسيت أنك لا تستخدم Docker. ولكن نعم، لا يزال يتعين عليك تعيينها في متغيرات البيئة. أقوم بذلك في بيئة التطوير الخاصة بي لاستعادة قواعد البيانات من S3.
إذا لم تكن تفعل هذا لبيئة تطوير، فمن المحتمل جدًا أنك ترتكب خطأً كبيرًا.
تم إصلاحه عن طريق القيام بما يلي - كان هناك خطأان.
أولاً، قمت بإصلاح الخطأ الثاني عن طريق القيام بما يلي:
rails c
Upload.find(386).destroy!
exit
هذا أصلح المنشور التالف (نص غير منسق أو شيء من هذا القبيل)
ثم كانت الأخطاء الحمراء على الشاشة ناتجة عن استخدام النطاق الفرعي العشوائي (المقدم من cloudflare) وتحميل الملفات إليه. اضطررت إلى تحميل الملفات إلى النطاق الجديد (الذي يتضمن النطاق المتصل الخاص بي)
مما أدى إلى تحرير مساحة التخزين الخاصة بالملفات (لاحظ أنني لا أزال أحتفظ بنسخة احتياطية محلية لكل من الملفات (على مستوى نظام التشغيل) ومستوى discourse قبل الترحيل).