
به اشتراک بگذارید

به اشتراک بگذارید
مدیر آموزشگاه فردای نصب Moodle یک سؤال دارد: «کلاس زنده کجاست؟» جوابش در صفحههای نصبکننده نیست. مودل پرونده آموزشی را نگه میدارد: ثبتنام، نمره، تکلیف و فایل. کلاس تصویری کار سرور BigBlueButton است. این دفترچه نسخه 5.3 را دنبال میکند، نسخه LTS مهر ۱۴۰۵ با پشتیبانی امنیتی تا اکتبر ۲۰۲۹.
nginx -t بدون خطا.💡 کلاس تصویری بیرون از مودل برگزار میشود
مودل (Moodle) یک LMS یا سامانه آموزش مجازی برای درس، ثبتنام، تکلیف و نمره است. کلاس زنده در آن فعالیتی وصل به سرور BigBlueButton است.
✅ کرون و moodledata را همان روز نصب درست کنید.
سبز شدن نصبکننده ثبت سوم از هفت ثبت این دفترچه است؛ اعتماد معلمها را چهار ثبت بعدی میسازد. نشانی سرور و رمز مشترکی که در ثبت ۵ وارد مودل میکنید از سروری میآید که با راهنمای نصب BigBlueButton ساختهاید. کلاس در سالن تمرین آن سرور برگزار میشود و کارت عضویت و کمد هر ورزشکار پشت میز پذیرش مودل ثبت میشود.
📌 یادداشتهای راهاندازی مودل
◀️ نسخه PHP، دیتابیس و max_input_vars
◀️ جای پوشه moodledata
◀️ نصبکننده و کرون
◀️ فعالیت کلاس زنده

برای نصب 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.04 | 8.3 | بستههای PostgreSQL 16، MariaDB 10.11، MySQL 8.0 | هیچ دیتابیس پیشفرضی به حداقل نمیرسد |
| دبیان 13 | 8.4 | بستههای PostgreSQL 17 و MariaDB 11.8 | هر دو بخش حداقل را پاس میکنند |
| اوبونتو 26.04 | 8.5 | بستههای PostgreSQL 18، MariaDB 11.8، MySQL 8.4 | دیتابیس کافی است؛ PHP 8.5 در یادداشت انتشار نیامده |
ادامه یادداشتها دبیان 13 را فرض میگیرد. روی اوبونتو 24.04 دیتابیس را از مخزن خود سازنده بگیرید و در مسیرها 8.4 را 8.3 بخوانید. راهنمای نصب رسمی حداقل حافظه را ۵۱۲ مگابایت و پیشنهادش را یک گیگابایت مینویسد؛ عدد واقعی را با حساب رم سرور مجازی بسنجید.
فایل 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

پوشه 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 نشانی وب ندارد؛ هر فایل آن از راه کد مودل و بررسی دسترسی به مرورگر میرسد. خط سوم بعد از نصب عوض میشود.
از نسخه 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 نرفته است. اگر کرون از کار بیفتد، صفحه اعلانهای مدیر هشدار میدهد.

از 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 را زنده نگه میدارد.
هفته اول تدریس با سه گزارش آشنا میآید: ایمیلی که نرسید، فایلی که باز نشد و دکمه کلاسی که خاکستری ماند. ریشه هر کدام یکی از ثبتهای بالاست.
بخش 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 نبود؟
منابع رسمی این دفترچه