تمكين الإعداد المخفي لتضمين تحميلات S3 في النسخ الاحتياطية

:bookmark: يشرح هذا الدليل كيفية تمكين إعداد مخفي في Discourse لتضمين عمليات تحميل Amazon S3 (Simple Storage Service) في النسخ الاحتياطية الخاصة بك.

لدى Discourse القدرة على تخزين تحميلات الوسائط على Amazon S3 لتحقيق قابلية التوسع والموثوقية. ومع ذلك، لا يتم تضمين هذه التحميلات في النسخ الاحتياطية افتراضيًا.

يغطي هذا الدليل تمكين إعداد مخفي لتضمين تحميلات S3 في النسخ الاحتياطية، مع خيارات لتكوينها عبر وحدة تحكم Rails أو ملف app.yml.

استخدام وحدة تحكم Rails

لتمكين تضمين تحميلات S3 في النسخ الاحتياطية عبر وحدة تحكم Rails، يمكنك اتباع هذه الخطوات:

  1. الوصول إلى خادم Discourse الخاص بك عبر SSH.
  2. الدخول إلى حاوية Docker الخاصة بـ Discourse عن طريق تشغيل:
cd /var/discourse
./launcher enter app
  1. تشغيل وحدة تحكم Rails:
rails c
  1. تمكين الإعداد عن طريق تنفيذ:
SiteSetting.include_s3_uploads_in_backups = true
  1. الخروج من وحدة التحكم والحاوية عن طريق كتابة:
exit
exit

يسري هذا التغيير على الفور. لا يلزم اتخاذ أي إجراءات أخرى.

تعديل ملف app.yml

يمكنك أيضًا إجراء هذا التغيير عن طريق تعديل ملف app.yml في قسم env:.

  1. الوصول إلى دليل حاوية تطبيق Discourse:
cd /var/discourse
  1. افتح ملف app.yml الموجود في containers:
nano containers/app.yml
  1. ضمن قسم env:, أضف السطر:
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
  1. احفظ الملف واخرج من المحرر.
  2. طبق التغييرات عن طريق إعادة بناء التطبيق:
./launcher rebuild app

لكي يسري هذا التغيير، تحتاج إلى تشغيل الأمر ./launcher rebuild app لتطبيق الإعداد.

9 إعجابات

أليس كافياً تدمير الحاوية وإعادة تشغيلها؟

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

لا أعتقد أنك بحاجة إلى التدمير، وإعادة التشغيل كافية. سأؤكد ذلك لاحقًا.

على أي حال، شكرًا @pfaffman على howto دليلك الآخر الذي استخدمته كنموذج لهذا الدليل.

إعجابَين (2)

أنا متأكد من أنك بحاجة إلى تدمير وإعادة تشغيل لتغيير متغيرات البيئة المطبقة على الحاوية.

بالطبع، إذا قاموا بالترقيات باستخدام docker manager، فستفقد هذه الترقيات عند تدمير الحاوية، وهذا هو السبب في أن إعادة البناء هي التوصية الأكثر أمانًا. ربما من الأفضل التوصية بإعادة البناء لأنها الأكثر فعالية.

3 إعجابات

لماذا، أليس هذا الإعداد كافياً لتضمين جميع التحميلات في النسخة الاحتياطية:
image

سيشمل ذلك التحميلات المحلية ولكنه لن يقوم بتنزيل الملفات الموجودة في s3 لتضمينها في النسخ الاحتياطي.

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

حسنًا. لم أكن أعرف.
ولكن، ما هو الفرق بين مجلد “Local Uploads” ومجلد “Files Stored in S3 ‘Uploads’”؟

أيضًا، على الرغم من أنني لم أغير الإعداد في web_only أو في rails console كما قيل أعلاه حتى الآن، ولكني اخترت فقط الإعداد الذي قيل عنه هنا.

ولكن لا يزال عندما قمت بتشغيل النسخ الاحتياطي، قبل 10 دقائق فقط، بدا الأمر وكأنه قام بتنزيل آلاف الملفات (والتي أفترض أنها يمكن أن تكون فقط على مخزن S3 الخاص بي، وكلمة “Download” نفسها تعني أنه يقوم بتنزيلها من مجلد S3 البعيد).
كما أنه يظهر أنه فشل في تنزيل العديد، العديد من الملفات. لذلك افترضت أنه إذا كانت هذه الملفات موجودة على الخادم السحابي المحلي، فلماذا سيفشل في تضمين تلك الملفات في النسخ الاحتياطي؟ انظر هذه اللقطة:

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

إذا كنت بحاجة إلى إخراجها من S3 (مثل إذا كنت مستضافًا على discourse.org وتنتقل إلى استضافة أخرى) فستحتاج إلى نسخة احتياطية تتضمن الملفات المخزنة على S3.

لماذا تريد تنزيل ملفاتك من S3؟

نعم، يبدو أنه يفشل في تنزيل الملفات من S3. تخميني هو أنه لم يقم بتنزيل أي منها، على الرغم من أنه من المحتمل أن يكون قرصك ممتلئًا، ربما (أتوقع خطأ امتلاء القرص، ولكن ربما لا؟).

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

شكرا. مرة أخرى.

نظرًا لأن موقعي صغير جدًا، فإن دفع بضعة دولارات، والتي تزداد كل شهر مع تحديثات صغيرة، كل شهر لتخزين AWS S3 يثبت أنه غير عملي بالنسبة لي. سأقوم بنقل “التحميلات” (وربما موقع مجلد “النسخ الاحتياطي” أيضًا) إلى مزود آخر مثل Google One Drive أو iDrive أو Hetzner وما إلى ذلك من البدائل الرخيصة.
أجد الآن أنه حتى أنواع التخزين المختلفة من AWS (من الأكثر نشاطًا إلى نوع التخزين الأرشيفي)، إذا كنت قد اخترتها بحكمة في البداية، لكانت تكلفني نصف الكمية/عدد الملفات نفسه.

لكنني سأفعل ذلك الآن.

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

عندما اخترت تخزين وسائطي “uploads” في حاوية S3 الخاصة بـ AWS منذ سنوات، في ذلك الوقت (على حد علمي) قمت أيضًا بنقل جميع الوسائط الموجودة التي حملها المستخدمون إلى S3.

علاوة على ذلك، لقد تحققت الآن في مجلد /var/discourse/shared/web_only/uploads/default/optimized/1X الخاص بي، وهو يحتوي فقط على 63 ملف PNG ومجلد /var/discourse/shared/web_only/uploads/default/original/1X يحتوي على 3 ملفات فقط. (باستثناء 1x، لا توجد مجلدات مشابهة أخرى في مجلد ‘uploads أو default’).

أيضًا، لم أقم بتغيير أي خيار في وحدة تحكم rails أو في ملف Yml حتى الآن لتضمين تحميلات S3 في النسخ الاحتياطي الخاصة بي. لذا، لماذا يُظهر أنه قام بتنزيل العديد من “تحميلات الوسائط” من S3!!!
وفشل في تنزيل العديد من الملفات المحملة؟ لقطة شاشة هنا.

علاوة على ذلك، يبلغ حجم مجلد التحميلات الخاص بي على S3 حوالي 3 جيجابايت (32 ألف ملف)، بينما أظهرت سجلات النسخ الاحتياطي أنه قام بتنزيل حوالي 3.2 ألف فقط (10٪ من الإجمالي).

مرتبك جدا.

هل هناك أمر rails آخر للتأكد من عدم تفعيل هذا الخيار منذ سنوات، عندما انتقلت إلى AWS S3؟

أي تفسير سيكون مفيدًا.