ترحيل منتدى myBB إلى Discourse باستخدام Kubuntu في جهاز افتراضي

تلخيص الرحلة (أطول بكثير من هذا المنشور) :wink: :
ملاحظة: لقد استخدمت توزيعة Kubuntu تعمل في جهاز افتراضي لهذه العملية، لذا يرجى الأخذ في الاعتبار أنها قد لا تكون هي نفسها على أنظمة تشغيل مختلفة أو حتى توزيعات مختلفة.

0. تثبيت بيئة تطوير Discourse

باتباع هذا المنشور وتشغيل هذا السكربت المرتبط في المنشور باستخدام

`bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)`

كما هو موضح هناك بالإضافة إلى استنساخ المصادر

git clone https://github.com/discourse/discourse.git ~/discourse

1. إعداد قاعدة بيانات MySQL

احصل على نسخة احتياطية من قاعدة بيانات mybb الأصلية كما هو موضح في أعلى الموضوع:

$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql

وانسخها/انقلها إلى بيئة التطوير التي تم إعدادها حديثًا.

تثبيت خادم MySQL

$ sudo apt-get install mysql-server

تم تغيير المصادقة لـ mysql في الإصدارات الأحدث. يجب أن تكون الجذر على المضيف إذا كنت تريد أن تكون الجذر في mysql هذه الأيام، لذا

$ sudo mysql

بدلاً من

$mysql -u root

بالطبع، يجب أن تكون “مديرًا” (مسؤولًا) أولاً

$ sudo mysql
mysql> CREATE DATABASE mybb;
mysql> SHOW DATABASES;
mysql> CREATE USER 'nonrootuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mybb.* TO 'nonrootuser'@'localhost';
mysql> quit
$ mysql -unonrootuser -ppassword mybb < mybb_dump.sql

<هنا تحصل على تحذير بشأن تقديم كلمة المرور في سطر الأوامر ليس شيئًا ذكيًا لفعله>

$ sudo mysql
mysql> USE mybb;
mysql> SHOW TABLES;

<هنا تحقق مما إذا كانت جميع الجداول موجودة - انظر المنشور الأصلي>

mysql> quit

2. تثبيت Ruby gems

التحقق من Gemfile في المصادر الحالية يكشف أن

$ echo "gem 'mysql2', require: false" >> Gemfile

ليس ضروريًا حقًا. يكفي تعيين متغير البيئة IMPORT إلى 1.
ما هو مطلوب هو ملفات التطوير لعملاء MySQL، وهذا ما يتعلق به السطر الأول أدناه

$ sudo apt-get install libmysqlclient-dev
$ cd ~/discourse
$ IMPORT=1 bundle install

2. إعداد Discourse (قاعدة بيانات PostgreSQL)

$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ export DB_PW="password"
$ export DB_USER="nonrootuser"

3. تنفيذ الاستيراد الفعلي

السطر التالي يصلح استدعاء طريقة مهملة منذ فترة طويلة وتمت إزالتها بالفعل حاليًا في سكربت الاستيراد mybb.rb، والذي لا يزال موجودًا في وقت كتابة هذا التقرير ولن يغير شيئًا إذا تم إصلاحه بالفعل

$ sed -i.original 's/File.exists?/File.exist?/' script/import_scripts/mybb.rb

الآن تحقق مما إذا كان Redis لا يزال قيد التشغيل. سكربت تثبيت Rails يبدأ تشغيله ولكنه لا يمكّنه كخدمة دائمة لذلك لا يبقى بعد إعادة التشغيل، الأعطال، أي شيء، إلخ.

$ ps -aux |grep redis
silverdr    2808  0.3  0.3  89972 14512 ?        Ssl  05:25   2:04 redis-server *:6379
[…]

إذا لم تر شيئًا مثل السطر أعلاه، قم بتشغيل

$ redis-server --daemonize yes

وهو نفس الأمر الذي استخدمه سكربت تثبيت Rails أعلاه في المرة الأولى عند التثبيت.

أخيرًا :pray: و

$ IMPORT=1 bundle exec ruby script/import_scripts/mybb.rb

إذا لم يتوقف السكربت في هذا الوقت مع YAE (خطأ آخر) فقد حان الوقت لفتح تلك الزجاجة :champagne:

بعض الأشياء المتبقية

  • حسنًا - الجزء المفقود الواضح الوحيد هو كلمات مرور المستخدمين. على ما يبدو، على الرغم من أن كلا التطبيقين يخزنان التجزئة والملح، بالنظر إلى طول هذه التجزئات، فإن “mybb” يستخدم خوارزمية تجزئة أقدم. لذلك، هذا مفهوم وليس مشكلة كبيرة. يجب أن يكون الجميع قادرين على إعادة تعيين كلمة المرور الخاصة بهم في المرة الأولى.
  • بعض محتوى bbcode لا يتم تحويله. لدي على سبيل المثال مشكلة مع كتل التعليمات البرمجية، والتي تحتوي على بعض العلامات حولها تضبط خط Courier أحادي المسافة وما إلى ذلك. لم يعد لدي القدرة على محاولة أتمتة هذا الأمر بشكل أكبر. إذا تمكنت من فعل شيء حيال ذلك، فيرجى إخبارنا / إخبارنا هنا! :man_bowing:
إعجابَين (2)