فشل الترقية / إعادة البناء بسبب انتهاء دعم قاعدة بيانات MaxMind

يا رفاق،

آمل أن يتمكن أحدكم من المساعدة هنا. لم أواجه أي مشكلة لأكثر من 12 شهرًا فيما يتعلق بترقية منتداي الذي يعمل في حاوية Docker على EC2.

لقد جربت ما يلي:

  • تنظيف launcher لكن لا توجد مشاكل في مساحة القرص.
  • أحدث أمر git pull.
  • إعادة بناء التطبيق عدة مرات.
  • حتى جربت discourse-setup وكنت سأحاول استعادة قاعدة البيانات :frowning:
  • إعادة تشغيل الخادم.
  • apt-get update; apt-get upgrade.

إليك آخر سطور السجل:

Done compressing all JS files : 88.88 secs
rake aborted!
SocketError: Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: No address associated with hostname)
/var/www/discourse/lib/final_destination.rb:411:in `safe_session'
/var/www/discourse/lib/final_destination.rb:362:in `safe_get'
/var/www/discourse/lib/final_destination.rb:131:in `get'
/var/www/discourse/lib/file_helper.rb:51:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:220:in `block (3 levels) in <top (required)>'
/var/www/discourse/lib/tasks/assets.rake:219:in `each'
/var/www/discourse/lib/tasks/assets.rake:219:in `block (2 levels) in <top (required)>'

Caused by:

SocketError: getaddrinfo: No address associated with hostname

/var/www/discourse/lib/final_destination.rb:411:in `safe_session'
/var/www/discourse/lib/final_destination.rb:362:in `safe_get'
/var/www/discourse/lib/final_destination.rb:131:in `get'
/var/www/discourse/lib/file_helper.rb:51:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:220:in `block (3 levels) in <top (required)>'
/var/www/discourse/lib/tasks/assets.rake:219:in `each'
/var/www/discourse/lib/tasks/assets.rake:219:in `block (2 levels) in <top (required)>'

Tasks: TOP => assets:precompile

(See full trace by running task with --trace)

