مشكلة عند تحديث منتدى Discourse


مرحباً بالجميع!
كنت أحاول تحديث منتدى discourse باستخدام الرابط المنشور في لوحة الإدارة وواجهت هذا الخطأ. لقد اختفى المنتدى بأكمله. ماذا يجب أن أفعل الآن لإعادة تعيين التحديث؟ شكراً جزيلاً إذا استطاع أي شخص مساعدتي. :sob:

إعجاب واحد (1)

في الواقع، هذا يعني أن منتدىك قيد التحديث. - ما لم تقاطع التحديث قبل اكتماله.

حاول زيارة منتدىك https://yoursite.com/latest.json. إذا أعاد شيئًا، فانتظر 10 دقائق وانظر ما إذا كانت المشكلة ستحل نفسها

إعجاب واحد (1)

شكرا على ردك، لقد جربت الطريقة التي قدمتها وهي تُرجع 502 Bad Gateway nginx.

يبدو أنه قد يتعين عليك تشغيل ./launcher rebuild app

حاولت تشغيل ./launcher rebuild app وحصلت على رسائل الخطأ التالية:

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' failed with return #<Process::Status: pid 340 exit 5>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}

6e9e60bd6b6113cdcb001127fd2a24fe86f2a1658bf24500e5e2b720fd793510

** 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.

وقمت بالتمرير للأعلى ووجدت بعض سجلات الأخطاء المحتملة:

1)200:M 25 Jun 2023 16:00:16.252 # Failed listening on port 6379 (TCP), aborting.

2)[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

3)Bundler::PathError: The path `/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/sprockets-f4d3dae71ef2` does not exist.

4)Bundler::InstallError: sass-embedded-1.63.6-x86_64-linux requires rubygems version >= 3.3.22, which is incompatible with the current version, 3.2.18

هل واجه شخص آخر مشكلة مماثلة مؤخرًا إذا كان هذا مفيدًا؟

شكراً جزيلاً على ردك، لكن أعتقد أنها ليست نفس المشكلة، خادمي في ألمانيا. أنا أستخدم صورة discourse docker لخادمي. ماذا أفعل إذا لم يعمل ./launcher rebuild app؟

إعجاب واحد (1)

تبدو مشابهة لـ
فشل إعادة البناء بسبب عدم توافق جوهرة روبي

إعجاب واحد (1)

شكراً لمساعدتك! نعم، يبدو الأمر مشابهاً وحاولت:

my server:/var/discourse**$ git pull

fatal: Not a git repository: ../.git/modules/discourse_docker

هل يجب أن أفعل شيئًا قبل تشغيل git pull؟ كنت أقوم بذلك في /var/discourse الخاص بالخادم الخاص بي.

يبدو أنه من الممكن أن يكون لديك إعداد غير عادي - هل هذا تثبيت قياسي؟

إعجاب واحد (1)

قرأت وثائق المبرمج الأخير بالنسبة لي وتقول إنه نظرًا لأن العديد من الأشياء على الويب تعمل خلف nginx ويحتاج discourse أيضًا إلى الاستضافة خلف nginx. التثبيت القياسي لا يعمل لحالتي.

وهذه هي الطريقة التي قالها في الوثيقة وكيف فعل:

يعمل Discourse في حاوية docker. ومع ذلك، فإنه يتطلب نوعًا خاصًا من التكوين، وليس عبر ملف docker-compose.yml أو ملف .conf.

مستودع discourse-project/ على github المطلوب تكوين وبناء صورة docker يمكن العثور عليها هنا. تجاهل برنامج “discourse-setup” اللطيف والمفيد الذي يقدمونه، فلن يعمل هنا. نحتاج إلى تكوين التطبيق بأنفسنا.

  1. استنساخ discourse_docker إلى /var/discourse: git clone https://github.com/discourse/discourse_docker.git /var/discourse
  2. انتقل إلى المجلد واستخدم تكوينًا نموذجيًا مقدمًا: cd /var/discourse && cp samples/standalone.yml containers/app.yml
  3. ثم قم بتحرير ملف containers/app.yml (على سبيل المثال باستخدام sudo nano)
  • تم إجراء تغييرات على قسم الاستضافة، وإعدادات smtp للبريد - والأهم من ذلك - قسم الكشف بحيث يتم كشف منفذ غير مستخدم فقط للخارج
  • لتشغيل discourse على مسار مثل “/forum” كانت هناك حاجة إلى المزيد من التغييرات كما هو موضح هنا
  • تحدث بعض المشاكل أيضًا مع المصادقة عبر البريد الإلكتروني:
    • البريد الذي يرسل رسائل البريد الإلكتروني موجود هنا “بريد الخادم”. ومع ذلك، يتوقع Discourse أن يكون للبريد نفس نطاق مضيفه، وهو “بريد الخادم”
    • استخدم أيضًا “DISCOURSE_SMTP_AUTHENTICATION: login” كخيار بيئي آخر. لماذا دائمًا. . .
  1. ثم قم ببناء التطبيق من الدليل /var/discourse باستخدام sudo ./launcher bootstrap app. يستغرق هذا وقتًا طويلاً
  2. ثم قد تتمكن من بدء حاوية discourse باستخدام sudo ./launcher start app.
