أقوم بالترقية كل شهر، ودائمًا على بعض أنظمة التطوير أولاً، ثم الإنتاج.
خلال دورة هذا الشهر، فشلت الترقية على نظام التطوير الأول. تمت ترقية docker_manager بنجاح ولكن ترقية discourse فشلت مع:
عذرًا، حدث خطأ أثناء ترقية Discourse. يرجى التحقق من السجلات أدناه.
تطبيق Discourse معطل تمامًا (يعرض صفحة الخطأ 500 “Oops”).
إليك ما تحتويه السجلات على الشاشة:
********************************************************
*** يرجى التحلى بالصبر، قد تستغرق الخطوات التالية بعض الوقت ***
********************************************************
تدوير Unicorn، لتحرير الذاكرة
إعادة تشغيل pid Unicorn: 50
الانتظار حتى يعيد Unicorn التحميل.
الانتظار حتى يعيد Unicorn التحميل..
الانتظار حتى يعيد Unicorn التحميل...
الانتظار حتى يعيد Unicorn التحميل....
الانتظار حتى يعيد Unicorn التحميل.....
الانتظار حتى يعيد Unicorn التحميل......
الانتظار حتى يعيد Unicorn التحميل.......
الانتظار حتى يعيد Unicorn التحميل........
الانتظار حتى يعيد Unicorn التحميل.........
الانتظار حتى يعيد Unicorn التحميل..........
الانتظار حتى يعيد Unicorn التحميل...........
إيقاف 7 عامل(عاملين) Unicorn، لتحرير الذاكرة
إيقاف طابور المهام لاستعادة الذاكرة، pid الرئيسي هو 4069
$ cd /var/www/discourse & git fetch --tags --force & git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
t [tag update] latest-release -> latest-release
* [new tag] v2.8.14 -> v2.8.14
* [new tag] v3.0.0 -> v3.0.0
HEAD is now at 666536cbd1 DEV: Prefer \A and \z over ^ and $ in regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Bundler 2.3.13 is running, but your lockfile was generated with 2.4.1. Installing Bundler 2.4.1 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.1
Installing bundler 2.4.1
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Fetching gem metadata from https://rubygems.org.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 7 Unicorn worker(s) that were stopped initially
لم أواجه خطأ في الترقية من قبل، لذا لست متأكدًا مما يجب فعله بعد ذلك. وإذا حدث هذا في بيئة الإنتاج، فماذا سأفعل؟
أقترح عليك التحقق من إصدار نظام التشغيل (التوزيعة) الذي تستخدمه: قد يكون إصدارًا قديمًا، ولا يحتوي على Ruby 3، وهذا هو السبب في المشكلة.
تعديل: انتظر، لست متأكدًا مما إذا كنت قد أخطأت. للإنتاج، كل شيء يحدث داخل حاوية Docker التي يجب أن تحتوي على جميع الإصدارات الصحيحة لكل شيء. هل لديك إعداد من نوع آخر؟
إذا كانت هذه تثبيتات تطوير، فلن تكون ممثلة لتثبيت Docker إنتاجي. بيئة التطوير الخاصة بك تحتوي على إصدار قديم من Ruby (2.7)، بينما قامت Discourse مؤخرًا بالترقية إلى 3.1 في الصورة.
نفس المشكلة هنا، فشل الترقية وقام بتدمير المنتدى إلى أخطاء 500. بصراحة، أنا متفاجئ إلى حد ما أن هذه المشكلة استمرت لمدة 3 أيام حتى الآن.
على أي حال، أنا أقوم الآن بإعادة بناء سطر الأوامر (CLI) والتي آمل أن تنجح. إذا لم يكن الأمر كذلك، فقد أخذت لقطة من جهاز افتراضي أولاً لأن أمي لم تربي أحمقًا.
من هذا المنشور يبدو أنهم قاموا بترقية Ruby إلى 3.0 مما يكسر تمامًا ترقيات الويب. لسوء الحظ، لا يزال البرنامج يسمح للمستخدمين بتجربتها، وبعد ذلك سترى مدى سرعة استجابة مضيفك لأخطاء HTTP 500.
تعديل: نجحت إعادة بناء سطر الأوامر (CLI) بالفعل، الحمد لله!
الأخطاء ذات الصلة:
Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'