تكوين موفر تخزين كائنات متوافق مع S3 للتحميلات

يمكنك إلقاء نظرة على وحدة تحكم JavaScript. تخميني هو أن شبكة توصيل المحتوى (CDN) خاطئة أو أنك لم تحصل على جزء الأصول المُعدة مسبقًا بشكل صحيح.

https://community.itechguides.com/ تعمل الآن:

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

إعجابَين (2)

تم فتح الموقع لك لأنه في الوقت الذي فتحته فيه، قمت بالتعليق على الأسطر التالية من ملف app.yml:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: accesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: secretkey
DISCOURSE_S3_CDN_URL: https://community-cdn.itechguides.com
DISCOURSE_S3_BUCKET: itg-community-files
DISCOURSE_S3_BACKUP_BUCKET: itg-community-files/backups
DISCOURSE_BACKUP_LOCATION: s3

لقد قمت الآن بإعادة تمكين الأسطر وأعدت بناء الحاوية. الآن، يعرض الموقع صفحة فارغة مرة أخرى!

توضح لقطة الشاشة أدناه المكان الذي وضعت فيه الرموز في ملف app.yml الخاص بي. كما ترى، وضعت رموز تكوين S3 أسفل DISCOURSE_NOTIFICATION_EMAIL


أ

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

ماذا يحدث إذا قمت بالتعليق على DISCOURSE_CDN_URL؟

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

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

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

هناك شيء آخر لست متأكدًا منه وهو كيفية إعداد ميزة سرد الملفات في حاوية DigitalOcean’s Space الخاصة بي. الآن، أنا أستخدم “Restrict Listing”. هل يؤثر هذا على أي شيء؟

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

لقد علقت DISCOURSE_S3_CDN_URL وتم تحميل الموقع. هذا يؤكد أن إعداد S3 CDN الخاص بي هو المشكلة، لكنني ما زلت لا أعرف كيفية إعداده بشكل صحيح.

سأكون ممتنًا جدًا لأي مساعدة.

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

هل أكملت جميع المهام في قسم الإعداد؟

إذا كنت أتذكر بشكل صحيح، فإن تعيين DISCOURSE_S3_CDN_URL في app.yml يتطلب تخزين الأصول على S3.

إعجابَين (2)

لا أعرف الكثير عن كيفية عمل Discourse. أنا مجرد مسؤول ويب آخر يقوم بالنسخ واللصق من عالم PHP، لكنني ما زلت أتساءل لماذا هناك حاجة للإعلان عن نفس شبكة توصيل المحتوى (CDN) مرتين.

لا أستخدم DISCOURSE_CDN_URL لأن لدي DISCOURSE_S3_CDN_URL (وربما لم ترشدني أي وثيقة قرأتها إلى استخدامه). لذلك حاولت.

أضفت DISCOURSE_CDN_URL: <cdn-url>. لم يعط إعادة البناء أي أخطاء، لكنني حصلت على خطأ 502. عندما أزلته، عاد المنتدى الخاص بي للعمل.

لا تزال مشاكلك قد تحدث بسبب بعض التكوين الخاطئ في مكان آخر. لكنني أحب الحلول السهلة، حتى عندما أكون مخطئًا، وأنا ألوم الموقف عندما تخبرني بشبكة توصيل محتوى (CDN) مرتين لاحتياجات مختلفة. أو شيء من هذا القبيل.

إعجابَين (2)

يختلف 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.


هنا توقفت! لست متأكدًا من سبب عدم قدرة شبكة توصيل المحتوى S3 على تقديم الأصول.

4 إعجابات

شكرا على الشرح الصبور!

هذا غير مألوف بالنسبة لي. ولكن كما قلت، لدي خبرة محدودة جدًا. أنا أستخدم AWS كشبكة توصيل محتوى (CDN) عبر S3/CloudFlare في ووردبريس ولكن للملفات الثابتة فقط - ستحتاج البرامج النصية إلى إعداد آخر. أعتقد أنه لا جدوى من مقارنة WP و Discourse لأنهما منصتان مختلفتان تمامًا من حيث المبدأ. لكنني أحاول فهم مبادئ هذا المفهوم هنا.

حسنًا، لقد حصلت على الكثير الآن أكثر منك :smile:

تعديل: لقد كنت مخطئًا تمامًا في إعداداتي أيضًا :flushed: يتم تقديم جميع ملفات JavaScript والصور وما إلى ذلك عبر شبكة توصيل المحتوى (CDN). لكنني لم أتمكن من العثور على ملفات CSS هناك.

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

نعم، إنهم كذلك. ولكن شكراً على التحديث.

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

مرحباً @Jagster سأقدر مساعدتك حقًا.
المشكلة التي أواجهها الآن هي أن موقعي يحاول تحميل أصول .gz.js من شبكة توصيل المحتوى لتخزين الكائنات ولكن الملفات غير موجودة. كيف يمكنني إجبار Discourse على تحميل أصول .gz.js تلك إلى تخزين الكائنات؟

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

هذا ما يفعله هذا الجزء من الدليل:

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

لدي بالفعل هذا السطر في ملف app.yml الخاص بي. لقد وضعت الكود أعلاه بعد تعريف الإضافات. أو هل أنقلها فوق قوائم الإضافات؟

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

هذا خطأ. يجب أن يكون المفتاح 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
إعجاب واحد (1)

شكراً جزيلاً لك يا @Falco. سأنقلهم الآن وأحاول مرة أخرى.

إعجابَين (2)

ولكن ماذا عن المكونات الإضافية الأخرى؟ هل من المقبول إدراجها أدناه

  • sudo -E -u discourse bundle exec rake s3:upload_assets؟
إعجاب واحد (1)

لا.

سيصبح:

## توضع الإضافات هنا
## انظر https://meta.discourse.org/t/19157 للتفاصيل
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/docker_manager.git
          - 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

YAML هو هيكل بيانات يشبه الشجرة والمسافات البيضاء تحدد الهيكل.

3 إعجابات

بمساعدة التوجيهات التي قدمتها أنت (@Falco) و @pfaffman، لقد أكملت هذا التكوين بنجاح.

لأعضاء المجتمع الآخرين الذين يرغبون في رؤية تكويناتي. إليك لقطات الشاشة. لقد كتبت أيضًا دليلًا شاملاً أثناء تكوين كل هذه.

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

إعجابَين (2)

شكراً جزيلاً لكما @Falco و @pfaffman على مساعدتكم. هذه هي المرة الأولى التي أقوم فيها بتكوين Discourse، لكنني أكملت للتو أصعب الأجزاء (أعتقد!). أنا ممتن جداً!

3 إعجابات