وظائف الإدارة

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

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

قد تحاول الدخول في الوضع الآمن. قد يكون من المفيد أيضًا إجراء ترقية عبر سطر الأوامر.

3 إعجابات

تحديث: لقد قمت بتهيئة كاملة، وتدمير، وبدء تشغيل بإعداد حاويتين، والآن تم تحديث أرقام الإصدارات المبلغ عنها، وأصبحت واجهة المستخدم الإدارية تعرض مرة أخرى.

يبقى باقي المنشور للأجيال القادمة.


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

سجلات وحدة تحكم المتصفح

بالنظر إلى سجلات وحدة تحكم المتصفح، أرى أخطاء مثل:

[خطأ] خطأ: VM BUG: يجب تعيين الهدف قبل محاولة القفز
vendor.xxxxx-xxxx.js
رفض وعد غير معالج: خطأ: تعذر العثور على الوحدة `discourse/lib/decorators` المستوردة من `discourse/plugins/docker_manager/discourse/routes/update`
مكدس الخطأ
[خطأ] خطأ: VM BUG: يجب تعيين الهدف قبل محاولة القفز

	ب (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:131956)
	تقييم (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:69428)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	تنفيذ (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	إعادة العرض (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	استدعاء (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	تدفق (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	تدفق (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	نهاية (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:156653)
	_runExpiredTimers (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:160801)
[خطأ] رفض وعد غير معالج: خطأ: تعذر العثور على الوحدة `discourse/lib/decorators` المستوردة من `discourse/plugins/docker_manager/discourse/routes/update`
	(وظيفة مجهولة) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1310)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1311)
	(وظيفة مجهولة) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:3065)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1375)
	requireModule (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:599)
	_extractDefaultExport (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:269780)
	resolveOther (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266326)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266888)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262092)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262185)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262275)
	c (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:260192)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:258815)
	getRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:56849)
	fetchRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:267571)
	_getQPMeta (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63399)
	_hydrateUnsuppliedQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:64113)
	_prepareQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63271)
	normaliseQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38898)
	_generateURL (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38990)
	eA (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:202925)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49065)
	X (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:140358)
	T (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49044)
	eM (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:80191)
	تدفق (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:79868)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:70930)
	تقييم (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:65312)
	evaluateSyscall (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111047)
	evaluateInner (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110609)
	evaluateOuter (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110528)
	next (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121496)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121359)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:112232)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:114799)
	throw (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111583)
	تقييم (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:68993)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	تنفيذ (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	إعادة العرض (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	استدعاء (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	تدفق (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	تدفق (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	(وظيفة مجهولة) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:155980)

عملية الترقية (حاويتان)

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

بعد تحديث مدير Docker، بدأت في مواجهة المشكلة، لذلك قمت بتسجيل الدخول إلى الجهاز عبر SSH وقمت بترقية يدوية (حاويتان) لـ web_only فقط:

cd /var/discourse
git pull
./launcher bootstrap web_only
./launcher stop web_only && ./launcher start web_only
           ^^^^^^
    ⚠️ هذا خطأ! استخدم destroy كما هو موضح أدناه. ⚠️

ومن المثير للاهتمام، أن المسار /about.json لا يزال يظهر أنني أقوم بتشغيل 3.4.0.beta4-dev وهو ما اعتقدت أنني بدأت منه، حيث كان البريد الإلكتروني الأصلي لترقية من 3.4.0.beta4-dev إلى 3.5.0.beta1.

لقد قمت بالتحقق مرة أخرى من سجل git ويبدو أنه على الأقل discourse_docker على أحدث التزام 3715498fc188d60c0b579443383c4e973cf26f59 في وقت كتابة هذا.

الوضع الآمن يعمل

لم أكن على علم بالوضع الآمن، ولكن يبدو أن المشكلة لا تحدث إذا قمت بتعطيل جميع الإضافات من جانب العميل.

تعطيل تخصيصات الإضافات غير الرسمية من جانب العميل فقط لا يحل المشكلة، حيث جربت كل تركيبة لتضييق نطاقها.

الخيار النتيجة
no_unofficial_plugins :cross_mark:
no_plugins :white_check_mark:
no_themes :cross_mark:

تعطيل docker_manager لا يساعد

حاولت التعليق على إضافة docker_manager ضمن hooks/after_code، ثم إعادة بناء حاوية web_only + إيقاف وتشغيل، ولكن رسالة الخطأ من جانب العميل المذكورة أعلاه لا تزال قائمة.

إنه يقدم رسالة خطأ أخرى، وهي أن زيارة الصفحة الإدارية لـ this.class.create ليست وظيفة، ولكن ربما يكون هذا متوقعًا مع تعطيل إضافة docker_manager الأساسية لهذا الاختبار:

loader.js:247 Uncaught (in promise) Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
    at loader.js:247:1
    at h (loader.js:258:1)
    at u.findDeps (loader.js:168:1)
    at h (loader.js:262:1)
    at requireModule (loader.js:24:1)
    at f.get (composer.js:874:1)
    at push.98673._extractDefaultExport (composer.js:874:1)
    at push.98673.resolveOther (composer.js:874:1)
    at push.98673.resolve (composer.js:874:1)
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

index.js:78 Uncaught TypeError: this.class.create is not a function
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

مرة أخرى، استخدام الوضع الآمن مع no_plugins يتجاوز المشكلة مؤقتًا.

كنت أعتمد على الذاكرة في الأوامر الخاصة بتحديث الحاوية الدنيا بأقل وقت تعطل، ويبدو أن ذاكرتي لا يمكن الوثوق بها! :flushed_face:

بعد استخدام الأمر الصحيح لـ تدمير الحاوية الجديدة ثم تشغيلها بعد التمهيد، أرى أن الإصدارات محدثة وأن واجهة المسؤول تعمل كما هو متوقع.

هل قمت بترقية حاوية البيانات؟ يجب عليك ذلك، ولكن أولاً، انظر تحديث PostgreSQL 15. أو، إذا كنت تكره القراءة حقًا، فما عليك سوى تشغيل ./laumcher rebuild data مرتين ويجب أن تكون على ما يرام. بعد ذلك، ستحتاج إلى حذف حاوية الويب وبدئها (وإلا فستبحث عن حاوية البيانات القديمة التي ستكون قد حذفتها).

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

كنت أفكر بالفعل في إعداد خادم جديد أقوى، لذلك كنت أبحث فقط لمعرفة ما إذا كان بإمكاني عمل نسخة احتياطية من Discourse 3.5 + PG13 ثم استعادتها على Discourse 3.5 + PG15 على مضيف مختلف.

لا أحب فترات التوقف الممتدة، وفي الماضي قمت مؤقتًا بتعيين المجتمع للقراءة فقط وقمت بعمل نسخة احتياطية/استعادة عبر مثيلات الخادم وكانت فترة توقف صفرية تقريبًا (باستثناء فترة القراءة فقط بالطبع)… لذلك اعتقدت أنني سأبحث/أختبر لمعرفة ما إذا كان ذلك يعمل عبر إصدارات PG.

بخلاف ذلك، سأتحمل العبء وأقوم بترقية PG15 أولاً قبل ترحيل الخادم. :slight_smile:

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

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

إعجابَين (2)

لدي نفس المشكلة بالضبط. شكراً للمساعدة. سيقرأك مسؤول الويب الخاص بي بنجامين.
موريل

هذا ما حدث لي. كان تشغيل خادم جديد واستعادة النسخة الاحتياطية هو الخيار الوحيد.
هو واضح. ولا تضيع وقتك في التصحيح. هذه النصيحة ستمكنك من البدء بسرعة.

لقد قمت بعمل النسخة الاحتياطية والاستعادة وعملت كما هو متوقع.


للرجوع إليها في حال واجه أي شخص مشكلة مماثلة…

واجهت مشكلة في البداية حيث يبدو أن عملية الاستعادة تستدعي uploads:migrate_to_s3 داخليًا وكانت عالقة.

[2025-02-26 00:24:16] يتم ترحيل قاعدة البيانات...
[2025-02-26 00:24:24]
[2025-02-26 00:24:24] إعادة الاتصال بقاعدة البيانات...
[2025-02-26 00:24:24] إعادة تحميل إعدادات الموقع...
[2025-02-26 00:24:24] تعطيل رسائل البريد الإلكتروني الصادرة للمستخدمين غير الموظفين...
[2025-02-26 00:24:24] تعطيل وضع القراءة فقط...
[2025-02-26 00:24:24] مسح ذاكرة التخزين المؤقت للفئات...
[2025-02-26 00:24:24] إعادة تحميل الترجمات...
[2025-02-26 00:24:24] إعادة تعيين التحميلات...
[2025-02-26 00:24:24] استعادة التحميلات، قد يستغرق هذا بعض الوقت...
[2025-02-26 00:25:09] استثناء: لم يتم ترحيل 12 من أصل 12208 تحميلات إلى S3. فشل ترحيل S3 لقاعدة البيانات 'default'.
[2025-02-26 00:25:09] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:73:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:354:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:167:in `restore_uploads'
/var/www/discourse/lib/backup_restore/restorer.rb:71:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-02-26 00:25:09] محاولة التراجع...
[2025-02-26 00:25:09] التراجع...
[2025-02-26 00:25:10] تنظيف الأشياء...

لقد قمت بتشغيل بعض استعلامات SQL في حاوية البيانات لمعرفة ما إذا كان بإمكاني اكتشاف ما كان يحدث.

./launcher enter data
sudo -u postgres psql discourse
SELECT url FROM uploads WHERE url NOT LIKE '%s3%';

أعاد هذا فقط بعض العناصر المضمنة القياسية من Discourse، لذا جربت العكس:

SELECT url from uploads where url LIKE '%s3%' limit 10;

أعطاني هذا مجموعة من التطابقات بالتنسيق:

  • //{my-bucket-name}.s3.dualstack.us-east-2.amazonaws.com/original/2X/5/{image-id}.jpeg

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

  • //{my-bucket-name}.s3-us-east-2.amazonaws.com/{file-path}.jpeg

عندما تحققت من وجود تلك الملفات في الحاوية الفعلية، لم تكن موجودة، لذلك انتهى بي الأمر بحذفها باستخدام شيء مثل:

DELETE FROM uploads where url LIKE '%{my-bucket-name}.s3-us-east-2.amazonaws.com%';

بعد ذلك، نجحت النسخة الاحتياطية والاستعادة كما هو متوقع!

ملاحظة: لا تنسَ إعادة تمكين رسائل البريد الإلكتروني بعد استعادة النسخة الاحتياطية!

/admin/site_settings/category/all_results?filter=disable_email
4 إعجابات

تم تقسيم منشورين إلى موضوع جديد: مشكلة في تحديث موقع عمره 10 سنوات