You are currently viewing الدليل التفصيلي لإنشاء نظام  Moodle 4.0 على سيرفر ubuntu 22.4

مقدمة

خلال أعوام عملي في مجال التعليم الإلكتروني صادفت الكثير من المؤسسات التعليمية والتدريبية التي قامت بإنشاء نظام إدارة التعلّم Moodle الخاص بها بطرق غير فعّالة مثل التثبيت على سيرفرات الاستضافة المشتركة  (Shared Hosting) لتوفيرالتكاليف أو من خلال شركات استضافة توفر التثبيت السريع لهذا النظام (one click install) نتيجة لعدم الدراية الكافية بكيفية تثبيت وإدارة هذا النظام على سيرفر مناسب يستخدم نظام Linux. 

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

لهذا السبب يسعدني أن أقدم لكم في هذا المنشور طريقة إنشاء نظام Moodle 4.0 على سيرفر Linux يستخدم نظام ubuntu 22.4 بالخطوات التفصيلية مع تفسير لكل خطوة والبدائل المتاحة إن وُجدت.

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

الفئة المستهدفة من هذا المنشور

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

المهارات المعرفية المطلوبة

المتطلبات السابقة

  • إنشاء سيرفر بنظام التشغيل Linux بإصدار ubuntu 22.4 (متوافق مع الحدّ الأدنى المطلوب من المواصفات لتشغيل نظام Moodle) من إحدى شركات الاستضافة الموثوقة مثل (Digitalocean, Vultr, Hetzner)، لاحظ أنني أستخدم في هذا المنشور Droplet بأدنى المواصفات المتوفرة (لأنها لغايات التعلّم فقط)  من شركة Digitalocean.
  • حجز اسم نطاق Domain لإسم الموقع الإلكتروني الذي سيحمله نظام Moodle. لاحظ أنني سوف أستخدم هنا subdomain من اسم النطاق الخاص بي ramisadi.com ليصبح اسم الموقع الإلكتروني الجديد moodle.ramisadi.com حيث أنّ النطاق الأصلي قد تم حجزه من خلال شركة Namecheap.
  • ربط اسم النطاق بالسيرفر من خلال نسخ IP Address الخاص بالسيرفر الجديد الذي تم إنشاؤه (في هذا المثال من لوحة التحكم بحسابي من Digitalocean)، ثم العودة إلى صفحة التحكم بأسماء النطاقات الخاصة بك ( في هذا المثال من لوحة التحكم الخاصة بي من Namecheap) ثم عمل A record جديد لإسم النطاق الذي ستستخدمه حيث هنالك اختلاف بين ربط السيرفر مع نطاق رئيسي أو نطاق فرعي كما هو موضح في الجدول أدناه، ولا ننسى حفظ A record.
نوع اسم النطاقHostIP Address (مثال)
نطاق رئيسي (مثال) ramisadi.com@123.456.78.009
نطاق فرعي (مثال) moodle.ramisadi.commoodle123.456.78.009
إنشاء A record لربط السيرفر مع اسم النطاق
  • تنزيل برنامج putty من هذا الرابط إلى جهاز الكمبيوتر الخاص بك لاستخدامه في إدارة السيرفر.

قبل أن تبدأ

  1. يوجد طريقتين لرفع ملفات نظام Moodle إلى السيرفر، وهما
    • تنزيل النسخة المطلوبة من الموقع الإلكتروني http://moodle.org/downloads على شكل ملف مضغوط ورفعها إلى السيرفر في الموقع المطلوب ثم فك الضغط.
    • سحب النسخة المطلوبة من نظام إدارة النسخ الإلكترونية  Git إلى المجلد المطلوب على السيرفر(موصى به للمطورين والمبرمجين، حيث أنه أسهل ويجعل عمليات التحديث والترقية بسيطة للغاية) وهي الطريقة التي سيتم استخدامها في هذا المنشور.
  2. بعض البيانات التي ستقوم باستخدامها خلال العملية والتي يفضل أن تقوم بوضعها في ملف نصي للرجوع إليها عند الحاجة:
    • كلمة المرور للمستخدم root على سيرفر ubuntu، والتي يتم إعدادها عادة عند إنشاء السيرفر أو يتم إرسالها إليك بالبريد الإلكتروني وذلك بحسب شركة الاستضافة المستخدمة.
    •   اسم المستخدم وكلمة المرور لقاعدة البيانات MySql.
    • اسم المستخدم وكلمة المرور للمستخدم الرئيسي Admin لنظام Moodle بعد إنشائه (يفضل عمل حساب إضافي آخر للاحتياط).

