رد: ترحيل منتدى phpBB3 إلى Discourse

مرحباً،

هل الإصدار phpBB3.3.3 مدعوم أم أنه الإصدار 3.3.0 فقط؟ عند تنفيذ الخطوة 1.5:

/var/discourse/launcher enter import

من ترحيل منتدى phpBB3 إلى Discourse - التوثيق / مسؤول النظام - Discourse Meta
أتلقى (جربت مرتين بالفعل) الرد:

x86_64 arch detected.
Error response from daemon: No such container: import

إذا استخدمت
/var/discourse/launcher enter import.yml

فالرد هو:

x86_64 arch detected.
ERROR: containers/import.yml.yml does not exist or is not readable.
Available configs ( app, import )

هل هناك أي فرصة لنجاح هذا؟

شكراً

أهلاً بك! :wave:
أفترض أنك اتبعت الدليل من البداية؛ هل ملف /var/discourse/containers/import.yml موجود بالفعل؟
يبدو أنه تم حذف ملف الإعدادات. :thinking:

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

نعم، الأمر مشابه لما ورد في الرسالة أعلاه، كلا الملفين app.yml و import.yml موجودان في دليل “containers”.

إذا فهمت جيدًا، لم تواجه مشكلة في اتباع الخطوات السابقة، وإنشاء/تعديل import.yml بجوار app.yml، وإعادة بناء حاوية import، والآن لا يمكنك حتى الدخول إليها. هل هذا صحيح؟ هذا غريب بالتأكيد!

ماذا تُرجع هذه الأمر؟ ls -l /var/discourse/containers

لا يزال الأمر كما هو: app.yml و import.yml (بالإضافة إلى ملف “bak” لـ app.yml).

قد تكون هناك “مشاكل” حيث كنت أحاول تثبيت هذا على Lightsail 1GB (والذي هو في البداية 940 وبعد تحديث Ubuntu يصبح “921MB”). استخدمت التثبيت الرسمي وما تم تثبيته كان شيئًا مثل 3.3.* بيتا-شيء (بينما يظهر Wiki 3.2 كأحدث إصدار مستقر). يستغرق التثبيت 1 ساعة و 15 دقيقة - 1 ساعة و 20 دقيقة مع 4 جيجابايت من مساحة التبديل. “launcher rebuild import” حوالي ساعتين.
هل يمكن أن يكون هناك شيء قد تم إنهاؤه بشكل غير صحيح بسبب حالة الذاكرة المنخفضة؟

بالمناسبة، هل ستكون ملفات النسخ الاحتياطي من إعداد 2 جيجابايت قابلة للقراءة في إعداد 1 جيجابايت؟

هل نجح الأمر؟ بعد إعادة البناء، يجب تشغيل الحاوية.
لا يمكنك الدخول إلى الحاوية إذا لم يتم تشغيلها (./launcher start import)

من المحتمل أن يكون هذا هو الحال. هناك العديد من المواضيع المتعلقة بانخفاض الذاكرة/التبديل وفشل إعادة البناء هنا – عادةً لا يوجد خيار سوى زيادة ذاكرة الوصول العشوائي/التبديل.
أنا لست خبيرًا هنا، ولكن آمل أن يتمكن شخص ما من تقديم رؤى أفضل لك.

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

يبدو أن ذاكرة الوصول العشوائي (RAM) تمثل مشكلة بالفعل. بالنسبة لجهاز Lightsail بسعة 2 جيجابايت/2 جيجابايت، كان التثبيت النظيف أسرع بحوالي 3.5-4 مرات، وكان إعادة بناء حاوية الاستيراد أسرع بحوالي 10 مرات (أو حتى أكثر).
ومع ذلك، أخشى أن نص الاستيراد البرمجي قد لا يعمل مع phpBB 3.3.3. على أي حال، حاولت مرتين بنفس النتيجة: تم استيراد كلمة واحدة فقط من اسم فئة واحدة (من حوالي 10 فئات) كـ “فئة” فارغة واحدة. تفريغ نص MySQL صغير جدًا بحجم 2.66 ميجابايت. جميع بادئات الجداول كما هو مطلوب. لا صور، لا رموز تعبيرية، إلخ.
بشكل عام، لا توجد منتديات، ولا فئات منتديات أو مشاركات، ولكن تم استيراد جميع المستخدمين (بضع مئات) بشكل صحيح مع إحصائياتهم.

يبدو أن phpBB 3.3.3 كان التحديث الذي غيّر شيئًا ما بشأن إصدار MySQL المستخدم، ولكن هذا ملف تفريغ هنا، لذلك لا ينبغي أن يهم في النهاية.
هل لديك أي أفكار أخرى يمكن التحقق منها؟

أوصي بـ 4 جيجابايت على الأقل من ذاكرة الوصول العشوائي.

هل هناك أي أخطاء؟ يبدو أن البرنامج النصي توقف بعد حصوله على فئة واحدة؟

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

هل تقصد 4 جيجابايت لفتح/قراءة/تحليل ملف نصي بحجم 2.6 ميجابايت؟ هل أنت مطور Discourse؟ يجب أن يكون البرنامج التنفيذي الثنائي لقراءة هذا التفريغ (استخراج جميع البيانات التي يستخدمها Discourse) وحفظه في أي شيء آخر حوالي 200 كيلوبايت مع مخزن مؤقت بحجم 100 كيلوبايت (دون الاهتمام بتضمين MariaDB بالكامل لهذا الإجراء البسيط).

