مدیر آموزشگاه فردای نصب Moodle یک سؤال دارد: «کلاس زنده کجاست؟» جوابش در صفحه‌های نصب‌کننده نیست. مودل پرونده آموزشی را نگه می‌دارد: ثبت‌نام، نمره، تکلیف و فایل. کلاس تصویری کار سرور BigBlueButton است. این دفترچه نسخه 5.3 را دنبال می‌کند، نسخه LTS مهر ۱۴۰۵ با پشتیبانی امنیتی تا اکتبر ۲۰۲۹.

  1. ثبت ۱: توزیع، PHP، دیتابیس و کد. بررسی: PostgreSQL 17 و max_input_vars برابر 5000.
  2. ثبت ۲: moodledata بیرون از ریشه وب و nginx روی public. بررسی: nginx -t بدون خطا.
  3. ثبت ۳: نصب‌کننده وب روی https. بررسی: ردیف‌های required صفحه Environment همه OK.
  4. ثبت ۴: کرون دقیقه‌ای برای www-data. بررسی: هشدار کرون در اعلان‌های مدیر نیست.
  5. ثبت ۵: نشانی و رمز سرور BigBlueButton. بررسی: فعالیت در انتخابگر خاکستری نیست.
  6. ثبت ۶ و ۷: کلاس داخل درس و ضبط‌ها. بررسی: دانشجو از صفحه فعالیت وارد کلاس می‌شود.

💡 کلاس تصویری بیرون از مودل برگزار می‌شود

مودل (Moodle) یک LMS یا سامانه آموزش مجازی برای درس، ثبت‌نام، تکلیف و نمره است. کلاس زنده در آن فعالیتی وصل به سرور BigBlueButton است.
✅ کرون و moodledata را همان روز نصب درست کنید.

سبز شدن نصب‌کننده ثبت سوم از هفت ثبت این دفترچه است؛ اعتماد معلم‌ها را چهار ثبت بعدی می‌سازد. نشانی سرور و رمز مشترکی که در ثبت ۵ وارد مودل می‌کنید از سروری می‌آید که با راهنمای نصب BigBlueButton ساخته‌اید. کلاس در سالن تمرین آن سرور برگزار می‌شود و کارت عضویت و کمد هر ورزشکار پشت میز پذیرش مودل ثبت می‌شود.

📌 یادداشت‌های راه‌اندازی مودل

◀️ نسخه PHP، دیتابیس و max_input_vars
◀️ جای پوشه moodledata
◀️ نصب‌کننده و کرون
◀️ فعالیت کلاس زنده

نصب moodle، نمودار پوشه public زیر nginx و پوشه داده جدا از ریشه وب

پیش‌نیاز مودل روی سرور؛ نسخه PHP، دیتابیس و max_input_vars

برای نصب Moodle 5.3 به PHP 8.3 یا 8.4 در نسخه ۶۴ بیتی نیاز دارید. یادداشت انتشار 5.3 حداقل دیتابیس را PostgreSQL 17، MariaDB 11.4، MySQL 8.4 یا SQL Server 2019 گذاشته است. تنظیم max_input_vars هم باید دست‌کم 5000 باشد.

ثبت ۱: نسخه توزیع. مخزن پیش‌فرض همه توزیع‌ها به این حداقل‌ها نمی‌رسد. جدول از سایت بسته‌های Ubuntu و Debian، آبان ۱۴۰۵:

توزیعنسخه PHPدیتابیس پیش‌فرضنتیجه برای 5.3
اوبونتو 24.048.3بسته‌های PostgreSQL 16، MariaDB 10.11، MySQL 8.0هیچ دیتابیس پیش‌فرضی به حداقل نمی‌رسد
دبیان 138.4بسته‌های PostgreSQL 17 و MariaDB 11.8هر دو بخش حداقل را پاس می‌کنند
اوبونتو 26.048.5بسته‌های PostgreSQL 18، MariaDB 11.8، MySQL 8.4دیتابیس کافی است؛ PHP 8.5 در یادداشت انتشار نیامده

ادامه یادداشت‌ها دبیان 13 را فرض می‌گیرد. روی اوبونتو 24.04 دیتابیس را از مخزن خود سازنده بگیرید و در مسیرها 8.4 را 8.3 بخوانید. راهنمای نصب رسمی حداقل حافظه را ۵۱۲ مگابایت و پیشنهادش را یک گیگابایت می‌نویسد؛ عدد واقعی را با حساب رم سرور مجازی بسنجید.