تثبيت مكونات السيرفر Apache/MySql/PHP

يستخدم نظام Moodle 4.0 الإصدارات PHP7.4, PHP7.3  بينما توفر مستودعات Ubuntu 22.04 الافتراضية الإصدارات PHP 8.x .

لتثبيت PHP 7.1 / 7.2 / 7.3 / 7.4 على Ubuntu 22.04 ، نحتاج إلى تثبيت مكونات إضافية وهي مستودعات إضافية توفر حزم PHP المختلفة.

sudo apt-get update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php

تثبيت المكونات البرمجية الأساسية Apache/MySql/PHP

sudo apt-get update
sudo apt install apache2 mysql-client mysql-server php7.4 libapache2-mod-php

إلغاء اعتماد PHP 8 وتثبيت PHP 7.4 والتحقق من إصدار PHP المعتمد على السيرفر.

php -v
sudo a2dismod php8.1
sudo update-alternatives --set php /usr/bin/php7.4
sudo systemctl restart apache2
php -v

تثبيت المكونات البرمجية الإضافية

sudo apt install graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring
sudo service apache2 restart
sudo apt install git

تثبيت نظام Moodle

لقد قمت في هذا الدليل باستخدام الاستراتيجية الموثقة في دليل التعليمات Moodle Documentation، والتي يوصى بها بإنشاء مستودع محلي لسحب نظام Moodle البرمجي باستخدام Git على المجلد opt/ من السيرفر، وهي الممارسة الأفضل كما يوصى بها لأنه بوجود المستودع المحلي الخاص بك خارج webroot ، كما هو الحال لدينا opt/ ، ستتمكن من إعداد التحديثات والترقيات وتنظيمها بطريقة أكثر كفاءة كما هو مذكور  في هذا المرجع.

cd /opt
sudo git clone git://git.moodle.org/moodle.git
cd moodle
sudo git branch -a
sudo git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
sudo git checkout MOODLE_400_STABLE

نسخ المستودع المحلي إلى var/www/html/

sudo cp -R /opt/moodle /var/www/html/

إنشاء مجلد moodledata وتحديد الصلاحيات

sudo mkdir /var/moodledata
sudo chown -R www-data /var/moodledata
sudo chmod -R 777 /var/moodledata
sudo chmod -R 0755 /var/www/html/moodle

إعداد سيرفر MySql

الدخول إلى سيرفر MySql

sudo mysql -u root -p

سيطلب منك هذا الأمر إدخال كلمة المرور الخاصة بالمستخدم root التي قمت بتحديدها عند إنشاء السيرفر، اكتب كلمة المرور الخاصة بك. عند كتابة كلمة المرور الصحيحة سوف يظهر الأمر mysql> كما في الصورة المرفقة.

إنشاء قاعدة البيانات بإسم moodle

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

إنشاء مستخدم قاعدة البيانات

create user 'moodledude'@'localhost' IDENTIFIED BY 'passwordformoodledude';

يمكنك تعديل اسم المستخدم “moodledude” إلى أي اسم مستخدم ترغب فيه، كما يجب تعديل كلمة مرور المستخدم “passwordformoodledude” إلى أي كلمة مرور قوية ترغب بها، كما ينصح بتسجيل هذه البيانات جانباً لأنه بالتأكيد سيتم طلبها منك في الخطوات اللاحقة.

منح الصلاحيات المناسبة لمستخدم قاعدة البيانات ثم الخروج من سيرفر MySql

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodledude'@'localhost';
Quit;

إعداد Firewall (خطوة إختيارية)

sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow www
sudo ufw allow 'Apache Full'
sudo ufw status 

تعديل مسار المجلد الرئيسي ليشير إلى Moodle

إن أبقينا على الإعدادات كما هي حالياً فإن رابط الوصول إلى موقعك الإلكتروني سيكون على الشكل: http://yourdomain.com/moodle ، ولتعديل هذا الرابط ليصبح على الصورة http://yourdomain.com يجب أن نقوم بتعديل على الملف /etc/apache2/sites-available/000-default.conf وذلك باستخدام المحرّر nano عبر الأمر الآتي:

sudo nano /etc/apache2/sites-available/000-default.conf

وهذا الأمر سيقوم بفتح الملف المطلوب على الشاشة، قم بإنزال المؤشر لغاية السطر الذي يحتوي الإعداد DocumentRoot وتعديل الإعداد من var/www/html
ليصبح: var/www/html/moodle

لحفظ الملف اضغط Ctrl + o، ثم اضغط Enter
للخروج: Ctrl + x

إضافة SSL ( Lest’s Encrypt )

sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache

سوف يطلب منك الأمر الأخير:

  • إدخال حساب البريد الإلكتروني الخاص بك للتواصل في بعض الحالات مثل انتهاء فترة الصلاحية.
  • يجب الموافقة على الشروط من خلال إدخال الحرف y.
  • هل ترغب بالاشتراك في مجلة بريد إلكتروني؟ y/n
  • إدخال اسم النطاق الذي ترغب بإضافة SSL عليه (دون إضافة http على الرابط).

في النهاية سوف تقرأ على الشاشة رسالة تهنئة لإضافة شهادة SSL إلى اسم النطاق بنجاح كما في الصورة أدناه.

إضافة مساحة للسيرفر باستخدام Swap (خطوة اختيارية)

يعمل Swap كمساحة تجاوز لذاكرة الوصول العشوائي RAM الخاصة بالجهاز. إذا امتلأت ذاكرة الوصول العشوائي تمامًا، فسيتم تشغيل أي تطبيقات إضافية من تجزئة Swap بدلاً من ذاكرة الوصول العشوائي RAM.
لمعرفة المزيد حول الذاكرة الوهمية الإضافية Swap، يرجى قراءة هذا المرجع.
لإنشاء 1G من مساحة Swap (يفضل أن تكون المساحة بنفس حجم RAM الخاص بالجهاز)

sudo fallocate -l 1G /swapfile 
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile 
sudo swapon --show 

بعد هذا الأمر يفترض أن تشاهد على الشاشة أن مساحة ملف Swap تساوي 1024 Mb 
(1024 Mb of Swap file)

لجعل هذه التعديلات دائمة يجب تعديل ملف fstab من خلال إضافة النص أدناه باستخدام محرّر nano.
لفتح الملف:

sudo nano /etc/fstab 

أنزل المؤشر إلى نهاية الملف ثم قم بإدخال النص التالي في سطر منفرد

/swapfile swap swap defaults 0 0

للحفظ: Ctrl + O ثم الضغط على Enter
للخروج: Ctrl + X

تعديل صلاحيات الكتابة على مجلد Moodle لإضافة ملف config.php تلقائياً

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

لإضافة هذا الملف إلى النظام هنالك طريقتين:

  • إضافة الملف يدوياً من خلال تعديل إسم الملف (config-dist.php) ليصبح (config.php)، ثم إضافة الإعدادات المطلوبة يدوياً داخل الملف (مثل رابط الموقع، نوع قاعدة البيانات، اسم قاعدة البيانات، اسم مستخدم قاعدة البيانات، كلمة المرور لمستخدم قاعدة البيانات، …)  ثم حفظ الملف.
  • إضافة الملف تلقائياً من خلال النظام وذلك من خلال الخطوة التالية (استكمال التثبيت عن طريق المتصفح) ولكن تحتاج هذه العملية لإعطاء صلاحيات الكتابة على مجلد Moodle ثم منع هذه الصلاحيات بعد الانتهاء من التثبيت بسبب الخطورة الأمنية لمثل هذا الدخول إلى النظام.

لقد قمت باستخدام الطريقة الثانية في هذا الدليل، لذلك سنقوم بإعطاء صلاحيات الكتابة على مجلد Moodle من خلال الأمر الآتي:

sudo chmod -R 777 /var/www/html/moodle

استكمال التثبيت عن طريق المتصفح

افتح متصفح الإنترنت (Google Chrome مثلاً) ثم توجه إلى رابط موقعك الإلكتروني https://yourdomain.com ، ثم قم باتباع التعليمات التي تظهر لاستكمال التثبيت.

  • اللغة: قم باختيار لغة الموقع.
  • المسارات: يجب هنا تعديل المسار إلى مجلد moodledata ليصبح var/moodledata
  • نوع قاعدة البيانات (Database Type): اختر Improved MySQL (native/mysqli)
  • إعدادات قاعدة البيانات (Database Settings) : 

