يحتوي النسخ الاحتياطي على العديد من المجلدات والمجلدات الفرعية. أعتقد أنه يتعين عليك نسخ الملفات الموجودة داخل المجلدات من كلا المستودعين بشكل متكرر إلى الموقع المقابل في الخادم المحلي. على سبيل المثال، يجب نسخ جميع المحتويات الموجودة في المجلدين 1X و 2X من كلا المستودعين إلى مجلدي 1X و 2X في الخادم المحلي. لست متأكدًا من ذلك، لكنني أعتقد ذلك.
هل يمكنك تأكيد أنك قمت بنسخ جميع الملفات بشكل صحيح؟
نعم، أفهم تمامًا وقد تأكدت من أن المسارات النسبية الخاصة بها تبقى كما هي تمامًا.
على سبيل المثال، إذا كان ملف موجودًا سابقًا في: //bucket1/uploads/original/2x/f/filename.jpg
والآخر في: //bucket2/uploads/original/1x/a/filename.png
فإنهما الآن موجودان أيضًا في: /var/discourse/shared/web_only/uploads/default/original/2x/filename.jpg و ../original/1x/a/filename.png
المشاكل
قبل نسخ محتوى الدلو إلى الخادم المحلي، لاحظت أن بعض صوري تظهر فقط كأيقونات، ويمكن لزائر الموقع رؤية الصورة الكاملة فقط بالنقر على تلك الأيقونة.
وبعد أن قمت بنسخ (وليس نقل) جميع محتويات الدلو إلى الموقع المذكور أعلاه على الخادم المحلي (مع الحفاظ على المسارات النسبية)، وأصدرت الأمر: discourse remap:oldurl-or-path new-url-or-path،
لم يحدث أي تغيير مرئي على الموقع. لكنني بعد ذلك أصدرت الأمر: rake posts:rebake،
عندها اختفت حتى أيقونات الصور الخاصة بي، ولم يظهر أي رابط/مسار عند تمرير مؤشر الفأرة فوق المكان الفارغ في عنصر نائب للصورة.
يجب عليك توفير المسار الصحيح عند إعادة تعيين الروابط، وإلا فقد يتعطل النظام. لقد قمت بإعادة تعيين رابط S3 يدويًا بناءً على مخرجات العينة التي قدمتها سابقًا، وهو يعمل.
يمكنك التحقق من منشور واحد كمثال من موقعي الإلكتروني هنا (المنشور مكتوب باللغة الهندية، لكن يمكنك بسهولة العثور على أيقونة الصورة الصغيرة في وسط المنشور). تظهر الصورة الكاملة فقط عند النقر على الأيقونة الصغيرة.
لكن إذا قمت بإعادة تعيين الخرائط ثم إعادة البناء، فإن هذه الأيقونة تختفي تمامًا أيضًا. ولا يتبقى أي وسيلة للزائر لرؤية الصورة.
يبدو أنك استخدمت سابقًا خدمة CloudFront للتخزين المؤقت. امسح ذاكرة التخزين المؤقت للمتصفح وحاول مرة أخرى.
إذا قمت بأي إعدادات لـ CloudFront، فمن الأفضل إلغاء جميع هذه الإعدادات.
الآن، أنا أيضًا أحصل على روابط CloudFront نفسها. يبدو أنك قد فعّلت AWS CloudFront لموقعك. يقوم CloudFront بتخزين الصور فيucket الخاص بك مؤقتًا. أعتقد أنه يتعين عليك إزالة التوزيع من CloudFront. يجب عليك تسجيل الدخول إلى حساب AWS الخاص بك للتحقق مما إذا كان توزيع CloudFront نشطًا؟
لم أستخدم CloudFront (أو أي شبكة توصيل محتوى أخرى) في AWS أو في الواجهة الأمامية. على الرغم من أنني استخدمت CloudFlare لمدة شهر تقريبًا قبل عامين، ثم أزالتها نهائيًا.
كما أنني لم أختار CloudFront في AWS. لذا لا يوجد أي سؤال ينشأ هناك أيضًا.
علاوة على ذلك، على جهاز الكمبيوتر الخاص بي، عند فتح الصور، تظهر عناوين دلو AWS، وليس أي شبكة توصيل محتوى أخرى.
أنت تقترح فقط إعادة تعيين مسارات الصور (من عنوان URL في سلة S3 إلى مسار الخادم المحلي). ثم إعادة المعالجة.
ولكن كما ذكرت سابقًا، لقد قمت بذلك بالفعل ووجدت أن ذلك يفاقم المشكلة. (علاوة على ذلك، بعد إعادة المعالجة، لا يعمل خيار “استعادة” أيضًا، ويصعب التراجع).
سأحاول مرة أخرى، مع بذل أقصى قدر من العناية الممكنة.
لكنني كنت أبحث عن طريقة تمكنني من فهم ما يحدث خلف الكواليس. على الأقل مع منشور واحد، أردت أن أرى أي المنشورات مرتبطة بأي “دلو” (bucket) وما الفوضى التي أواجهها.
على أي حال، سأحاول مرة أخرى وأبلغكم بالنتيجة هنا. شكرًا لكم مرة أخرى.
سيتم عكس المسار الذي حددته في إعادة التوجيه السابقة في مخرجات الأمر أدناه. بما أن كلا من الدلاء لا يزالان موجودين، أعتقد أن إعادة التوجيه السابقة قد فشلت. على أي حال، الأمر يعود إليك الآن. آمل أن تحصل على حل قريبًا. بالتوفيق.
./launcher enter app
rails c
Upload.all.sample(2000).pluck(:url)
لست أكثر ذكاءً منك، لكنني مررت بهذه العملية فقط - وتمكنت من الخروج منها بمساعدة @Pravi.
الخطوات التي تحتاج إلى اتخاذها للانتقال من تحميل S3 إلى الحالة الافتراضية (Vanilla)
هذه العملية ليست سهلة للغاية - احرص كل الحرص على النصوص والروابط، لأن الأمر سيصبح فوضويًا للغاية إذا أخطأت في أي خطوة. ومع ذلك، فهي قابلة للتنفيذ تمامًا.
الخطوة 1 - انسخ الملفات من حوض S3 الخاص بك إلى مجلد public/uploads/default
الخطوة 3 - إعادة معالجة المنشورات وإعادة بناء التطبيق:
rake posts:rebake
exit
./launcher rebuild app
الخطوة 4 - إيقاف تشغيل S3
قم بإيقاف تشغيل تحميلات S3 في الإعدادات (أو في ملف app.yml الخاص بك إذا قمت بإعداده بهذه الطريقة). إذا كنت تستخدم CDN، فقم بإزالة الرابط الخاص به من الإعداد أيضًا (وإلا فلن يتم إيقافه فعليًا).
قم بإيقاف تشغيل الحاوية الخاصة بك. قمت بذلك بنقل المحتوى إلى حاوية جديدة كنسخة احتياطية كخطوة أولية.
أوه! تم. حتى الآن لم أواجه أي مشاكل. اذهب واختبرها!
عمل رائع! أعتقد أن هذه هي الخطوات التي ساعدتني في النهاية على النجاح، لكنني قمت بعدد كبير من إعادة تعيين الخرائط المختلفة التي لم تكن فعالة بنفس القدر! من الرائع وجود تعليمات رسمية.