أعتقد أن الأمر لا يتعلق بالذاكرة العشوائية (RAM). كانت الإجراءات سريعة وعرضت تقدم الاستيراد للجداول التي تم استيرادها. لم “تتوقف”. جدول المستخدمين موجود في نهاية التفريغ، بعد المواضيع وما إلى ذلك.

أردت القيام بذلك مرة أخرى، مع تجربة نسخ/لصق جدول المستخدمين هذا في الأعلى وتنفيذ نفس الخطوات من الدليل/الصفحة أعلاه (أيضًا مع تفريغ تم إنشاؤه بواسطة phpMyAdmin بدلاً من phpBB)، ولكن الآن ترفض Discourse بدء الإجراء في محاولة الاتصال عن بُعد على الرغم من عدم إضافة أي بيانات اتصال.

لقد أعدت بناء حاوية الاستيراد، ولكن ربما يجب حذف شيء ما أولاً؟

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

عندما تم تشغيل البرنامج النصي، هل قام بالعد عبر الفئات والمستخدمين والمواضيع والمنشورات؟

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

" بما أنك تقول إنه لم يتم استيراد أي شيء"

ليس بالضبط:
“تم استيراد جميع المستخدمين (بضع مئات) بشكل صحيح مع إحصائياتهم”

حاولت إعادة بناء الحاوية مرة أخرى. نفس الإعدادات. لم أغير أي شيء وبعد الخطوة:
import_phpbb3.sh # داخل حاوية Docker
يعرض البرنامج النصي الآن:
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:97:in `connect’: قاعدة بيانات غير معروفة ‘phpbb’ (Mysql2::Error)

ربما لا تزال هناك بعض الملفات المؤقتة التي تم استخدامها سابقًا لحذفها؟

لقد استخدمت في النهاية التفريغ من phpMyAdmin. هل هناك أي مثال (أو مواصفات أكثر تفصيلاً) لكيفية إنشاء أقسام التعيين في ملف settings.yml (للاستيراد)؟
جدولي php_forums يبدو كالتالي:

forum_id, MEDIUMINT(8) ...	parent_id, MEDIUMINT(8) ...
3	0
8	3
7	3
9	3
10	3
11	0
12	11
13	11
14	11
15	11
17	3

يبدو أنه بغض النظر عن المعرفات التي أستخدمها وما إذا كنت أحدد أيضًا قسم “new_categories: ”، فإن الرسالة التي تم إنشاؤها بواسطة حاوية الاستيراد تكون جيدة:
إنشاء فئات جديدة
11 / 11 (100.0%) [2803 عنصر/دقيقة] ن]
إنشاء فئات
11 / 11 (100.0%) [2704 عنصر/دقيقة]

ولكن ما يتم إنشاؤه هو فئتان رئيسيتان (كانتا “منتديات” في phpBB مع parent_id 0) وفئة فرعية فارغة في كل منهما. الإجراء يستورد جميع المشاركات ولكنها جميعًا “يتيمة”.

يبدو أن شيئًا ما قد تغير بالنسبة لإصدارك من phpbb3.

حسنًا، في الواقع، لقد اتخذت خطوة إلى الأمام في إصلاح خطئي الخاص: لقد وضعت تعليقات بأسلوب C/C++ في نهاية الأسطر في ملف settings.yml. هذا منع المنتديات الفرعية من “المعالجة” (على الرغم من عدم ظهور أي أخطاء).

لقد أضفت الفئات والفئات الفرعية كـ “جديدة” وربطت المعرفات القديمة.
لا تزال هناك جميع المشاركات غير المرفقة بأي فئة. هل يتم تخزين مثل هذه المواضيع في جدول Postgres واحد؟ كيف يمكن حذفها؟

لقد أضفت بعض الإصلاحات إلى phpbb_mysql.sql على الأقل للسماح للبرنامج النصي بإنشاء جميع الفئات الأصلية، لكن هذا لا يكفي.
عند معالجة المواضيع/المشاركات، توجد قائمة طويلة من النوع:

المنشور الأصلي [معرف ما] غير موجود. تخطي [معرف ما]

وبالطبع، لم يتم استيراد أي مشاركات.
أتساءل عما إذا كان بإمكان أي شخص تأكيد أن البرامج النصية الافتراضية لا تعمل مع جداول phpBB 3.3.3؟

في النهاية تمكنت من استخدام ملف التفريغ phpBB3.3.3 دون تعريف الفئات كجديدة ودون كل التعيينات في ملف settings.yml.

مع ملف التفريغ الأصلي phpBB_mysql.sql، يتوقف البرنامج النصي للترحيل عند خطوة تحميل الفئات ويعرض خطأ بشأن “جسم فئة فارغ”.
يحدث هذا إذا كان حقل “forum_desc” في جدول “phpbb_forums” للفئات الرئيسية (التي ليس لها فئات أصل).
بعد استيراد الفئة الأولى جزئيًا فقط، يبدو أن الباقي يصبح في حالة فوضى.
يبدو أن استخدام تثبيت جديد وإدخال بعض النصوص في حقول الجدول المذكورة أعلاه يحل هذه المشكلة.