فشل البناء، عدم القدرة على تنزيل قاعدة بيانات الموقع الجغرافي من MaxMind

مرحبًا!
قامت بتثبيت discourse على جهاز DigitalOcean جديد باستخدام هذه التعليمات قبل يومين، وكان كل شيء على ما يرام.
في اليوم السابق، حاولت تثبيت التطبيق مرة أخرى على جهاز DigitalOcean جديد (Ubuntu 18.03، 1 جيجابايت). إن خوادم VPS متطابقة، لكن هذه المرة لم ينجح الأمر.

شغّلت الأمر ./discourse-setup، وأجبت على الأسئلة، ثم انتظرت. تجمّدت سطر الأوامر عند السطر #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true):. والطريقة الوحيدة لتحرير السطر كانت بإغلاق اتصال SSH وإعادة الاتصال.

لديّ معرفة أساسية فقط حول لينكس.
لم يُحدث تحديث النظام باستخدام apt-get أي فرق.
اكتشفت أن المثبت يتوقف عند المهمة assets:precompile. وقد حدث الاستثناء من /var/www/discourse/lib/tasks/assets.rake:227:in rescue in block (2 levels) in <top (required)>': undefined local variable or method'name' for main:Object (NameError).
تكتب عملية الإعداد بيانات ثنائية إلى وحدة التحكم، ولهذا السبب يحدث التجمّد. وعند التعمق أكثر، أدركت أن خطأ 403 يحدث، لكنني لم أستطع العثور على عنوان URL المستهدف.

هل لدى أحدكم أي نصائح؟

ما الخطة التي كنت عليها من حيث الذاكرة العشوائية (RAM) والمعالج (CPU)؟

  • 1 جيجابايت من ذاكرة الوصول العشوائي
  • 1 وحدة معالجة مركزية مشتركة بسرعة 2.3 جيجاهيرتز
  • 25 جيجابايت من تخزين SSD

هل يمكنك وضع التتبع الكامل هنا؟ أيضًا، هل لديك أي إضافات مخصصة؟

نفذت الإعداد في نافذة شاشة وسجّلت العملية. ثم فتحت ملف السجل باستخدام xdd. واستبدلت قطعتين من البيانات الثنائية بـ <BINARY_DATA>

#<Thread:0x000055c07c7e8cf8@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exceptionis true):
/var/www/discourse/lib/tasks/assets.rake:227:in `rescue in block (2 levels) in <top (required)>':undefined local variable or method`name' for main:Object (NameError)
from /var/www/discourse/lib/tasks/assets.rake:216:in `block (2 levels) in <top (required)>' /var/www/discourse/lib/file_helper.rb:55:in `block in download':
403 Error:<BINARY_DATA> (OpenURI::HTTPError) <BINARY_DATA>
from /var/www/discourse/lib/final_destination.rb:400:in `block (3 levels) in safe_get'
from /var/www/discourse/lib/final_destination.rb:399:in `catch'
from /var/www/discourse/lib/final_destination.rb:399:in `block (2 levels) in safe_get'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1518:in `block in transport_request'
from /usr/local/lib/ruby/2.6.0/net/http/response.rb:165:in `reading_body'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1517:in `transport_request'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1479:in `request'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:9:in `block in request_with_mini_profiler'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:39:in `step'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:8:in `request_with_mini_profiler'
from /var/www/discourse/lib/final_destination.rb:371:in `block in safe_get'
from /var/www/discourse/lib/final_destination.rb:415:in `block in safe_session'
from /usr/local/lib/ruby/2.6.0/net/http.rb:920:in `start'
from /usr/local/lib/ruby/2.6.0/net/http.rb:605:in `start'
from /var/www/discourse/lib/final_destination.rb:412:in `safe_session'
from /var/www/discourse/lib/final_destination.rb:363:in `safe_get'
from /var/www/discourse/lib/final_destination.rb:129:in `get'
from /var/www/discourse/lib/file_helper.rb:47:in `download'
from /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
from /var/www/discourse/lib/tasks/assets.rake:218:in `block (3 levels) in <top (required)>'
from /var/www/discourse/lib/tasks/assets.rake:217:in `each'
from /var/www/discourse/lib/tasks/assets.rake:217:in `block (2 levels) in <top (required)>'

أتمّ المثبّت بعد ذلك بعض المهام دون مشاكل. وفي نهاية العملية ظهرت الرسائل التالية:

FAILED--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile'
failed with return #<Process::Status: pid 384 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'"]}
f534324ceedf6b1a8a5cc89f38e1c12c2418fb69c71f93f21c0dd2f5ef51483d
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one
./discourse-doctor may help diagnose the problem.

الأمر ./discourse-doctor لم يساعد. فقد اكتشف الطبيب أن التطبيق لا يعمل، وحاول إعادة البناء لكنه علّق أيضًا.
لم أقم بتثبيت أي إضافات، لأنني لم أشغّل هذا التطبيق على هذه الآلة من قبل :frowning:

عنوان IP الخاص بك محظور من تنزيل قاعدة بيانات MaxMind.

قم بتعديل ملف app.yml وأضف تحت مفتاح env DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365، ثم حاول إعادة البناء.

هذا يعمل! :boom::fire::tada:
شكرًا جزيلاً جدًا! هل أحتاج إلى ترك هذا السطر في app.yml، أم أحذفه بعد أول استدعاء ناجح؟

ستفشل مرة أخرى بمجرد إزالتها لأن الخادم الخاص بك لا يمكنه تنزيل قاعدة بيانات أحدث.

تعيينه إلى 365 يعني فعليًا أنك ستحصل على التحديث عند إصدارنا صورة أساسية جديدة، وهو ما يحدث مرتين في السنة.

يجب أن يكون لدينا رسالة خطأ أفضل هنا بالتأكيد، فهذه الرسالة غير مفهومة تمامًا..