المرفقات تُقدّم محليًا على الخادم ولكن ليس للخارج

ملخص المشكلة

أواجه خطأ 404 عند الوصول إلى تحميل صورة عبر عنوان URL الخاص بها على موقع Discourse المباشر (https://techenclave.comعلى الرغم من أن الصورة موجودة على القرص ويتم تقديمها بشكل صحيح داخليًا. لقد قمت بإعادة خبز المنشور، وأعدت تشغيل التطبيق، وتحققت من أن التقديم الداخلي يعمل، ولكنه لا يزال يعرض خطأ 404 خارجيًا.


ما يعمل

1. التحميل موجود في قاعدة البيانات

باستخدام وحدة تحكم Rails، أكدت أن التحميل موجود مع جميع البيانات الوصفية الصحيحة:

Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

يشمل الإخراج:

  • url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"
  • اسم الملف: IMG202506252257011.jpg
  • المعرف: 170265
  • مستخدم في معرف المنشور: 3125774

2. الملف موجود على القرص

تم التحقق من وجود الملف داخل الحاوية:

ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

:check_mark: الملف موجود مع الملكية والأذونات الصحيحة:
discourse:www-data، -rw-r--r--.


3. الرابط الرمزي من المجلد العام يعمل

الرابط الرمزي public/uploads سليم:

ls -l /var/www/discourse/public/uploads
# => /shared/uploads

4. Discourse يمكنه تقديمه داخليًا

تم الاختبار باستخدام:

curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

النتيجة: HTTP/1.1 200 OK


5. تم إعادة خبز المنشور

تم إعادة خبز المنشور باستخدام:

Post.find(3125774).rebake!

6. تم إعادة تشغيل التطبيق

تم تشغيل:

./launcher restart app

تمت محاولة أيضًا:

sudo ./launcher rebuild app

(كانت خدمة Docker غير متاحة مؤقتًا ولكن تم إصلاحها لاحقًا.)


ما لا يعمل

الوصول الخارجي إلى الصورة

الوصول إلى:

https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

يعيد:

404 Not Found

يحدث هذا عبر المتصفحات وفي وضع التصفح المتخفي.


ما أحتاج إلى المساعدة فيه

هل يمكن لأحد المساعدة في تحديد ما قد يسبب:

  • تحميل يعمل ويتم تقديمه عبر localhost:3000،
  • ولكنه يعيد خطأ 404 خارجيًا على النطاق العام؟

ماذا يجب أن أتحقق منه أيضًا؟ أي تكوينات أو سجلات ذات صلة للفحص؟

شكرا مقدما!

حتى الصور التي تم تحميلها حديثًا لا يتم تحميلها. أحصل على 404

أفترض أن هذا ليس تثبيتًا قياسيًا؟ هذا هو كل ما هو مدعوم هنا.

كيف قمت بتثبيت discourse؟

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

ربما تذكر في المرة القادمة أنك قمت بالترحيل مؤخرًا؟

هل اتبعت هذا الدليل عند التغيير من temp.techenclave.com إلى techenclave.com؟

إعجابَين (2)

شكراً لك.

كان التثبيت وفقًا لدليل تثبيت discourse القياسي على GitHub.

نعم، لقد قمت بترحيل محلي على حاسوبي المحمول، وأخذت نسخة احتياطية واستعدت النسخة الاحتياطية على الخادم عن طريق تحميل الملف وإجراء استعادة نسخة احتياطية من لوحة الإدارة. كان ينبغي ألا أفعل ذلك لأن ملفات المرفقات لم يتم استعادتها بالكامل على الرغم من أن العملية أظهرت نجاحًا. على أي حال، قمت بعمل مزامنة لملفات التثبيت المحلي على الحاسوب المحمول إلى الخادم لتحديثها.

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

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

لا، لم أتبع هذا الدليل. ولكن عندما أنظر إليه، يمكنني رؤية أن الخطوة الوحيدة كانت

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

هل هاتان النقطتان ذات صلة؟

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.