افزونه‌های PHP، کد و Composer

فایل environment.xml شاخه 5.3 این افزونه‌ها را الزامی می‌داند: iconv، mbstring، curl، openssl، ctype، zip، zlib، gd، simplexml، spl، pcre، dom، xml، xmlreader، intl، json، hash، fileinfo، sodium و filter. روی دبیان 13 این خط همه را می‌آورد و php -m فهرست را نشان می‌دهد:

sudo apt install nginx postgresql git composer php-fpm php-pgsql php-intl php-mbstring php-curl php-gd php-xml php-zip php-soap

کتابخانه‌های بیرونی 5.3 در مخزن git نیستند و Composer آن‌ها را در پوشه vendor می‌سازد. Composer در اجرا با root هشدار می‌دهد و تأیید می‌خواهد:

cd /var/www
sudo git clone -b MOODLE_503_STABLE git://git.moodle.org/moodle.git
cd moodle
sudo composer install --no-dev --classmap-authoritative

اگر git.moodle.org جواب نداد، آینه https://github.com/moodle/moodle.git همان شاخه را دارد.

در /etc/php/8.4/fpm/php.ini خط max_input_vars را از حالت توضیح درآورید (حذف ; اول خط) و مقدارش را 5000 کنید. کد 5.3 عدد کمتر را خطای الزامی می‌شمارد و نصب‌کننده دکمه ادامه نمی‌دهد.

sudo systemctl restart php8.4-fpm

دیتابیس خالی با کاربر جدا

راهنمای نصب دیتابیس خالی با کاربر جدا می‌خواهد، نه root یا superuser. روی PostgreSQL وارد psql شوید:

sudo -u postgres psql

رمز نمونه را عوض کنید؛ ENCODING ‘UTF8’ لازم است، چون بررسی Unicode در 5.3 الزامی است:

CREATE USER moodleuser WITH PASSWORD 'yourpassword';
CREATE DATABASE moodle WITH OWNER moodleuser ENCODING 'UTF8' TEMPLATE=template0;
\q

پیش‌نیاز مودل روی سرور؛ نسخه PHP، دیتابیس و max_input_vars

پوشه moodledata را بیرون از ریشه وب بسازید

پوشه moodledata جای فایل‌هایی است که معلم و دانشجو بارگذاری می‌کنند. راهنمای نصب می‌گوید این پوشه نباید در فضای قابل دسترس وب باشد. در نصب moodle نسخه 5.3 ریشه وب پوشه public است؛ moodledata بیرون از کد می‌نشیند.

ثبت ۲: پوشه داده و مالکیت. کاربر وب در moodledata می‌نویسد و روی کد نباید بتواند بنویسد. مثال 0777 راهنما فقط برای سرور غیراشتراکی است؛ config-dist.php برای امنیت بیشتر 0750 را پیشنهاد می‌کند.

sudo mkdir /var/moodledata
sudo chown www-data /var/moodledata
sudo chmod 0750 /var/moodledata
sudo chown -R root /var/www/moodle
sudo chmod -R 0755 /var/www/moodle

🔸 دو خط config.php که جای سایت و داده را تعیین می‌کنند

نصب‌کننده در ثبت ۳ این خط‌ها را از جواب‌هایتان می‌نویسد:
$CFG->wwwroot = 'https://lms.example.ir';
$CFG->dataroot = '/var/moodledata';
$CFG->directorypermissions = 0777;
فایل config.php در ریشه کد می‌ماند، کنار پوشه public. مقدار wwwroot اسلش پایانی ندارد. مسیر dataroot نشانی وب ندارد؛ هر فایل آن از راه کد مودل و بررسی دسترسی به مرورگر می‌رسد. خط سوم بعد از نصب عوض می‌شود.

ریشه nginx روی پوشه public

از نسخه 5.1 فایل‌های قابل دسترس وب در پوشه public هستند. بلاک‌های location زیر از صفحه Nginx مستندات مودل آمده‌اند: درخواست بی‌فایل به r.php (مسیریاب) می‌رود و فایل‌های پنهان و داخلی 404 می‌گیرند. فایل /etc/nginx/sites-available/moodle:

