الصور التالفة وعناوين URL الخاصة بـ S3 الخاصة بها

بعد التحديث الأخير إلى 2.5.0.beta7، أصبحت جميع الصور في المنتدى معطلة.
image

تم استبدال صورة الملف الشخصي أيضًا بصورة افتراضية. وهذه هي اقتراحاتي في لوحة التحكم:

مساهماتي الخاصة بالموارد:

إحدى هذه الصور: /original/2X/4/4064b1cc32199de63ad2fa2b5bd2a0c5b6872c6d.png

ومع ذلك، لا توجد مثل هذه الصورة في S3 الخاصة بي: (لماذا حدث هذا؟)

أيقونة الموقع (favicon) والشعارات الأخرى مفقودة: /original/1X/b32666bfe0e0eac40aacb178c7430c9f7873b397.png

ومع ذلك، تحتوي S3 الخاصة بي على هذه الملفات فقط:

لاحظ كيف أن الرابط غير صحيح ولا توجد مجلد 1X داخل مجلد original.

لقد حاولت اتباع الدليل الوارد في هذا المنشور:

لكن ذلك لم يحل المشكلة.

هل لي أن أشير إلى أن هذه الصورة غير موجودة في حوضك (bucket)، بل هي 4061…41.png ؟ :thinking:
هل هي متاحة محليًا؟

أعتذر، كان اختيار الكلمات خاطئًا. كنت أقصد أنني لاحظت أنه غير موجود في سلة S3، ولا يوجد أي منها هناك.

كيف يمكنني التحقق منه محليًا؟

أوه، هذا بالتأكيد أكثر منطقية :sweat_smile:
يمكنك التحقق محليًا باستخدام أي عميل SSH تفضله، اعتمادًا على إعداداتك، يجب أن تكون الملفات في مسار مثل /var/discourse/shared/standalone/uploads/default/original/2X/
لذلك قد تحتاج إلى استخدام الأمر ls -R /var/discourse/shared/standalone/uploads/ | grep 4064b للعثور على ملف 4064b…d.png

إعجابَين (2)

نتحدث عن نفس مثيل Discourse مثل المستخدم @masterakay هنا.

انتقلنا إلى S3 منذ أكثر من عامين، ولا توجد أي ملفات في مجلد التحميلات المحلي أحدث من عام 2018.

كما أفهم، يتم رفع الصور في مجلد “original”، ثم تتم معالجتها (قصها، تقليل حجمها، إلخ) ووضعها في مجلد “optimized”. الروابط التي يستخدمها Discourse عند رفع الصور لا تزال من مجلد “/original/1X/”. بطريقة ما، ومع التحديث، اختفى مجلد “1X”.

هناك مجلد “default” يحتوي على العديد من التحميلات (صور، إلخ) بالإضافة إلى النسخ المقصوصة. يوجد حوالي 10 آلاف ملف هنا، مما يجعل حجمها حوالي 2.5 جيجابايت.

المشكلة هي أن رابط الصورة في المنشورات يحتوي دائمًا على النسخة “original”.
ما لاحظناه هو أن الملفات المفقودة هي مجموعة فرعية من الملفات الموجودة في مجلد “default”.
التحميلات الجديدة تعمل دون مشاكل ويتم تخزينها في “/original/2X/”.

هل لدى أي شخص أفكار حول أين قد يكون اختفى مجلد “/original/1X/” وهل من الممكن إعادته؟

إعجابَين (2)

@sam @codinghorror آسف جدًا لإشراككما في هذا الأمر، لكنه عاجل للغاية. نحن طلاب ونشعر بالعجز نسبيًا أمام ضغط الكلية علينا لإصلاح الصور.

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

https://discourse.sesp.northwestern.edu

إعجاب واحد (1)

كيف قمت بإعداد S3؟ هل قمت بتعيين أي قيم في app.yml أم فقط في واجهة المستخدم الإدارية؟ يبدو أن هناك شيئًا غير متوقع لـ DISCOURSE_S3_BUCKET أو DISCOURSE_S3_BACKUP_BUCKET.

4 إعجابات

نعم، كما شرحتُ، كان كل شيء على ما يرام حتى التحديث الأخير. لقد اتبعنا جميع الخطوات.
على وجه التحديد، قمنا بما يلي:

أما بالنسبة لهذه القيم، فلا أستطيع العثور على أي متغير مُعرَّف في ملف app.yml. لم يكن ذلك مطلوبًا من قبل. هل حدث تغيير ما؟

صحيح. قد يكون هناك شيء لا يعمل بشكل صحيح في الكود، لكننا لا نعرف ما هو ولا السبب. لذا نحتاج إلى مزيد من المعلومات.

هناك طريقتان مختلفتان لإعداد S3: يمكنك تكوين البيئة في app.yml أو إدخال القيم في واجهة المستخدم الإدارية. تختلف أسماء المتغيرات قليلاً في كل طريقة.

الموضوع الذي ربطت به يصف كيفية الإعداد عبر واجهة المستخدم الإدارية. إذا كانت هذه هي الطريقة التي قمت بها لإعداد موقعك، فهل يمكنك إخبارنا بما لديك في s3_upload_bucket و s3_backup_bucket؟

إعجابَين (2)

