هذا ما نجح أخيرًا:
كان يجب أن تكون هذه الإعدادات في ملف الإعدادات app.yml لكي يتمكن من تشغيل أوامر rake بشكل صحيح. عندما كانت موجودة فقط في منطقة /admin/site_settings/، لم تكن تشغل أوامر rake بشكل صحيح. كنت أتلقى خطأ:
خطأ: تأكد من تكوين S3 في config/discourse.conf أو متغيرات البيئة
الإعدادات مأخوذة من هنا… Configure an S3 compatible object storage provider for uploads
على وجه التحديد، استخدمت إعدادات Spaces غير المخصصة مع مسافتين قبل كل سطر. …
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_CDN_URL: https://nyc3.cdn.digitaloceanspaces.com
DISCOURSE_S3_BUCKET: my-files
DISCOURSE_S3_BACKUP_BUCKET: my-files/my-backups
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false
ملاحظة: يجب أن تقول DISCOURSE_S3_REGION حرفيًا “whatever” وليس شيئًا يمكن تفسيره على أنه منطقة S3 فعلية (أي us-west-1).
وأيضًا هذه الإعدادات، في قسم hooks من منطقة ## Plugins go here…
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
هنا واجهت مشكلة في المرة الأخيرة. بمجرد وضع ذلك وإعادة البناء، كنت أتلقى شاشة تحميل هذه عند محاولة فتح منتدانا في متصفح.
هذا فقط لأنه يبحث عن أصول لم يتم تحديثها بعد. هذا هو المكان الذي حان فيه الوقت لتشغيل أوامر rake، من داخل التطبيق…
./launcher enter app
rake s3:upload_assets
بمجرد تشغيله، قفز رقم العناصر للأعلى وظهر مجلد “assets” في الحاوية الخاصة بنا…
ثم بدأ المنتدى في التحميل بشكل صحيح. هذه هي إعدادات S3 الوحيدة التي أراها في منطقة /admin/site_settings/ الخاصة بي…
قمت بتشغيل هذا لتحميل جميع الملفات وقام بتحديث عناوين URL من المسار القديم إلى المسار الجديد (غير CDN).
rake uploads:migrate_to_s3 --trace
تضاعف عدد العناصر أكثر من ثلاثة أضعاف بعد الانتهاء من ذلك.
الشيء الوحيد الذي لاحظته هو أن مسارات صور المنشورات القديمة كانت تستخدم عنوان URL لنقطة نهاية S3 (S3 ENDPOINT) مقابل الصور المنشورة حديثًا كانت تستخدم عنوان URL لشبكة توصيل المحتوى S3 (S3 CDN URL).
https:/my-storage.sfo3.digitaloceanspaces.com/
مقابل
https:/my-storage.sfo3.cdn.digitaloceanspaces.com/
لم أهتم حقًا لأنه على الأقل كان كل شيء يستخدم S3.
لكني حاولت تشغيل…
rake posts:rebake

أوقف العملية لأنه نفد من الذاكرة. حاولت تشغيل هذا بدلاً من ذلك…
rake posts:rebake_uncooked_posts
نفد من الذاكرة عدة مرات وأعاد تشغيل نفسه، ثم نفد من الذاكرة مرة أخرى. قمت بتشغيله مرة أخرى. في النهاية، نجح في معالجة جميع المنشورات.
بمجرد أن مر عبر العملية بالكامل حتى 100٪، كانت جميع الروابط تستخدم أخيرًا مسار عنوان URL لشبكة توصيل المحتوى S3 (S3 CDN URL)، للمنشورات القديمة والجديدة.
سعيد جدًا لأن كل شيء يعمل الآن باستخدام S3، بما في ذلك النسخ الاحتياطية. وبالحديث عن ذلك، ربما حان الوقت لتشغيل نسخة احتياطية!
آمل أن يساعد هذا شخصًا ما.
حظا سعيدا!





