Moodle یک سیستم مدیریت یادگیری آنلاین (LMS) رایگان و متنباز است که به مربیان اجازه میدهد یک وبسایت کاملاً کاربردی برای دورههای آموزشی ایجاد کنند که با یک تجربه کلاس آنلاین تکمیل میشود. این راهنما نحوه نصب Moodle روی سرور اوبونتو ۲۲.۰۴ را توضیح میدهد.
پیشنیازها
- یک سرور اوبونتو ۲۲.۰۴ راهاندازی کنید.
- یک کاربر غیر root با امتیازات sudo ایجاد کنید.
- سرور را بهروزرسانی کنید.
- یک دامنه کاملا معتبر که به سرور شما اشاره میکند، مانند moodle.example.com
نمونههای کد و فایلهای پیکربندی در این مطلب از moodle.example.com و example.com برای اهداف نمایشی استفاده میکنند. شما باید همه موارد را به نام دامنه خود تغییر دهید.
۱. پیکربندی فایروال
Moodle برای عملکرد به پورتهای HTTP و HTTPS نیاز دارد.
آنها را با استفاده از فایروال UFW باز کنید.
sudo ufw allow http sudo ufw allow https
وضعیت فایروال را بررسی کنید.
sudo ufw status
۲. نصب Nginx
اوبونتو ۲۲.۰۴ با نسخه قدیمیتر Nginx عرضه میشود. این مطلب ترجیح میدهد از مخزن رسمی Nginx برای نصب آخرین نسخه استفاده کند.
نصب وابستگیهای مورد نیاز برای نصب Nginx
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y
وارد کردن کلید امضای Nginx
url https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
اضافه کردن مخزن نسخه پایدار Nginx
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
بهروزرسانی لیست مخازن سیستم
sudo apt update
نصب سرور Nginx
sudo apt install nginx
بررسی نصب
nginx -v
۳. نصب و پیکربندی PHP
آخرین نسخه Moodle (نسخه ۴.۰.۲) به PHP 8.0 نیاز دارد. مخزن PHP Ondrej را برای افزودن پشتیبانی از PHP 8.0 اضافه کنید.
sudo add-apt-repository ppa:ondrej/php -y
نصب PHP و افزونههای مورد نیاز
sudo apt install graphviz aspell ghostscript clamav php8.0-fpm php8.0-cli php8.0-pspell php8.0-curl php8.0-gd php8.0-intl php8.0-mysql php8.0-xml php8.0-xmlrpc php8.0-ldap php8.0-zip php8.0-soap php8.0-mbstring
فایل /etc/php/8.0/fpm/pool.d/www.conf را باز کنید.
sudo nano /etc/php/8.0/fpm/pool.d/www.conf
خطوط user=apache و group=apache را در فایل پیدا کنید و آنها را به صورت زیر تغییر دهید.
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = nginx group = nginx ...
همچنین، خطوط listen.owner=www-data و listen.group=www-data را در فایل پیدا کنید و آنها را به nginx تغییر دهید.
... ... listen.owner = nginx listen.group = nginx ...
فایل را با فشار دادن Ctrl+X و سپس Y ذخیره کنید.
سرویس PHP-FPM را ریستارت کنید.
sudo systemctl restart php8.0-fpm
۴. نصب و پیکربندی MySQL
سرور MySQL را نصب کنید.
sudo apt install mysql-server
مرحله زیر برای نسخههای ۸.۰.۲۸ و بالاتر MySQL ضروری است. وارد پوسته MySQL شوید.
sudo mysql
دستور زیر را برای تنظیم رمز عبور برای کاربر ریشه خود اجرا کنید. مطمئن شوید که ترکیبی از اعداد، حروف بزرگ، حروف کوچک و کاراکترهای ویژه باشد.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourrootpassword';
از شِل خارج شوید.
mysql> exit
اسکریپت نصب امن را اجرا کنید.
sudo mysql_secure_installation
برای ایمنسازی MySQL به سوالات زیر پاسخ دهید.
</pre> Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: (Enter Y) Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: (Enter 2) Change the password for root ? ((Press y|Y for Yes, any other key for No) : (Enter N) Remove anonymous users? (Press y|Y for Yes, any other key for No) : (Enter Y) Disallow root login remotely? (Press y|Y for Yes, any other key for No) : (Enter Y) Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y (Enter Y) Reload privilege tables now? (Press y|Y for Yes, any other key for No) : (Enter Y) <pre>
وارد شِل MySQL شوید.
sudo mysql -u root -p
یک پایگاه داده برای Moodle ایجاد کنید.
mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
یک کاربر SQL برای دسترسی به پایگاه داده ایجاد کنید. yourpassword را با یک رمز عبور قوی دلخواه خود جایگزین کنید.
mysql > CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';
به moodleuser دسترسی به پایگاه داده را اعطا کنید.
mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO moodleuser@localhost;
جدول امتیازات را ریلود کنید.
mysql > FLUSH PRIVILEGES;
از شِل خارج شوید.
mysql > exit
۵. نصب مودل روی اوبونتو
دایرکتوری عمومی برای مودل ایجاد کنید.
sudo mkdir /var/www/html/moodle -p
به کاربر وارد شده دسترسی به این دایرکتوری را بدهید.
sudo chown -R $USER:$USER /var/www/html/moodle
به دایرکتوری عمومی بروید.
cd /var/www/html/moodle
مخزن گیتهاب مودل را کلون کنید.
git clone https://github.com/moodle/moodle.git .
لیست برنچهای موجود را بررسی کنید.
git branch -a
در حال حاضر، MOODLE_400_STABLE آخرین نسخه موجود است. یک شاخه محلی به نام MOODLE_400_STABLE ایجاد کنید و آن را طوری تنظیم کنید که شاخه راه دور را ردیابی کند.
git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
به شاخه محلی تازه ایجاد شده بروید.
git checkout MOODLE_400_STABLE
یک دایرکتوری داده برای مودل ایجاد کنید.
sudo mkdir /var/moodledata
مجوزهای مناسب را به دایرکتوری داده مودل بدهید.
sudo chown -R nginx /var/moodledata sudo chmod -R 775 /var/moodledata
مجوزهای نوشتن را در دایرکتوری مودل بدهید.
sudo chmod -R 755 /var/www/html/moodle
۶. پیکربندی مودل
به دایرکتوری مودل بروید.
cd /var/www/html/moodle
از فایل پیکربندی نمونه برای ایجاد یک فایل پیکربندی مودل استفاده کنید.
cp config-dist.php config.php
فایل config.php را برای ویرایش باز کنید.
nano config.php
به دنبال بخش پایگاه داده بگردید، سپس پایگاه داده را برای ذخیره دادههای مودل، همانطور که در زیر نشان داده شده است، پیکربندی کنید.
$CFG-&gt;dbtype = 'mysqli'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' or 'oci' $CFG-&gt;dblibrary = 'native'; // 'native' only at the moment $CFG-&gt;dbhost = 'localhost'; // eg 'localhost' or 'db.isp.com' or IP $CFG-&gt;dbname = 'moodledb'; // database name, eg moodle $CFG-&gt;dbuser = 'moodleuser'; // your database username $CFG-&gt;dbpass = 'yourpassword'; // your database password $CFG-&gt;prefix = 'mdl_'; // prefix to use for all table names
همچنین، مکان URL وب Moodle و دایرکتوری دادهها را پیکربندی کنید.
... $CFG-&gt;wwwroot = 'https://moodle.example.com'; ... $CFG-&gt;dataroot = '/var/moodledata';
فایل را با فشار دادن Ctrl+X و سپس Y ذخیره کنید.
برای پروژههای مهم خود به دنبال سرور مطمئن هستید؟ خرید سرور مجازی با IP ثابت و سرعت بالا در پارسدو، گزینهای ایدهآل است.
۷. نصب SSL
برای نصب گواهینامههای SSL به ابزار Certbot که از Let’s Encrypt API استفاده میکند، نیاز دارید. آخرین نسخه Certbot از طریق فروشگاه Snap در دسترس است.
برای اطمینان از داشتن آخرین نسخه snapd، دستورات زیر را اجرا کنید.
sudo snap install core sudo snap refresh core
Certbot را نصب کنید.
sudo snap install --classic certbot
یک لینک نمادین برای Certbot به دایرکتوری /usr/bin ایجاد کنید.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
گواهی SSL را صادر کنید.
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d moodle.example.com
یک گواهی گروه Diffie-Hellman ایجاد کنید.
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
فایل /etc/letsencrypt/renewal/moodle.example.com.conf را برای ویرایش باز کنید.
sudo nano /etc/letsencrypt/renewal/moodle.example.com.conf
کد زیر را در پایین قرار دهید.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
فایل را با فشار دادن Ctrl+X و وارد کردن Y در صورت درخواست ذخیره کنید.
گزینه مستقل Certbot از وب سرور خود برای ایجاد گواهی که با Nginx کار نمیکند، استفاده میکند. دستورات pre_hook و post_hook قبل و بعد از تمدید اجرا میشوند تا سرور Nginx را بدون دخالت دستی به طور خودکار خاموش و مجدداً راهاندازی کنند.
برای اطمینان از عملکرد صحیح، یک اجرای آزمایشی از فرآیند تمدید SSL انجام دهید.
sudo certbot renew --dry-run
۸. پیکربندی Nginx
فایل nginx.conf را برای ویرایش باز کنید.
sudo nano /etc/nginx/nginx.conf
خط include /etc/nginx/conf.d/*.conf را پیدا کنید و کد زیر را در زیر آن قرار دهید.
server_names_hash_bucket_size 64;
فایل را با فشار دادن Ctrl+X و سپس Y ذخیره کنید.
فایل پیکربندی Moodle را برای Nginx ایجاد کنید و آن را برای ویرایش باز کنید.
sudo nano /etc/nginx/conf.d/moodle.conf
کد زیر را در آن قرار دهید.
# Redirect HTTP to HTTPS
server {
listen 80; listen [::]:80;
server_name moodle.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name moodle.example.com;
root /var/www/html/moodle;
index index.php;
ssl_certificate /etc/letsencrypt/live/moodle.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/moodle.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/moodle.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
access_log /var/log/nginx/moodle.access.log main;
error_log /var/log/nginx/moodle.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
include /etc/nginx/mime.types;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Hide all dot files but allow "Well-Known URIs" as per RFC 5785
location ~ /\.(?!well-known).* {
return 404;
}
# This should be after the php fpm rule and very close to the last nginx ruleset.
# Don't allow direct access to various internal files. See MDL-69333
location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) {
deny all;
return 404;
}
}
فایل را با فشار دادن Ctrl+X و سپس Y ذخیره کنید.
نحوه پیکربندی Nginx را تایید کنید.
sudo nginx -t
سرویس Nginx را ریستارت کنید.
sudo systemctl restart nginx
۹. نصب کامل مودل
آدرس اینترنتی https://moodle.example.com را در مرورگر خود باز کنید تا صفحه خوشامدگویی باز شود.
برای ادامه، دکمه Continue را فشار دهید. صفحه بعد، نیازمندیهای سیستم را بررسی میکند. اگر همه چیز درست بود، به صفحه بعدی بروید.
صفحه بعد، پایگاه داده و فایلهای مورد نیاز مودل را تنظیم میکند. به ایجاد حساب کاربری مدیر (administrator ) ادامه دهید و سایر جزئیات را در صفحه بعد پر کنید.
مرحله آخر، تنظیم صفحه اصلی مودل است. تغییرات خود را ذخیره کنید تا به داشبورد مودل بروید. میتوانید استفاده از برنامه را برای ایجاد پلتفرم یادگیری خود شروع کنید.