@schleifer الأمر نفسه بالنسبة لي. لم قمت بتغيير أي شيء في هذه الإعدادات أيضًا. لقد تحققت من أن بيانات اعتماد AWS الخاصة بي تعمل بشكل صحيح.

أوه، هذا يفسر الأمر.

حدثت المشكلة لأن هذه الإعدادات لا يُفترض أن تكون بنفس القيمة — ابحث في موضوع الإعداد عن السطر “هل أحتاج حقًا إلى استخدام دلاء منفصلة للuploads والنسخ الاحتياطية؟”
تم تشغيل مهمة صيانة على محتويات دلة النسخ الاحتياطي وأثرت على الـ uploads لأن قيمها تداخلت.

@sam يجب أن نفرض ذلك في الكود، وليس فقط في الوثائق.

لإصلاح موقعك، هناك خطوتان:

أولاً، ستحتاج إلى تغيير بادئة النسخ الاحتياطي — إضافة /backups في النهاية كما هو موضح في موضوع الإعداد، يكفي.

بعد ذلك، انقل كل شيء في دلة S3 إلى المكان الصحيح. كل شيء في مجلد “default” العلوي يجب إعادته إلى المستوى العلوي.
على سبيل المثال، هناك على الأرجح مجلد “default/originals” هناك ويجب نقله للأعلى.

ستحتاج إلى استخدام وحدة تحكم AWS على الويب أو أداة أخرى لاستعراض الدلة.

5 إعجابات

حسنًا، شكرًا جزيلاً لك! سأجرب الخطوات وأعود هنا في حال حدوث أي شيء. هل لديك فكرة عن سبب حدوث هذا فجأة؟ :sweat_smile:

مرحبًا @schleifer، هذا منطقي، وقد أضفت بادئة النسخ الاحتياطي إلى اسم الدلو.

أما فيما يتعلق بالملفات المرفقة الحالية، فجميعها موجودة في /default/ (وليس في مجلدات فرعية). تستخدم روابط الصور في المنشورات (وفي كل مكان آخر) /original/* أو /optimized/*.

إذا قمنا بنقل كل شيء في مجلد الافتراضي مستوىً واحدًا للأعلى (إلى الجذر)، فستكون الصور في /*.
ولا، لا توجد أي مجلدات داخل defaults، بل فقط ملفات مرفقة. يبدو أنها تحتوي على ملفات بأسماء قياسية تتكون من 40 حرفًا كـ hash، بالإضافة إلى بعض الملفات ذات اللاحقات مثل “_2_10x10” (والتي أفترض أنها من الصور المحسّنة).

كيف تقترح حل هذه المشكلة؟ سيستغرق إصلاح جميع المنشورات بروابط جديدة وقتًا. هل من الممكن تجميع الملفات في المجلدات الصحيحة بناءً على اسم الملف هذا؟

إعجاب واحد (1)

@schleifer هل هناك أي تحديثات حول هذا؟

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

أهم سؤال هو: “هل المرفقات الجديدة تذهب إلى الموقع الصحيح؟”

بافتراض صحة ذلك، يمكنك وضع المرفقات القديمة في موقع معروف وتعديل إدخالاتها في قاعدة البيانات. كم عدد الملفات الموجودة في /default/؟

3 إعجابات

تعمل التحميلات الجديدة كما هو متوقع في المجلدات الفرعية، لحسن الحظ. كما أن الروابط في المنشورات تشير إلى الموقع الصحيح.

هناك أكثر من 10 آلاف ملف في /default/. يبدو أن تعديل كل منشور يدويًا عملًا شاقًا. هل توجد طريقة لأتمتة ذلك؟ ربما باستخدام استبدال تعبيرات نمطية في جميع المنشورات؟

نعم، هذا هو الخطة. الخطوة التالية هي وضع جميع ملفات AWOL في موقع معروف. في الدلو، ما هي المجلدات الفرعية الموجودة تحت /original/؟ يجب أن يكون هناك /1X/ وقد تكون هناك مجلدات أخرى.

3 إعجابات

هذا هو هيكل المجلدات الكامل. يتم تخزين التحميلات الجديدة (التي تعمل بشكل صحيح) في /original/2X/*/.jpg

/
|---backups
    |---default
        |---(مجموعة من ملفات النسخ الاحتياطي .tar.gz)
|---default
    |---(10719 ملفًا تم تحميلها: ملفات PDF، صور، إلخ.)
|---inventory
    |---1/pesuioforum/{optimized,original}/[DATE]/manifest.{checksum,json}
|---optimized
    |---1X
        |---(ملفان)
    |---2X
        |---{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
            |---(ملفات محملة تبدأ بحرف اسم المجلد المذكور أعلاه) (1055 ملفًا في المجموع)
|---original
    |---2X
        |---(نفس الشيء مثل optimized/2X، 520 ملفًا)
|---tombstone
    |---optimized
        |---1X
            |---(ملفان)
    |---original
        |---2X
            |---(نفس الشيء مثل optimized/2X، ملف واحد)

الخطوة التالية هي وضع جميع الملفات المفقودة (AWOL) في موقع معروف.

يبدو أن /default/ يحتوي بالفعل على جميع الصور.

إعجاب واحد (1)