أصول S3 معطلة بعد نقل المنتدى

مرحبًا،

اضطررت إلى نقل منتدى Discourse مهجور. لحسن الحظ، كان لدينا عدة مشرفين، مما جعل ذلك ممكنًا مع تنزيل نسخة احتياطية. استخدمنا وعاء S3 لتخزين الأصول، مما شكل نوعًا من المشكلة. سأقدم طلب ميزة في هذه النقطة:

جعل من الممكن تضمين أصول S3 في النسخ الاحتياطية

اكتشفت (غير متأكد مما إذا كان ذلك قبل أو بعد إعادة بناء المنشورات) أن عناوين URL لأصول S3 تم إعادة كتابتها لتصبح عناوين داخلية. لذا، استخرجت جميع عناوين URL الخاصة بـ original و optimized من S3 من ملف قاعدة البيانات وقمت بتحميلها (نوعًا ما) يدويًا. بعد نقلها إلى المكان الصحيح، ظهرت جميع الصور المفقودة. … سيكون من الرائع وجود ميزة تلقائية لذلك.

حتى الآن، واجهت ثلاث أخطاء:

  1. صور معايرة تالفة، لكن الصور المكبرة تعمل
  1. صور معايرة تعمل، لكن لا توجد تفاعل بالماوس لتكبير الصور
  • /t/microlongrange-openhd-edition/379 … يمكنني وضع رابطين فقط في منشوري الأول
  1. صور Gravatar تالفة (ربما لا علاقة لها بالأمر):

لم أجد أي مشاكل في المنشورات الجديدة.

شكرًا لكم على هذا المشروع الرائع،
Limitless Green

يبدو ذلك وكأنه سوء تكوين وليس خطأ برمجيًا. هل قمت بإعداد نفس حوض S3 على المضيف الجديد قبل الاستعادة؟

استعدت النسخة الاحتياطية التي تتضمن أيضًا الإعدادات. بعد القيام بذلك (مع فرض HTTPS)، لم تعد الصور من حوض S3 تظهر على الإطلاق.

الآن قمت بإزالة إعدادات S3 بالكامل.

أليس هذا استبدالًا كاملًا للإعدادات؟

باستثناء إعدادات S3، إذا كانت قد تم إعدادها سابقًا باستخدام متغيرات البيئة في app.yml

هناك إعداد مخفي يفعل ذلك بالضبط. يقوم Cdck بتفعيله للعملاء الذين نعلم أنهم يخططون لاستضافة موقعهم بأنفسهم.

يُفضل إعداد S3 عبر متغيرات البيئة كما هو موضح في استخدام التخزين الكائني للuploads (S3 و Clones).

بعد الاستعادة، قمت بتعيين الإعدادات في: s3 upload bucket و s3 cdn url. لا أملك صلاحية الوصول إلى app.yml (للخادم القديم).

أوه، رائع! :grinning: أين؟
الخيار الوحيد المناسب في قسم backup الذي وجدته هو:
grafik
(كان مُفعّلًا)

لست متأكدًا مما إذا كان الأمر واضحًا: لا أريد S3 حاليًا. وكان عليّ الحصول على الأصول من هناك. لا أحد يعرف كم من الوقت سيبقى هذا الخادم. :sweat_smile:

إذا لم يكن لديك وصول إلى الخادم عبر SSH، فلا يمكنك تغيير الإعداد المخفي.

حسناً، وما الذي يجب فعله الآن في حالتي؟
ما الذي قد يؤدي إلى ظهور معاينة صورة معطلة؟

إذا لم يفت الأوان (أي أن هناك نشاطًا على المنتدى حدث ولا ترغب في فقده) وإذا كانت لديك بيانات اعتماد S3، فربما أنصحك بوضع بيانات اعتماد S3 في ملف app.yml وإعادة تشغيل عملية الاستعادة. من هناك، يمكنك على الأرجح تعيين الإعداد المخفي، وإجراء نسخة احتياطية، ثم استعادتها على خادم لا يحتوي على S3.

لكن أعتقد أن هذا ليس هو الحال. وليس واضحًا تمامًا ما قد تكون المشكلات، حيث إنك حتى أنت لا تتذكر بالضبط ما قمت به ومتى.

إذا كان هناك شيء مفقود (وكان لديك بيانات اعتماد S3)، فقد أحاول استخدام أداة S3 لسحب جميع الملفات المرفوعة، ثم التعديل على قاعدة البيانات لجعلها تشير إليها. لكنني لست ماهرًا بما يكفي في ذلك لأشرح هنا كيفية القيام بذلك.

نعم، للأسف لا أملك بيانات اعتماد S3 :frowning:

يمكنني تكرار الخطوات:

  1. تثبيت منتدى Discourse جديد باستخدام discourse_docker خلف Traefik
  2. إجراء نسخة احتياطية للمنتدى القديم (بما في ذلك بعض الأصول القديمة)
  3. استعادة النسخة الاحتياطية على المنتدى الجديد
  4. فرض HTTPS
  5. استخراج عناوين الأصول من ملف dump.sql (من النسخة الاحتياطية)
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\/original\/1X\/[0-9a-z_]{0,}\.[0-9a-zA-Z]{0,}' ./dump.sql >> original.txt
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\/optimized\/1X\/[0-9a-z_]{0,}\.[0-9a-zA-Z]{0,}' ./dump.sql >> optimized.txt
  1. تنزيل الأصول: cat optimized.txt | parallel --gnu "wget -nc -P ./optimized/1X/ {}" (نفس الأمر مع original)
  2. إزالة إعدادات S3
  3. rake posts:rebake

يمكنني التعامل مع عمليات SQL في قاعدة البيانات عندما أعرف ما الذي أبحث عنه.