server {
    listen 80;
    server_name lms.example.ir;
    root /var/www/moodle/public;
    index index.php;

    location / {
        try_files $uri $uri/ /r.php$is_args$args;
    }

    location ~ \.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name $fastcgi_script_name/ /r.php$is_args$args;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~ /\.(?!well-known).* {
        return 404;
    }

    location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|/UPGRADING\.md|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) {
        deny all;
        return 404;
    }
}

سوکت بالا پیش‌فرض دبیان است؛ ملاک، خط listen در /etc/php/8.4/fpm/pool.d/www.conf است. سایت را فعال کنید و گواهی بگیرید:

sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d lms.example.ir

افزونه nginx در certbot بلاک HTTPS را به همین server اضافه می‌کند. روی Apache، DocumentRoot روی public و خط FallbackResource /r.php همین کار را می‌کنند.

نصب‌کننده وب کرون را راه نمی‌اندازد

نصب‌کننده وب جدول‌ها و حساب مدیر را می‌سازد، اما هیچ زمان‌بندی روی سرور نمی‌گذارد. ایمیل انجمن و پشتیبان‌گیری کار cron.php است؛ بعد از نصب Moodle آن را خودتان در crontab ثبت کنید.

ثبت ۳: اجرای نصب‌کننده. مالکیت پوشه کد را موقتاً با sudo chown www-data /var/www/moodle به کاربر وب بدهید تا config.php نوشته شود؛ الگوی راهنما برای نصب‌کننده خط فرمان همین است. بعد https://lms.example.ir را باز کنید. نصب‌کننده زبان، مسیرها، درایور دیتابیس (pgsql) و مشخصات دیتابیس را می‌پرسد، بعد جدول بررسی سرور و آخر حساب مدیر می‌آید. جدول را با این فهرست بسنجید:

بررسیوضعیت روی سرور شما
نسخه PHP و PostgreSQLدبیان 13 با 8.4 و 17: OK
افزونه‌های الزامی مثل sodium و intlهر کدام غایب: must be installed and enabled
تنظیم max_input_varsکمتر از 5000: PHP setting max_input_vars must be at least 5000
وابستگی‌های Composerبدون vendor: Composer dependencies were not found
پیکربندی مسیریاب، اختیاریپیش از routerconfigured: The router is not configured

ردیف‌های required باید OK باشند. بعد از ساخت حساب مدیر، config.php را باز کنید: مقدار directorypermissions را از 0777 به 0750 تغییر دهید و بالای خط require_once این خط را اضافه کنید: $CFG->routerconfigured = true;. بعد مالکیت کد را برگردانید:

sudo chown -R root /var/www/moodle

کرون دقیقه‌ای برای کاربر وب

ثبت ۴: کرون. مستندات Cron مودل اجرای هر دقیقه را توصیه می‌کند. صاحب کرون کاربر وب است، روی دبیان www-data، تا فایل‌هایی که در moodledata می‌سازد مال همان کاربر سایت باشد:

sudo crontab -u www-data -e
* * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null

پوشه admin/cli در شاخه 5.3 در ریشه کد مانده و به public نرفته است. اگر کرون از کار بیفتد، صفحه اعلان‌های مدیر هشدار می‌دهد.

کلاس BigBlueButton داخل درس چطور فعال می‌شود؟

کلاس BigBlueButton داخل درس چطور فعال می‌شود؟

از Moodle 5.3 فعالیت BigBlueButton در نصب تازه روشن است، اما اعتبارنامه پیش‌فرضی همراهش نیست. تا نشانی سرور و رمز مشترک وارد نشود، فعالیت در انتخابگر خاکستری است. پس نصب moodle تا دو مقدار از سرور کلاس نگیرد، کلاس زنده ندارد.

ثبت ۵: نشانی و رمز. مسیر Site administration > Plugins > Activity modules > BigBlueButton > General settings را باز کنید. دو فیلد BigBlueButton server URL و BigBlueButton shared secret همان‌جاست.

☁️ رمز مشترک از کجای سرور کلاس می‌آید

دستور sudo bbb-conf --secret روی سرور کلاس URL و Secret را چاپ می‌کند، همراه پیوندی که API-Mate را با همین دو مقدار باز می‌کند. خط URL به /bigbluebutton/ ختم می‌شود؛ همان را در فیلد نشانی بگذارید و Secret را بی‌فاصله در فیلد رمز. کد 5.3 نشانی سرورهای آزمایشی Blindside Networks را اعتبارنامه نامعتبر علامت می‌زند.