– Host server: localhost
– Database: moodle
– User: moodledude (اسم المستخدم الذي اخترته عند إعداد قاعدة البيانات)
– Password: passwordformoodledude (كلمة المرور لمستخدم قاعدة البيانات الذي أنشأته)
– Tables Prefix: mdl_

  • الموافقة على حقوق الملكية
  • التحقق من بيئة السيرفر: ستشير هذه العملية إلى وجود أية أخطاء في تثبيت أي عناصر مطلوبة لتشغيل نظام Moodle. إن تمّ اتّباع تعليمات التثبيت بشكل صحيح فسوف تحصل على إشارة OK بجانب جميع العناصر المطلوبة باستثناء عنصر واحد فقط على الأغلب وهو: max_input_vars . للتعرّف على معنى هذا الخطأ وسببه يرجى قراءة هذا المرجع.

تعديل الخطأ الناتج عن max_input_vars: يرجى تنفيذ هذه الأوامر:

لإيجاد مسار ملف php.ini إن لم نكن نعلمه مسبقاً.

php -i | grep 'php.ini'

نفتح ملف php.ini باستخدام محرّر nano:

nano /etc/php/7.4/apache2/php.ini

نقوم بالتوجه إلى السطر الذي يحتوي max_input_vars ونقوم بتعديل القيمة من 1000 لتصبح 5000.

للحفظ: Ctrl + O ثم الضغط على Enter
للخروج: Ctrl + X

نقوم بإعادة تشغيل Apache لتثبيت التعديلات.

sudo service apache2 restart

استكمال التثبيت من خلال المتصفح

  • إنشاء حساب مدير النظام Admin
  • إعدادات الموقع الرئيسية: اسم الموقع، المنطقة الزمنية، …
  • تسجيل الموقع في دليل مواقع Moodle العالمي (اختياري).
  • إضافة مسارات النظام: 
    • توجّه إلى:
      Site Administration > Server > System Paths
    • قم بإدخال البيانات الآتية ثم حفظها:

– Path to du: /usr/bin/du
– Path to apsell: /usr/bin/aspell
– Path to dot: /usr/bin/dot

إزالة صلاحية الكتابة على مجلد Moodle

 sudo chmod -R 755 /var/www/html/moodle

إعداد Cron jobs

عملية ‘Cron’ في نظام Moodle هي  PHP Script (جزء من نظام Moodle القياسي) يجب تشغيله بانتظام في الخلفية. ويقوم هذا النص البرمجي بتشغيل مهام مختلفة في فترات زمنية مختلفة ومعدّة مسبقاً.

لإعداد هذا النص البرمجي سنقوم بفتح ملف crontab باستخدام الأمر:

sudo crontab -u www-data -e

ستظهر لك شاشة لاختيار نوع المحرّر الذي ترغب باستخدامه لتعديل الملف، قم باختيار الرقم الذي بجانب المحرّر nano، ثم سيتم عرض الملف أمامك على الشاشة.

سنقوم بنسخ هذا النص داخل الملف (في النهاية)

* * * * * /usr/bin/php  /var/www/html/moodle/admin/cli/cron.php >/dev/null

للحفظ: Ctrl + O ثم الضغط على Enter
للخروج: Ctrl + X

تحقق من عدم وجود تنبيهات أو أخطاء من خلال التوجه إلى:
Site Administration > General > Notifications
وقراءة الملاحظات الموجودة في الصفحة والتأكد من عدم ظهور تنبيهات خطيرة.

تهاني! يمكنك الآن البدء في استخدام نظام Moodle !

المراجع

https://docs.moodle.org/en/Step-by-step_Installation_Guide_for_Ubuntu

https://docs.moodle.org/311/en/Installing_Moodle_on_a_Ubuntu_cloud_server

https://docs.moodle.org/400/en/Installing_Moodle

https://www.digitalocean.com/community/tutorials/how-to-install-php-7-4-and-set-up-a-local-development-environment-on-ubuntu-20-04

إعداد الذّاكرة الوهميّة (ملفّات التبادل) على خادوم خاص وهميّ (VPS) – خوادم – أكاديمية حسوب

https://docs.moodle.org/400/en/Environment_-_max_input_vars