ستعرض لك هذه الدليل كيفية استخدام NodeBB Importer لترحيل منتدى NodeBB إلى منصة Discourse. إذا كان منتدى NodeBB الخاص بك يستخدم MongoDB كقاعدة بيانات خلفية، فاتبع هذا الدليل. لا تقلق، إنها عملية سهلة. لنبدأ.
الخطة
- إعداد بيئة التطوير.
- تصدير قاعدة البيانات من بيئة الإنتاج.
- استيراد قاعدة بيانات الإنتاج إلى مثيل Discourse.
- تشغيل سكريبت الاستيراد.
ما هي البيانات التي يمكن ترحيلها؟
- المجموعات
- التصنيفات
- التصنيف الجذري =\u003e التصنيف الجذري
- التصنيف الفرعي والتصنيف الفرعي-الفرعي =\u003e التصنيف الفرعي
- المرفقات
- المواضيع والمنشورات
- الموضوع المثبت =\u003e الموضوع المثبت
- مشاهدات المواضيع
- سيتم ترحيل جميع الأنماط بشكل صحيح مع الإشارات والرموز التعبيرية والمرفقات.
- المستخدمين (مع السمات التالية)
- الصور الرمزية (صورة الملف الشخصي)
- خلفية الملف الشخصي
- حالة الحظر
- الاسم
- اسم المستخدم
- البريد الإلكتروني
- السيرة الذاتية
- المشرف
- الموقع الإلكتروني
- الموقع الجغرافي
- حالة الانضمام
- المجموعة
إعداد بيئة التطوير المحلية
قم بإعداد بيئة التطوير الخاصة بك باتباع أحد هذه الأدلة:
من الآن فصاعدًا، سأشير إلى هذه البيئة باسم خادم Discourse.
يرجى استخدام هذا الدليل إذا واجهت أي مشكلة في إعداد Discourse.
تصدير نسخة احتياطية من قاعدة بيانات الإنتاج (من خادم NodeBB):
أوقف تشغيل المنتدى. هذا موصى به من قبل NodeBB.
$ cd /path_to_nodebb
$ ./nodebb stop
يجب عليك أيضًا إيقاف تشغيل Redis:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
قاعدة بيانات المنتدى الخاصة بك موجودة في ملف واحد. يتم إنشاء هذا الملف تلقائيًا بشكل دوري بواسطة Redis. عادةً ما يكون هذا الملف موجودًا في /var/lib/redis/dump.rdb. أيضًا، يمكنك الحصول على المسار من واجهة سطر أوامر Redis (Redis CLI):
$ redis-cli
127.0.0.1:6379\u003e config get dir
# "/var/lib/redis"
127.0.0.1:6379\u003e exit
$ ls -la /var/lib/redis
# -rw-rw-r-- 1 redis redis 2664346 Aug 4 16:24 dump.rdb
إذا كان خادم Redis الخاص بك يتطلب كلمة مرور، استخدم
AUTH YOUR_PASSWORD.
إذا لم تجد ملف قاعدة البيانات في المسار المتوقع لسبب ما، يمكنك إنشاؤه يدويًا بتشغيل
SAVEداخل واجهة سطر أوامر Redis.
الآن تحتاج إلى نسخ مرفقات المنتدى:
$ cd /path_to_nodebb_root_folder/
$ tar -czf ./uploads.tar.gz ./public/uploads
الآن بعد أن حصلت على قاعدة بياناتك وأصول المنتدى، تحتاج إلى نسخها إلى خادم Discourse.
استيراد قاعدة البيانات
إذا اتبعت تعليمات تثبيت Discourse، فيجب أن يكون لديك خادم Redis مثبتًا على خادم Discourse:
$ redis-server -v
# Redis server v=5.0.2...
الآن تحتاج إلى إيقاف تشغيل خادم Redis (مهم).
بناءً على Linux:
$ sudo service redis-server stop
$ sudo service redis-server status
# redis-server is not running
Mac OS:
$ brew services stop redis
$ brew services list
# redis stopped
ما يجب عليك فعله الآن هو نسخ ملف قاعدة بيانات المنتدى إلى مسار قاعدة بيانات Redis المحلي. يحتاج السكريبت إلى الاتصال بخادم Redis وترحيل قاعدة بيانات NodeBB إلى قاعدة بيانات Discourse. تفترض هذه الخطوة أنه لا يوجد شيء مهم في قاعدة بيانات Redis الخاصة بك، وإلا فيجب عليك إجراء نسخة احتياطية.
$ redis-cli
127.0.0.1:6379\u003e config get dir
# "/var/lib/redis"
تحقق مما إذا كانت هناك أي ملفات، وقم بتدوين ملاحظات حول المستخدم الحالي وإذنات ملف dump.rdb:
$ ls -la /var/lib/redis
انسخ قاعدة بيانات NodeBB (استبدل إذا كان هناك ملف موجود):
$ cp dump.rdb /var/lib/redis
لاحقًا، عند محاولة الاتصال بخادم Redis، قد تحصل على Fatal error loading the DB: Permission denied، لذلك يجب عليك تغيير إذنات ملف dump.rdb:
# استبدل المستخدم بنفس المستخدم الذي دوّنته سابقًا.
$ sudo chown redis:redis /var/lib/redis/dump.rdb
$ sudo chmod 660 /var/lib/redis/dump.rdb
الآن تحتاج إلى فك ضغط ملف uploads.tar.gz إلى أي مسار تختاره:
$ tar xvzf uploads.tar.gz
تشغيل سكريبت الاستيراد
الآن بعد أن أصبحت قاعدة البيانات في مكانها، نحن مستعدون لتشغيل سكريبت الاستيراد. قبل ذلك، نحتاج إلى تعديل بعض الإعدادات. ربما تحتاج فقط إلى تغيير السطرين التاليين.
هذا هو مسار مجلد المرفقات في NodeBB:
ATTACHMENT_DIR = '/absolute_path/uploads'
هذا هو اسم قاعدة البيانات في Redis. الافتراضي هو 0:
db: 0
شغّل السكريبت مع Discourse نظيف:
$ cd ~/discourse
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
سيتم الاتصال بسكريبت الاستيراد بخادم Redis وترحيل كل شيء إلى قاعدة بيانات PostgreSQL الخاصة بـ Discourse.
بعد انتهاء السكريبت، ابدأ منصة Discourse:
$ bundle exec rails server
ابدأ Sidekiq لمعالجة البيانات المرحّلة:
$ bundle exec sidekiq
يمكنك مراقبة التقدم في http://localhost:3000/sidekiq/queues.
قم بنسخ احتياطي لـ Discourse وقم برفعه إلى خادم Discourse الإنتاجي باتباع هذا الدليل.
بهذا، يجب أن تكون قد نجحت في إتمام الترحيل الكامل من NodeBB إلى Discourse ![]()
يرجى، إذا كان لديك أي أسئلة، فسأكون سعيدًا للمساعدة ![]()