نقل منتدى XenForo إلى Discourse

تمكنت بصعوبة من نقل مجتمعي الحالي المبني على XenForo إلى Discourse، لذا فكرت في مشاركة تجربتي هنا لمساعدة أي شخص يحاول فعل الشيء نفسه. ضع في اعتبارك أنني لا أعرف ما أفعله، لذا قد تكون بعض استنتاجاتي غير صحيحة. تمكنت من إكمال الاستيراد إلى Discourse مع خسارة حوالي 20٪ من المرفقات. لا يمكنني حقًا تفسير السبب، لكن المشكلة يبدو أنها تؤثر فقط على آخر 2-3 سنوات من المشاركات في منتداي، بينما كان كل ما قبل ذلك معدل استيراد ناجح بنسبة تزيد عن 95٪. تخميني الوحيد هو أن الأمر يتعلق بالانتقال من XF 1.x إلى XF 2.x.

يجب على أي شخص يحاول القيام بذلك أن يعرف أن هذا البرنامج النصي يحتاج إلى الكثير من التحديثات للعمل مع XF 2.x. على وجه التحديد، لا تحتوي الأسطر 375-378 على جداول قاعدة البيانات الصحيحة لاستيراد المرفقات من Xenforo Media Gallery. لقد تغلبت على ذلك عن طريق فصل XFMG عن المنتدى وإلغاء تثبيته، نظرًا لأنني كنت أستخدم XFMG فقط لنسخ المرفقات من المنتدى على أي حال.

إذا كنت فضوليًا، فإن السطر 376 يشير إلى الجدول xengallery_media، وهو بوضوح إشارة إلى XFMG 1.x، حيث تم تغيير هذا الجدول إلى xf_mg_media_item في XFMG 2.x. الباقي لا يمكنني مطابقته وأشك في أن بعض التعليمات البرمجية الإضافية مطلوبة لمطابقة معرفات المرفقات مع المشاركات.

انتهى بي الأمر بالتعليق على السطر 314: s = process_xf_attachments(:gallery, s)

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

بعد ذلك، اتبعت منشور @Jack51 في هذا الموضوع:

مع التعديلات التالية:

تحتاج الخطوة السادسة إلى تحديث إصدار mariadb. قم بتغيير mariadb-server-10.3 إلى mariadb-server-10.5

يجب أن تكون الخطوة السابعة service mariadb start بدلاً من service mysql start.

لقد قمت بتغيير

frozen_string_literal: true

إلى

frozen_string_literal: false

نظرًا لأنني حصلت على نفس الخطأ الذي ذكره شخص آخر في هذا الموضوع.

يبدو أنه كان هناك الكثير من الارتباك في هذا الموضوع حول مكان وضع المرفقات حتى يتمكن البرنامج النصي من رؤيتها، واعترف بأنني واجهت بعض الصعوبة في هذا أيضًا. بالنسبة للأشخاص الجدد تمامًا على docker (مثلي)، سيكون من المفيد للغاية الإشارة إلى أنه بينما تعد dockers في الأساس آلة افتراضية تعمل على خادمك (لذا فأنت تتعامل مع نظامي تشغيل / نظامي ملفات مختلفين)، هناك مساحة مشتركة لنقل الملفات:

/var/discourse/shared/standalone/tmp

يقع هذا الدليل على جهازك المضيف، وستظهر الملفات الموضوعة هناك في:

/shared/tmp

عندما تدخل حاوية docker. لذا، بافتراض أنك تحتفظ بنفس بنية الملفات / المجلدات من xenforo، فستقوم بنسخ المجلدات:

internal_data/attachments

إلى

/var/discourse/shared/standalone/tmp

على جهازك المضيف، وسيظهر هذا المجلد في /shared/tmp بعد الدخول إلى حاوية docker الخاصة بك.

بعد ذلك، عند تحرير البرنامج النصي xenforo.rb، قم بتغيير:

ATTACHMENT_DIR = '/tmp/attachments'

إلى

ATTACHMENT_DIR = '/shared/tmp/internal_data/attachments'

وسيكون لديك المرفقات في الموقع الصحيح. تجدر الإشارة إلى أن xenforo لديه أيضًا مجلد data/attachments، ولكنه مليء بملفات .jpg بدلاً من ملفات .data التي تبحث عنها. رأيت شخصًا ارتكب هذا الخطأ سابقًا في هذا الموضوع لذا اعتقدت أنه يستحق الإشارة إليه.

أيضًا، حصلت على خطأ في الأذونات من البرنامج النصي، لذا قد تحتاج إلى chmod الدليل:

sudo chmod a+rw -R /shared/tmp/internal_data/

أعتقد أن أكبر دليل على أن البرنامج النصي لا يلتقط المرفقات الخاصة بك هو أنه سيكون هادئًا بشكل غريب بينما يجب أن يكون بدلاً من ذلك يخرج الخطأ العرضي:

لذا، إذا استمر الاستيراد لعدة ساعات دون إدراج خطأ واحد، فمن المحتمل أنه لا يلتقط المرفقات.

هذا كل ما لدي. لا تفهموني خطأ، أنا سعيد بوجود هذا البرنامج النصي على الإطلاق، فمعدل نجاح 80٪ أفضل من لا شيء (كان لدي معدل نجاح مماثل عند الانتقال من vBulletin إلى Xenforo في عام 2009)، وأنا متحمس للعمل مع منصة Discourse. نأمل أن يساعد هذا المنشور بعض الأشخاص وربما في يوم من الأيام سيقوم شخص يتمتع بمهارات أفضل مني بتحديث هذا البرنامج النصي ليعمل بشكل أفضل قليلاً.

4 إعجابات