في هذا البرنامج التعليمي، سنتعلم كيفية نقل منتدى MyBB إلى منصة
باستخدام سكريبت الاستيراد الرسمي MyBB Importer.
ما الذي يمكن نقله
- التصنيفات
- التصنيف الجذري => التصنيف الجذري
- التصنيف الفرعي => التصنيف الفرعي
- المنتدى الجذري => التصنيف الفرعي
- المنتدى الفرعي => التصنيف الفرعي
- المواضيع والردود => المواضيع والمنشورات
- المستخدمين
- اسم المستخدم
- البريد الإلكتروني
- حالة الامتيازات
- حالة الانضمام
- إعادة التوجيه
خطتنا بسيطة للغاية:
- إعداد بيئة التطوير المحلية (DEV).
- تصدير قاعدة بيانات الإنتاج.
- استيراد قاعدة بيانات الإنتاج إلى Discourse.
- تشغيل سكريبت استيراد MyBB.
فلنبدأ ![]()
إعداد بيئة التطوير المحلية
أولاً، يجب عليك اتباع أحد هذه الأدلة لتثبيت منصة Discourse نفسها. راجع هذا الدليل إذا واجهت أي مشاكل.
قم بتثبيت خادم قاعدة بيانات MySQL؛
MacOS:
$ brew install mysql@5.7
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
تحقق من حالة الخدمة:
$ brew services list
يجب أن ترى شيئًا مثل هذا:
mysql@5.7 started
وإلا، قم بتشغيل الأمر التالي وحاول مرة أخرى:
$ brew services start mysql@5.7
Ubuntu 18.04:
$ sudo apt update
$ sudo apt install mysql-server -y
بعد الانتهاء من تثبيت MySQL، تحقق من حالته:
$ systemctl status mysql.service
إذا لم يكن قيد التشغيل، قم بتشغيل الأمر التالي:
$ sudo systemctl start mysql
بالنسبة لـ Windows، يمكنك اتباع دليل التثبيت الرسمي.
سنطلق على هذه البيئة اسم: خادم Discourse.
تصدير قاعدة بيانات الإنتاج
قم بتصدير/نسخ قاعدة بيانات الإنتاج احتياطيًا (من خادم MyBB الإنتاجي) بتشغيل الأمر التالي:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
- انسخ هذا الملف المصدّر إلى خادم Discourse.
يمكنك استخدام
scpأوrsyncلنسخ قاعدة البيانات.
استيراد قاعدة بيانات الإنتاج إلى Discourse
على خادم Discourse، قم بإنشاء قاعدة بيانات:
$ mysql -u root
إذا كان لديك مستخدم قاعدة بيانات بكلمة مرور، فيجب عليك استخدام:
mysql -u root -pثم أدخل كلمة المرور الخاصة بك.
mysql> CREATE DATABASE mybb;
تأكد من إنشاء قاعدة البيانات بنجاح بتشغيل الأمر التالي:
mysql> SHOW DATABASES;
يجب أن ترى شيئًا مثل:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| mybb |
| sys |
+--------------------+
قاعدة بيانات mybb فارغة حتى الآن. خطوتنا التالية هي استيراد قاعدة بيانات الإنتاج إليها.
$ mysql -u root mybb < mybb_dump.sql
لاحقًا، سنحتاج إلى بادئة الجدول. لذا، بينما نحن هنا، لنحصل عليها.
$ mysql -u root
mysql> USE mybb;
mysql> SHOW TABLES;
سترى شيئًا مثل هذا:
+--------------------------+
| Tables_in_mybb |
+--------------------------+
| mybb_adminlog |
| mybb_adminoptions |
| mybb_adminsessions |
| mybb_adminviews |
| mybb_announcements |
| mybb_attachments |
| mybb_attachtypes |
| ...بقية الجداول....|
+--------------------------+
بادئة الجدول الخاصة بنا هي mybb_ كما يظهر في المخرجات.
تشغيل سكريبت استيراد MyBB
- دعنا نبدأ بتثبيت تبعيات السكريبت. من خادم Discourse:
$ cd ~/discourse
$ echo "gem 'mysql2', require: false" >> Gemfile
$ bundle install
بعد ذلك، يجب عليك تكوين السكريبت ليعمل بشكل صحيح. انسخ والصق ما يلي في سطر الأوامر (قم بتغيير القيم إذا لزم الأمر):
export DB_HOST="localhost"
export DB_NAME="mybb"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="mybb_"
لديك خيار آخر لتكوين السكريبت. افتح script/import_scripts/mybb.rb في أي محرر نصوص تفضله وقم بتغيير القيم داخل علامات التنصيص المزدوجة لتناسب احتياجاتك:
DB_HOST ||= ENV['DB_HOST'] || "localhost"
DB_NAME ||= ENV['DB_NAME'] || "mybb"
DB_PW ||= ENV['DB_PW'] || ""
DB_USER ||= ENV['DB_USER'] || "root"
TABLE_PREFIX ||= ENV['TABLE_PREFIX'] || "mybb_"
شغّل السكريبت مع مثيل Discourse نظيف:
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ bundle exec ruby script/import_scripts/mybb.rb
سيتصل السكريبت بخادم MySQL وينقل قاعدة بيانات MyBB إلى قاعدة بيانات Discourse.
بعد انتهاء السكريبت، قم بتشغيل مثيل Discourse بتنفيذ الأمر التالي:
$ bundle exec rails server
بعد ذلك، قم بتشغيل Sidekiq (معالج الوظائف الخلفية) لمعالجة البيانات المنقولة:
$ bundle exec sidekiq
يمكنك مراقبة تقدم Sidekiq في
http://localhost:3000/sidekiq/queues.
قم بإعداد خادم Discourse الإنتاجي الخاص بك باتباع هذا الدليل.
قم بنسخ احتياطي لمنصة Discourse (خادم Discourse المحلي) وقم برفعها إلى خادم Discourse الإنتاجي الخاص بك باتباع هذا الدليل.
![]()
إذا كان لديك أي أسئلة حول العملية، فسأكون سعيدًا بالمساعدة.
نقل سعيد ![]()
