Moodle، یک سیستم مدیریت یادگیری رایگان و منبع باز است که به زبان PHP نوشته شده است. این سیستم، راهی را برای مدرسان و مربیان به منظور ایجاد دوره‌های آموزشی برای دانش آموزان فراهم می‌کند. در این مقاله، نحوه نصب Moodle با وب سرور Nginx و Let’s Encrypt برروی Ubuntu 20.04 شرح داده شده است.

 

moodle، یک سیستم یکپارچه قوی و ایمن ارائه می‌دهد و دارای یک داشبورد سفارشی است که به کاربران در دسترسی به دوره‌های آموزشی فعلی، گذشته یا آینده و همچنین بررسی کارهای معلق کمک می‌نماید. moodle توسط بسیاری از مدارس، دانشگاه‌ها و سازمان‌ها در سراسر جهان استفاده می‌شود و تجربه یادگیری بهتری را فراهم می‌کند. این سیستم، مجموعه وسیعی از ویژگی‌ها شامل، ویکی(Wiki)، رتبه بندی، ارسال تکلیف، آزمون‌های آنلاین، تابلوهای بحث و موارد دیگر را فراهم می‌نماید.

دقت کنید که قبل از دنبال کردن این آموزش، به موارد زیر نیاز دارید:

  • یک سرور که سیستم عامل اوبونتو 20.04 بر روی آن نصب شده باشد.
  •  
  • یک نام دامنه معتبر که با IP سرور شما مرتبط شده است.
  •  
  • دسترسی به کاربر root یا کاربری که عضو گروه sudo باشد.

 

این مطلب نیز ممکن است برای شما مفید باشد: moodle چیست؟

 

قبل از شروع کار باید بسته‌های سیستم خود را به آخرین نسخه به روز کنید. بدین منظور می‌توانید از دستور زیر استفاده نمایید:

apt-get update -y

پس از به روزرسانی سرور، شما می‌توانید به مرحله بعدی بروید.

 

نصب LEMP

ابتدا  Apache ،MariaDB ،PHP و سایر کتابخانه‌های PHP را با استفاده از دستور زیر روی سیستم خود نصب کنید:

apt-get install nginx mariadb-server php-fpm php-common php-mysql php-gmp php-curl php-intl php-mbstring php-soap php-xmlrpc php-gd php-xml php-cli php-zip unzip git curl -y

پس از نصب همه بسته‌ها، فایل php.ini را ویرایش کرده و برخی تنظیمات را به صورت زیر تغییر دهید:

nano /etc/php/7.4/fpm/php.ini

این تنظیمات شامل خطوط زیر هستند:

memory_limit = 256M
cgi.fix_pathinfo = 0
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

فایل را ذخیره کرده و ببندید. سپس سرویس PHP-FPM را مجدداً راه‌اندازی نمایید تا تغییرات اعمال شود:

systemctl restart php7.4-fpm

پس از پایان کار، می‌توانید به مرحله بعدی بروید.

 

ایجاد یک پایگاه داده

moodle از MySQL یا MariaDB به عنوان backend پایگاه داده استفاده می‌کند؛ بنابراین شما باید یک پایگاه داده و کاربر برای moodle ایجاد نمایید. بدین منظور مراحل زیر را دنبال کنید.

ابتدا با دستور زیر به پوسته MySQL متصل شوید:

mysql

پس از ورود به سیستم، با دستور زیر یک پایگاه داده و کاربر ایجاد نمایید:

CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';

در مرحله بعد، با دستور زیر، کلیه امتیازات را به پایگاه داده Moodle اعطا کنید:

GRANT ALL ON moodledb.* TO 'moodle'@'localhost' WITH GRANT OPTION;

سپس، امتیازات را خالی کرده و با استفاده از دستور زیر، از MySQL خارج شوید:

FLUSH PRIVILEGES;
EXIT;

 

پس از آن، فایل پیکربندی پیش فرض MariaDB را ویرایش کرده و innodb_file_format را تعریف نمایید:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

و خطوط زیر را در بخش [mysqld] اضافه کنید:

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON

در انتها، فایل را ذخیره کرده و سپس سرویس MariaDB را مجدداً راه‌اندازی نمایید تا تغییرات اعمال شود:

systemctl restart mariadb

 

نصب moodle

ابتدا، دایرکتوری را به دایرکتوری ریشه Apache تغییر داده و آخرین نسخه Moodle را با دستور زیر بارگیری کنید:

cd /var/www/html
git clone -b MOODLE_38_STABLE git://git.moodle.org/moodle.git moodle

پس از اتمام بارگیری، Moodle config.php را ویرایش کرده و نوع پایگاه داده را تعریف نمایید:

nano /var/www/html/moodle/config.php

در آن فایل، خط زیر را پیدا کنید:

$CFG->dbtype    = 'mysqli';