راه دوم در تنظیمات افزونه آمده: اعتبارنامه از پورتال Blindside Networks. صفحه BigBlueButton در MoodleDocs سقف میزبانی رایگان را جلسه ۶۰ دقیقه‌ای، ۲۵ کاربر هم‌زمان و ضبط هفت‌روزه بدون دانلود می‌نویسد.

ثبت ۶: فعالیت داخل درس. معلم در حالت ویرایش، BigBlueButton را از انتخابگر برمی‌دارد؛ دانشجو از صفحه همین فعالیت وارد کلاس می‌شود.

ثبت ۷: ضبط‌ها. کار زمان‌بندی‌شده check_pending_recordings هر پنج دقیقه ضبط‌هایی را که هنوز پردازش می‌شوند بررسی می‌کند و بدون کرون ثبت ۴ اجرا نمی‌شود.

🔸 خط‌های crontab کاربر www-data

این دو خط را در crontab همین کاربر نگه دارید:
* * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null
* * * * * /usr/bin/php /var/www/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
خط دوم اختیاری است و پردازنده کارهای ad hoc را زنده نگه می‌دارد.

هفته اول تدریس با سه گزارش آشنا می‌آید: ایمیلی که نرسید، فایلی که باز نشد و دکمه کلاسی که خاکستری ماند. ریشه هر کدام یکی از ثبت‌های بالاست.

مودل 5.3 روی اوبونتو 24.04 بالا می‌آید؟

بخش PHP بله، با نسخه 8.3. دیتابیس‌های پیش‌فرضش زیر حداقل‌اند؛ دیتابیس را از مخزن سازنده بگیرید.

اول کرون؛ ایمیل انجمن بدون cron.php ارسال نمی‌شود. اگر کرون سالم بود، تنظیمات SMTP سایت را ببینید.

یا moodledata منتقل نشده یا dataroot در config.php مسیر قدیمی را دارد.

نشانی سرور و رمز مشترک هنوز در General settings افزونه وارد نشده‌اند.

خیر؛ کد 5.3 آن را نامعتبر علامت می‌زند. سرور خودتان یا اعتبارنامه پورتال را بگذارید.

راهنمای رسمی منعش می‌کند. اگر چاره‌ای نیست، روی Apache 2.4 فایل .htaccess با Require all denied در آن بگذارید؛ راهنما می‌گوید همه‌جا جواب نمی‌دهد.

خیر؛ حداقل نسخه مبدأ 4.4 است. اول به 4.4 یا بالاتر بروید.

جمع‌بندی؛ نصب Moodle با صفحه سبز تمام نمی‌شود آموزش‌های قدیمی دو تغییر 5.3 را ندارند: ریشه وب پوشه public است و کتابخانه‌ها با Composer می‌آیند. صفحه Environment خطای الزامی را پیش از ادامه نشان می‌دهد، اما کرون و جای moodledata را هیچ صفحه‌ای جلوی چشمتان نمی‌گذارد. پوشه داده را بیرون از public بسازید، کرون دقیقه‌ای را برای www-data ثبت کنید و نشانی و رمز سرور کلاس را به BigBlueButton بدهید. از آن روز معلم دکمه کلاس را فعال می‌بیند.

🚀 سرور BigBlueButton برای دکمه کلاس مودل

ساخت سرور BigBlueButton با اسکریپت رسمی و سنجش ظرفیتش راهنمای جدا دارد.

اولین بار که صفحه Environment را روی سرورتان دیدید، کدام ردیف OK نبود؟

منابع رسمی این دفترچه

وب داده
وب داده

جدید ترین مطالب آموزشی و کاربردی را در اینجا بخوانید !
ما با بهره‌گیری از دانش روز و تجربه متخصصان حوزه فناوری، مجموعه‌ای از آموزش‌های کاربردی و مقالات تخصصی را گردآوری کرده‌ایم که هر یک، پاسخی دقیق به پرسش‌های شماست. ؛ از مفاهیم پایه تا پیچیده‌ترین تکنیک‌های حرفه‌ای. اینجا، دانش با زبانی ساده اما عمیق در اختیار شما قرار می‌گیرد.

مقاله‌ها: 277
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *