لا أعرف ما إذا كان هذا يحدث فقط عند استنفاد الحد اليومي. لكنه يحدث طوال الوقت هنا لمدة 2-3 أشهر الآن. يبدو أن أشخاصًا آخرين يواجهون نفس المشكلة:
ربما ستكون فكرة جيدة توفير ملفات Maxmind من دليل محلي؟ أقوم بتنزيله على أي حال لاستخدامات أخرى، لذا فهو موجود بالفعل.
وربما سيكون من الأفضل توفير ملفات Maxmind في دليل مشترك داخل حاوية Discourse للحصول دائمًا على أحدث إصدار؟ كما ذكرت، أقوم بتنزيله على أي حال وأقوم بتحديث الملفات مرة واحدة يوميًا.
أعتقد أن المشكلة لا تتعلق بالحد. بمعنى آخر، يعطي خطأ أيضًا عند إدخال مفتاح خاطئ أو معرف حساب خاطئ. هذه هي الطريقة التي يمكننا بها حل المشكلة هنا: في حالة حدوث خطأ، اجعله يستخدم قاعدة البيانات القديمة ويستمر في إعادة بنائها. بالطبع، من المهم جدًا تحديد السبب الرئيسي لهذه المشكلة.
لقد حاولت إنشاء مثال قبل يومين وأعطاني خطأ. لم يكن له علاقة بالحد لأنها كانت أول عملية إعادة بناء لي في ذلك اليوم. ثم قمت بإنشاء مفتاح جديد وجربته وعمل. هناك موقف هنا: عندما تقوم بإنشاء مفتاح، يستغرق الأمر بعض الوقت حتى يصبح نشطًا. إذا قمت بإعادة إنشائه على الفور، فإنه يعطي خطأ.
حسنًا، مفاتيحي قديمة، لم أقم بتغييرها أبدًا بعد البدء في استخدامها. لماذا تعمل عندما تنشئ مفتاحًا جديدًا؟ لقد قلت إن الأمر يستغرق بعض الوقت حتى يصبح نشطًا. لذا يجب أن يرمي خطأ حينها؟
هذه فكرة جيدة. أو تقديم الملفات من دليل محلي، كما اقترحت. كل شيء اختياري. لكن هذا يزعجني حقًا أن إعادة البناء أشبه باليانصيب لعدة أسابيع الآن…
أعتقد أنك لم تفهم ما حاولت قوله. دعني أحاول مرة أخرى:
لدي برنامج نصي يقوم بتنزيل ملفات Maxmind كل بضعة أيام. باستخدام مفاتيح API الخاصة بي بالطبع. تُستخدم الملفات على الخادم لعدة أشياء مثل إحصائيات الويب AWstats، وإضافات WordPress، وما إلى ذلك.
لذا، لدي الملفات على الجهاز على أي حال. لماذا أقوم بتنزيل الملفات (مرة أخرى) عند إعادة بناء حاوية Discourse؟
نعم. سيكون من الرائع أن تكون هذه الملفات في تخزين دائم، خاصة إذا كان يمكن مشاركتها عبر مثيلات متعددة. لدي عدد قليل من مواقع Discourse على نفس الجهاز خلف Traefik، لذلك إذا كان بإمكانهم جميعًا مشاركة نفس mmdb، فسيوفر ذلك الاحتفاظ وتنزيل مجموعة من النسخ المنفصلة. حتى في التثبيت القياسي، يمكن أن تستمر هذه الملفات بين عمليات البناء. ربما هذا ممكن بالفعل؟ ربما يكفي تحميل /var/www/discourse/vendor/data في مكان دائم؟
آها. أعتقد أن هذا هو الغرض من GlobalSetting.maxmind_backup_path. لذلك أعتقد أنه إذا كان لديك maxminddb لسبب ما، يمكنك تعيين DISCOURSE_MAXMIND_BACKUP_PATH إلى شيء متاح في الحاوية.
أيضًا، لماذا نحتاج إلى mmdb لتجميع الأصول مسبقًا؟
إذًا، هل هذا يعمل بالفعل؟ هل سيؤدي إعداد DISCOURSE_MAXMIND_BACKUP_PATH في app.yml (كرابط داخلي من داخل الحاوية أو رابط مطلق على مضيف Docker؟) إلى تعطيل التنزيل من Maxmind أثناء إعادة البناء؟
شكراً لك مرة أخرى. لقد أنشأت /var/discourse/shared/discourse_test/data/mmdb وهنا ما فعلته لـ app.yml:
## مفتاح تحديد الموقع الجغرافي لعنوان IP للبحث عن عنوان IP
## انظر https://meta.discourse.org/t/-/137387/23 للتفاصيل
DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
DISCOURSE_MAXMIND_LICENSE_KEY: abcdefg
DISCOURSE_MAXMIND_BACKUP_PATH: /data/mmdb
## حاوية Docker عديمة الحالة؛ يتم تخزين جميع البيانات في /shared
volumes:
- volume:
host: /var/discourse/shared/discourse_test
guest: /shared
- volume:
host: /var/discourse/shared/discourse_test/log/var-log
guest: /var/log
- volume:
host: /var/discourse/shared/discourse_test/data
guest: /data
لقد أضفت DISCOURSE_MAXMIND_BACKUP_PATH وأضفت مجلداً ثالثاً.
هل الدليل الخاص بـ DISCOURSE_MAXMIND_BACKUP_PATH صحيح؟ هل المسار هو المسار داخل الحاوية؟
هل أحتاج إلى إزالة DISCOURSE_MAXMIND_ACCOUNT_ID و DISCOURSE_MAXMIND_LICENSE_KEY الآن؟
تم اكتشاف نسخة احتياطية من MaxMindDB (تم تنزيلها: 2024-07-17 23:15:02 +0000) في /data/mmdb
جارٍ نسخ MaxMindDB من /data/mmdb إلى /var/www/discourse/vendor/data
تخطي تنزيل MaxMindDB حيث تم تنزيله آخر مرة في 2024-07-17 23:15:02 +0000
أعتقد أن هذا هو ما أردت (أو بالأحرى “أردنا”) رؤيته.
أعتقد أنه كان بإمكانك تخطي وحدة التخزين الإضافية والقيام بـ
DISCOURSE_MAXMIND_BACKUP_PATH: /shared/data
ولكن إذا كانت لديك عملية أخرى تُبقي قاعدة البيانات هذه محدّثة في مكان آخر، فيمكنك تحميل هذا الدليل بحيث يكون لديك نسخة محلية واحدة فقط على محرك الأقراص الخاص بك وستحتاج إلى تحديث تلك النسخة الوحيدة.
أعتقد أنني سأترك الأمر على هذا النحو. في نظري، إنها تهيئة أوضح يمكن فهمها بعد بضعة أشهر. كما أنها قد تكون أكثر عمومية وتناسب حالات استخدام أكثر من حالتي فقط.
أقوم بنسخ ملفات mmdb الثلاثة من Maxmind إلى هذا الدليل عند تنزيلها. لقد قمت للتو بتعديل البرنامج النصي الذي أستخدمه (بالمناسبة، للتنزيل أستخدم geoipupdate، وهو متاح أيضًا كحزمة لـ Debian (وعلى الأرجح لتوزيعات Linux الأخرى)).
لقد انتهيت للتو من إعادة بناء أربعة حاويات Discourse مختلفة، وكلها بدون أي خطأ! هذا لم يحدث منذ شهور هنا. رائع جدًا!
لا تزال هذه المشكلة قائمة. سأشرح الحادث بالتفصيل:
لقد قمت بتحديث من المسؤول، وتوقف في منتصف الطريق. لذلك بدأت إعادة تجميع من لوحة تحكم ssh. ظهر خطأ، مثال للخطأ أدناه.
ثم قمت بإنشاء مفتاح maxmind جديد وأعدت تجميعه، وظهر خطأ مرة أخرى، نفس الخطأ. (من المثير للاهتمام، ربما لم يتم تنشيط المفتاح).
ثم قمت بتعطيل إعداد maxmind في ملف app.yml. قمت بإعادة تجميعه ونجحت عملية التجميع.
الملحقات التي استخدمتها موضحة في الصورة، أشياء أخرى استخدمتها: