لم أفعل ذلك. لكنني كنت أقوم باستكشاف الأخطاء وإصلاحها وأعتقد بشدة أنني لم أقم بإعداد S3 CDN بشكل صحيح. أنا أستخدم StackPath ولست متأكدًا مما يجب استخدامه في عنوان المصدر ورأس المضيف
هناك شيء آخر لست متأكدًا منه وهو كيفية إعداد ميزة سرد الملفات في حاوية DigitalOcean’s Space الخاصة بي. الآن، أنا أستخدم “Restrict Listing”. هل يؤثر هذا على أي شيء؟
لا أعرف الكثير عن كيفية عمل Discourse. أنا مجرد مسؤول ويب آخر يقوم بالنسخ واللصق من عالم PHP، لكنني ما زلت أتساءل لماذا هناك حاجة للإعلان عن نفس شبكة توصيل المحتوى (CDN) مرتين.
لا أستخدم DISCOURSE_CDN_URL لأن لدي DISCOURSE_S3_CDN_URL (وربما لم ترشدني أي وثيقة قرأتها إلى استخدامه). لذلك حاولت.
أضفت DISCOURSE_CDN_URL: <cdn-url>. لم يعط إعادة البناء أي أخطاء، لكنني حصلت على خطأ 502. عندما أزلته، عاد المنتدى الخاص بي للعمل.
لا تزال مشاكلك قد تحدث بسبب بعض التكوين الخاطئ في مكان آخر. لكنني أحب الحلول السهلة، حتى عندما أكون مخطئًا، وأنا ألوم الموقف عندما تخبرني بشبكة توصيل محتوى (CDN) مرتين لاحتياجات مختلفة. أو شيء من هذا القبيل.
يختلف DISCOURSE_CDN_URL و DISCOURSE_S3_CDN_URL. بينما يشير DISCOURSE_CDN_URL إلى منتداك، يشير DISCOURSE_S3_CDN_URL إلى عنوان URL لتخزين S3 الخاص بك.
الفكرة هي أن يقوم DISCOURSE_CDN_URL بتقديم الأصول القابلة للسحب مثل CSS بينما يقوم DISCOURSE_S3_CDN_URL بتقديم الأصول القابلة للدفع مثل JS والصور وتحميلات المستخدم.
لقد تمكنت من جعل كل شيء يعمل باستثناء شبكة توصيل المحتوى لتخزين S3 الخاصة بي. كلما قمت بتمكين هذا الجزء في ملف app.yml، يظهر المنتدى الخاص بي فارغًا.
يُظهر فحص عنصر الشبكة في المتصفح أن الأصول التي يقدمها DISCOURSE_S3_CDN_URL تُظهر خطأ 404.
هذا غير مألوف بالنسبة لي. ولكن كما قلت، لدي خبرة محدودة جدًا. أنا أستخدم AWS كشبكة توصيل محتوى (CDN) عبر S3/CloudFlare في ووردبريس ولكن للملفات الثابتة فقط - ستحتاج البرامج النصية إلى إعداد آخر. أعتقد أنه لا جدوى من مقارنة WP و Discourse لأنهما منصتان مختلفتان تمامًا من حيث المبدأ. لكنني أحاول فهم مبادئ هذا المفهوم هنا.
حسنًا، لقد حصلت على الكثير الآن أكثر منك
تعديل: لقد كنت مخطئًا تمامًا في إعداداتي أيضًا يتم تقديم جميع ملفات JavaScript والصور وما إلى ذلك عبر شبكة توصيل المحتوى (CDN). لكنني لم أتمكن من العثور على ملفات CSS هناك.
مرحباً @Jagster سأقدر مساعدتك حقًا.
المشكلة التي أواجهها الآن هي أن موقعي يحاول تحميل أصول .gz.js من شبكة توصيل المحتوى لتخزين الكائنات ولكن الملفات غير موجودة. كيف يمكنني إجبار Discourse على تحميل أصول .gz.js تلك إلى تخزين الكائنات؟
هذا خطأ. يجب أن يكون المفتاح after_assets_precompile في YAML تحت المفتاح hooks.
بشكل افتراضي نقوم بالشحن كالتالي:
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
وتريد
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
بمساعدة التوجيهات التي قدمتها أنت (@Falco) و @pfaffman، لقد أكملت هذا التكوين بنجاح.
لأعضاء المجتمع الآخرين الذين يرغبون في رؤية تكويناتي. إليك لقطات الشاشة. لقد كتبت أيضًا دليلًا شاملاً أثناء تكوين كل هذه.
لقد استخدمت StackPath و DigitalOcean Spaces. يتضمن دليلي خطوة بخطوة للتكوين بأكمله. إذا احتاج أي شخص إلى هذا الدليل، فسأكون سعيدًا بنشر عنوان URL عند الطلب.
شكراً جزيلاً لكما @Falco و @pfaffman على مساعدتكم. هذه هي المرة الأولى التي أقوم فيها بتكوين Discourse، لكنني أكملت للتو أصعب الأجزاء (أعتقد!). أنا ممتن جداً!