و آن را با خط زیر جایگزین نمایید:

$CFG->dbtype    = 'mariadb';

فایل را ذخیره کرده و ببندید و یک دایرکتوری داده Moodle با مالکیت و مجوز مناسب با دستور زیر ایجاد کنید:

mkdir -p /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle
chmod -R 755 /var/www/html/*
chown www-data:www-data /var/www/html/moodledata

پس از پایان کار، می‌توانید به مرحله بعدی بروید.

 

پیکربندی Nginx برای Moodle

در مرحله بعدی باید یک فایل پیکربندی میزبان مجازی Nginx برای میزبانی Moodle ایجاد نمایید:

nano /etc/nginx/conf.d/moodle.conf

و خطوط زیر را به فایل اضافه کنید:

server {
    listen 80;
    root /var/www/html/moodle;
    index  index.php index.html index.htm;
    server_name  moodle.example.com;

    client_max_body_size 100M;
    autoindex off;
    location / {
        try_files $uri $uri/ =404;
    }

    location /dataroot/ {
      internal;
      alias /var/www/html/moodledata/;
    }

    location ~ [^/].php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

 

فایل را ذخیره کرده و ببندید و با دستور زیر، درستی تنظیمات Nginx را بررسی نمایید:

nginx -t

باید خروجی زیر را دریافت کنید:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

سرانجام، سرویس Nginx را مجدداً راه‌اندازی نمایید تا تغییرات اعمال شود:

systemctl restart nginx

در این مرحله، Nginx برای میزبانی Moodle پیکربندی شده است. اکنون می‌توانید به مرحله بعدی بروید.

 

دسترسی به رابط وب Moodle

اکنون، مرورگر وب خود را باز کرده و با استفاده از آدرس http://moodle.example.com، به رابط وب Moodle دسترسی پیدا کنید. باید صفحه نصب moodle مشابه زیر را مشاهده نمایید:

 

زبان خود را انتخاب کرده و روی Next کلیک نمایید. صفحه‌ای مشابه زیر نمایش داده می‌شود:

 

آدرس وب Moodle، مسیر دایرکتوری و مسیر دایرکتوری داده خود را ارائه دهید و برروی Next کلیک کنید. باید صفحه‌ای مشابه زیر مشاهده نمایید:

 

نوع درایور پایگاه داده خود را انتخاب کرده و روی Next کلیک نمایید. صفحه‌ای مشابه زیر نمایش داده می‌شود:

 

میزبان پایگاه داده، نام پایگاه داده، نام کاربری و رمز عبور خود را ارائه دهید و روی Next کلیک نمایید. صفحه زیر را مشاهده خواهید کرد:

 

به منظور تأیید همه شرایط، روی Continue کلیک کنید. صفحه زیر نمایش داده خواهد شد:

 

مطمئن شوید که تمام افزونه‌های مورد نیاز PHP نصب شده و سپس بر روی Continue کلیک نمایید. صفحه‌ای مشابه زیر را مشاهده خواهید کرد:

 

روی Continue کلیک کنید. صفحه زیر نمایش داده خواهد شد:

 

نام کاربری، گذرواژه، ایمیل، کشور و منطقه زمانی (timezone) ادمین خود را وارد کرده و روی پروفایل Update کلیک نمایید. صفحه‌ای مشابه زیر را مشاهده خواهید کرد:

 

تنظیمات صفحه ابتدایی خود را ارائه دهید و برای ذخیره تغییرات بر روی دکمه Save changes کلیک کنید.

 

امن سازی Moodle با Let’s Encrypt SSL

در مرحله بعدی، به منظور بارگیری Let's Encrypt SSL، ابزار Certbot را نصب کرده و Nginx را در جهت استفاده از این SSL پیکربندی نمایید.

ابتدا به منظور نصب Certbot، دستور زیر را وارد کنید:

apt-get install python3-certbot-nginx -y

پس از نصب، دستور زیر را به منظور بارگیری SSL و پیکربندی Nginx اجرا نمایید:

certbot --nginx -d moodle.example.com

اکنون، از شما خواسته می‌شود یک آدرس ایمیل معتبر ارائه دهید و شرایط سرویس را بپذیرید:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for moodle.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/moodle.conf

 

سپس باید انتخاب کنید که آیا می‌خواهید ترافیک HTTP را به HTTPS هدایت کنید یا نه:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

عدد 2 را تایپ کرده و Enter را بزنید تا مراحل ادامه یابد. باید خروجی زیر نمایش داده شود:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/moodle.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://moodle.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=moodle.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/moodle.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/moodle.example.com/privkey.pem
   Your cert will expire on 2021-05-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

اکنون می‌توانید با استفاده از آدرس http://moodle.example.com به وب سایت moodle دسترسی پیدا کنید.

 

 

 

منبع:

howtoforge