أنا أحاول نقل جميع البيانات من S3 إلى خادمي مرة أخرى. لكن الأمر rake uploads:migrate_from_s3 يعيد خطأ “يجب عليك تعطيل تحميلات S3 قبل تشغيل هذه المهمة”. لذا قمت بإلغاء تحديد خيار تفعيل تحميلات S3 في إعدادات Discourse، وأضفت أيضًا DISCOURSE_USE_S3: false إلى ملف app.yml. لكن دون جدوى، نفس الخطأ.
… ولا تنسَ @Pravi أنك يجب أن تعيد بناء الحاوية (التطبيق) بعد تغيير معظم المتغيرات في ملف yml الخاص بك؛ فبعضها قد يتغير بإيقاف الحاوية وتشغيلها مرة أخرى، ولكن عند الشك، أعد بناء الحاوية (التطبيق) بعد إجراء أي تغيير على ملف yml.
لقد أضفت local إلى موقع النسخ الاحتياطي، ثم أعيد بناء الحاوية وحاولت الهجرة، لكن دون جدوى. ما زالت تظهر لي الرسالة: يجب عليك تعطيل عمليات تحميل S3 قبل تشغيل هذه المهمة
بعد إعادة البناء باستخدام DISCOURSE_USE_S3=false في ملف yml، هل نفذت مهمة rake وما زال النظام يعرض الرسالة “يجب تعطيل تحميلات S3”؟ هل ذهبت إلى لوحة الإدارة وقمت بتعطيل S3 هناك أيضًا؟
نعم، قمت بإضافة DISCOURSE_USE_S3=false إلى ملف app.yml، ثم أعيد بناء الحاوية، ثم أشغل مهمة rake، لكن لا يزال يعطيني نفس المخرجات. نعم، قمت بتعطيل الرفع في صفحة المسؤول.
لا أعرف كيف يمكن أن تكون القيمة الأخيرة صحيحة إذا قمت بتعيين متغير البيئة على false وإعادة البناء. قيم SiteSetting تأتي من لوحة الإدارة الخاصة بك، بينما GlobalSettings يتم ضبطها عبر ملف app.yml.
إلغاء تعيين DISCOURSE_USE_S3 و DISCOURSE_S3_BUCKET يعطيني هذا الخطأ:
root@ip-172-31-7-247-app:/var/www/discourse# rake uploads:migrate_from_s3
جاري نقل الملفات من S3 إلى التخزين المحلي لـ 'default'...
rake aborted!
NoMethodError: undefined method `downcase' for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/lib/tasks/uploads.rake:138:in `migrate_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:118:in `block in migrate_all_from_s3'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:118:in `migrate_all_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:93:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_from_s3
(انظر التتبع الكامل بتشغيل المهمة مع --trace)
تحديث:
قبل إلغاء تعيين DISCOURSE_USE_S3 و DISCOURSE_S3_BUCKET:
لقد جربتُ ذلك أيضًا. قمت بإلغاء التعليق عن كل شيء باستثناء DISCOURSE_USE_S3: false، وظهور نفس الخطأ السابق.
root@ip-172-31-7-247-app:/var/www/discourse# rake uploads:migrate_from_s3
Migrating uploads from S3 to local storage for 'default'...
rake aborted!
NoMethodError: undefined method `downcase' for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/lib/tasks/uploads.rake:138:in `migrate_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:118:in `block in migrate_all_from_s3'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:118:in `migrate_all_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:93:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_from_s3
(See full trace by running task with --trace)