I, [2019-12-30T18:56:27.608998 #1] INFO -- : Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps
I, [2019-12-30T18:56:27.633923 #1] INFO -- : Terminating async processes
I, [2019-12-30T18:56:27.637383 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 49
I, [2019-12-30T18:56:27.639770 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 166
166:signal-handler (1577732187) Received SIGTERM scheduling shutdown...
2019-12-30 18:56:27.639 UTC [49] LOG: received fast shutdown request
2019-12-30 18:56:27.654 UTC [49] LOG: aborting any active transactions
166:M 30 Dec 2019 18:56:27.666 # User requested shutdown...
166:M 30 Dec 2019 18:56:27.694 * Saving the final RDB snapshot before exiting.
2019-12-30 18:56:27.702 UTC [49] LOG: worker process: logical replication launcher (PID 58) exited with exit code 1
2019-12-30 18:56:27.711 UTC [53] LOG: shutting down
2019-12-30 18:56:27.819 UTC [49] LOG: database system is shut down
166:M 30 Dec 2019 18:56:27.885 * DB saved on disk
166:M 30 Dec 2019 18:56:27.886 # Redis is now ready to exit, bye bye...

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile' failed with return #<Process::Status: pid 507 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake assets:precompile'"]}
fcf17d793c27c4e87616420ead222cc3f4a9fc163f239a5542b1c9a092579b30

** FAILED TO BOOTSTRAP ** الرجاء التمرير للأعلى والبحث عن رسائل الخطأ السابقة، فقد يكون هناك أكثر من خطأ.
./discourse-doctor قد يساعد في تشخيص المشكلة.

آمل حقًا أن يتمكن أحدكم من توضيح هذا الأمر.

شكرًا لكم جميعًا.

في حال رغب أي شخص في الاستمرار في استخدام آخر الملفات المنشورة بموجب الترخيص القديم، فقد قمت بحفظ جميعها في archive.org.

تم إنشاء جميع الملفات بواسطة MaxMind وتوزيعها بموجب رخصة المشاع الإبداعي النسبة-المشاركة بالمثل 4.0 الدولية.

رابط archive.org تجزئة MD5 رأس Last-Modified
GeoLite2-City.tar.gz 7ba2c58b4e0eac6c08c6399aebdae26c الثلاثاء، 24 ديسمبر 2019 17:46:00 بتوقيت غرينتش
GeoLite2-Country.tar.gz dc6224c648350d90f344a0c5c3ca5474 الثلاثاء، 24 ديسمبر 2019 17:40:42 بتوقيت غرينتش
GeoLite2-ASN.tar.gz f3c9c5775fd226db6e8098675ff65861 الثلاثاء، 24 ديسمبر 2019 14:16:58 بتوقيت غرينتش
GeoLite2-City-CSV.zip 89e5bf01a970b5668d74cf29a242d546 الثلاثاء، 24 ديسمبر 2019 17:45:52 بتوقيت غرينتش
GeoLite2-Country-CSV.zip f50b518341de54fe48c5e34f13e24e99 الثلاثاء، 24 ديسمبر 2019 17:40:41 بتوقيت غرينتش
GeoLite2-ASN-CSV.zip 463ccd73c104c52547fa50a84fc2f86e الثلاثاء، 24 ديسمبر 2019 14:16:58 بتوقيت غرينتش

أرشيف صفحة المعلومات (لقطة شاشة)

نُضيف الآن الدعم للطريقة المعتمدة رسميًا للحصول على قواعد البيانات وفقًا لـ:

إذا كنت ترغب في الحصول على تحديثات منتظمة من MaxMind، فيجب عليك التوجه إلى GeoLite sign up | MaxMind لتسجيل حساب وإنشاء مفتاح ترخيص.

ثم تقوم بتعديل الحاوية لتشمل المفتاح في قسم env::

env:
   DISCOURSE_MAXMIND_LICENSE_KEY: ...ضع المفتاح هنا...

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

نحن نتناقش مع MaxMind بشأن إمكانية تضمين قواعد البيانات المحدثة في صور الأساس الجديدة الخاصة بنا. هناك خياران متاحان للمضيفين ذاتيًا اعتمادًا على نتيجة هذا النقاش:

  1. عدم وجود حل للعناوين IP في صفحة ملف المستخدم وصفحة المسؤول حتى تقوم بإضافة ترخيص.

  2. حل عناوين IP قديم لمدة تصل إلى N يومًا منذ حصولك على صورة الأساس (أي بعد تنفيذ ./launcher rebuild app).

من المرجح جدًا أن يكون الخيار (1) هو النتيجة النهائية للمضيفين الذاتيين.

كما نقوم باستكشاف بدائل أخرى هنا، لكن أيدينا مقيدة إلى حد كبير.

أنا معارض بشدة لإضافة وظائف إلى النواة تقوم بالبحث عن عناوين IP عبر خدمة ويب، لأن ذلك يعرّض المعلومات لطرف ثالث. لا يوجد سوى خيارين حقيقيين كبيران متاحان حاليًا، وكلاهما يتطلب تسجيلًا.

@سام لدي طلب ميزة صغير، هل يمكن إضافة إعداد في لوحة المسؤول لإضافة مفتاح الترخيص الخاص بـ MaxMind؟

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

هل يحصل أي شخص آخر على هذه الرسالة عند محاولة التسجيل في حساب MaxMind؟

يمكنني تأكيد أنه تمكنا من إنشاء حساب دون أي مشاكل. ستحتاج إلى التواصل مع MaxMind للحصول على الدعم فيما يتعلق بمشاكل الحساب، ولا يمكننا المساعدة في ذلك هنا.

أحاول الترقية من الإصدار 2.3.8 إلى 2.3.9 لكن لا شيء يعمل.

الخطأ ذو الصلة، بقدر ما أستطيع تحديده، هو ما تم مناقشته في هذا الموضوع.

rake aborted!
SocketError: Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: Name or service not known)

في ملف app.yml الخاص بي، جربت القيم 30 و 100 و 0 لتلك العلامة env:

DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 0

لكن يبدو أنها لا تُحدث أي فرق أبدًا (أتساءل عما إذا كانت تُعرّف بشكل صحيح).

ما الذي يمكنني تجربته بعد ذلك؟

شكرًا للجميع الذين عملوا على الإصلاح السريع خلال الأسابيع القليلة الماضية. كان عليّ القيام بنفس الشيء مع Matomo، وهو ما كان أكثر إيلامًا (يدويًا).

وهذا يقودني لسؤالي: أين تُستخدم بيانات MaxMind بالضبط؟ هل فقط في حالات عندما يطلع المشرفون على عناوين IP للمستخدمين؟ أم هناك شيء آخر لم أفكر فيه؟

بالطبع لديّ حساب MM بالفعل، لكنني أتساءل عما إذا كان يستحق الجهد القيام بذلك بأي عجلة.

يقوم بالبحث الجغرافي لرقم عناوين IP. لقد قمت بالعديد من عمليات التثبيت والترقية مؤخرًا دون تعيين مفتاح API، وتعمل عمليات إعادة البناء بشكل جيد. (الإصدار الحالي هو النسخة التجريبية 10)

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

آمل تحديث إعداد discourse-setup للسماح بالمفتاح الأسبوع القادم.

نعم، تُستخدم للبحث عن عناوين IP الخاصة بالمستخدمين من قبل المشرفين. كما تُستخدم في قائمة “الأجهزة المستخدمة مؤخرًا” ضمن تفضيلات المستخدم، وفي تنبيهات المشرفين عند اكتشاف تسجيل دخول جديد لحساب من موقع مختلف.

نعتذر عن الإزعاج، لكننا نود الاستفسار عما إذا كان من المخطط الاحتفاظ بإمكانية تعطيل بحث عناوين IP. يبدو لنا أن إجبار المشرفين على الاشتراك في خدمة طرف ثالث ليس فكرة جيدة. شخصياً، لدي بالفعل مفتاح ترخيص لاستخدامات أخرى، لذا فإن كلامي هنا عام.

إذا لم تقم بإدخال مفتاح ترخيص، فسيتم تعطيله. لا يوجد ما يجبر المدراء على إعداده.

أيضًا، وفي حال وجود أي لبس، فإن Discourse لا يرسل عناوين IP إلى طرف ثالث أبدًا. حيث يقوم Discourse بتنزيل قاعدة بيانات كاملة لمواقع عناوين IP من MaxMind، ثم يقوم بالبحث داخليًا.

عظيم، شكرًا للتوضيح!

مراجعة هذا… تم نقل هذا إلى الإصدار المستقر.