إعجاب واحد (1)

هذه ملاحظات جيدة.
git pull;./launcher rebuild app يجب أن تعمل.
من أي إصدار تقوم بالتحديث؟
هل نظام التشغيل قديم؟ (cat /etc/issue)
هل القرص ممتلئ؟ (df - h)

إعجاب واحد (1)

شكراً على ردك! الإصدار الذي أقوم بالتحديث منه هو 2.8.0.beta6 وآخر تحديث كان في 28.09.2021.

بعد تشغيل cat /etc/issue حصلت على:
Debian GNU/Linux 9 \n \l

والتالي هو المعلومات وفقاً لـ ./discourse-doctor

==================== MEMORY INFORMATION ====================
RAM (MB): 4050

              total        used        free      shared  buff/cache   available
Mem:           3955         427        1152          63        2375        3182
Swap:             0           0           0

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        63G   27G   34G  45% /

==================== DISK INFORMATION ====================
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc0b6220c

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1        2048 134217727 134215680  64G 83 Linux

قد تضيف التبديل.

أيضًا، انظر تحديث PostgreSQL 13.

هل قمت بإعادة البناء أكثر من مرة؟

انظر أيضًا Debian | endoflife.date

تحتاج حقًا إلى نقل كل شيء إلى جهاز افتراضي جديد بنظام تشغيل مدعوم. لذا ستحتاج أيضًا إلى ترقية أي شيء آخر لديك قيد التشغيل.

إعجاب واحد (1)

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

هذا الخطأ يزعجني - هل ما زلت تراه؟ يجب أن يعمل حاوية docker الآن 3.2.0

ولكن إذا لم يكن /var/discourse الخاص بك دليل git، فقد تم القيام بشيء يختلف عن التعليمات. إنه يمنع التحديث ويسبب عدم تطابق إصدار ruby. بالنسبة لي:

/var/discourse# git status
On branch main
Your branch is up to date with 'origin/main'.

نرى أيضًا دليل .git:

# ls -a /var/discourse/
.     .github     README.md  cids              discourse-setup  launcher     scripts    tests
..    .gitignore  bin        containers        image            rebuild.log  shared
.git  LICENSE     c          discourse-doctor  index.html       samples      templates

تعديل: ولكن صحيح، إذا كنت تستخدم نظام تشغيل قديم جدًا، فلديك بعض العمل للقيام به، لتثبيت discourse في نظام تشغيل جديد واستعادة النسخة الاحتياطية الخاصة بك، وكذلك للقيام بجميع الأشياء الإضافية التي قد تكون مطلوبة لوضعك المحدد.

إذا كان خادمك يقوم بأشياء أكثر من مجرد تشغيل discourse، فهذه تعقيدات إضافية. قد تحتاج إلى خبرة محلية.

3 إعجابات

لدي فشل مماثل مع جواهر روبي وما إلى ذلك.
لقد كان تثبيتًا جديدًا على خادم جديد.

شكراً لكم جميعاً على المساعدة، سأجرب اقتراحاتكم واحداً تلو الآخر لحل المشكلة. إذا كان لدي أي ملاحظات (جيدة أو سيئة)، فسأقوم بنشرها مرة أخرى في المنتدى. شكراً جزيلاً مرة أخرى!

إعجاب واحد (1)

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

root@my_server:/var/www/discourse# discourse restore my_server-2023-06-20-033008-v20210922064213.tar.gz
Starting restore: my_server-2023-06-20-033008-v20210922064213.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-06-29-113408 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:137:in `exec': Failed to decompress archive.

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:171:in `execute_command'
/var/www/discourse/lib/discourse.rb:137:in `exec'
/var/www/discourse/lib/discourse.rb:33:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-06-29-113408' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

ماذا يجب أن أفعل الآن؟

هناك خطأ ما في ملف النسخ الاحتياطي الخاص بك. قد يكون مجرد ملف مبتور.

إعجاب واحد (1)