Wéi installéiere ech Moodle Learning Plattform mat Nginx an CentOS 8


Moodle ass de beléifste Léiermanagementsystem op der Welt fir robust Online Léierplazen ze bauen. Et huet eng Rei vun Aktivitéiten a pädagogesch Tools aus deenen Dir kënnt wielen, et ënnerstëtzt Bewäertungsmanagement a Schëffer mat personaliséierte Certificaten. Et erméiglecht och Kommunikatioun mat Äre Studenten an Echtzäit mat engem mächtege Videokonferenzinstrument. Ausserdeem ass et mobil-prett, sou datt Är Schüler vun hiren mobilen Apparater léiere kënnen.

  • Betribssystem: eng minimal Installatioun vum LEMP-Stack installéiert.
  • Disk Space: 200MB fir de Moodle, a 5GB ass wahrscheinlech e realistesche Minimum fir Inhalt ze späicheren.
  • Prozessor: 1GHz (min), 2GHz Dual-Core oder méi recommandéiert.
  • Erënnerung: 512MB (min), 1GB oder méi ass recommandéiert. 8GB plus ass wahrscheinlech op engem grousse Produktiounsserver.

Op dëser Säit

  • En Domain DNS Record fir Moodle Websäit erstellen
  • Moodle Learning Plattform op CentOS 8 Server installéieren
  • Konfiguréieren NGINX fir Moodle Websäit ze servéieren
  • Komplett Moodle Installatioun iwwer Web Installer
  • Aktivéieren HTTPS op Moodle Site mat Let's Encrypt

1. Fänkt un mat engem Subdomain ze kreéieren deen d'Benotzer benotze fir op d'Moodle Online Léierplaz ze kommen. Zum Beispill, wann Ären Domain Numm testprojects.me ass, kënnt Dir en Ënnerdomain mam Numm learning.testprojects.me erstellen.

Öffnen déi fortgeschratt DNS-Astellunge vun Ärem Domainnamen a füügt en A-Rekord un wéi am folgende Bild gewisen.

2. Ier Dir Moodle installéiert, gitt sécher datt Dir déi erfuerderlech PHP-Extensiounen op Ärem Server hutt, Dir kënnt de folgende Kommando ausféieren fir se z'installéieren:

# dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav

3. Als nächst erstellt eng Datebank fir d'Moodle Applikatioun wéi follegt.

# mysql -u root -p

Erstellt dann d'Datebank, d'Datebank Benotzer an erstellt e séchert Passwuert fir de Gebrauch.

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY '[email ';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

4. Luet elo déi lescht Versioun vu Moodle erof (3.9 beim Schreiwen) vun der offizieller Moodle Projet Websäit, extrahéiert d'Archivdatei a réckelt se an Äre Webroot (/var/www/html/) Verzeechnes, setzt dann entspriechend Permissiounen a Besëtzer fir de Webserver Zougang zum Moodle Verzeechnes z'erméiglechen, wéi follegt.

# wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
# tar -xzvf  moodle-latest-39.tgz
# mv moodle /var/www/html/
# chmod 775 -R /var/www/html/moodle
# chown nginx:nginx -R /var/www/html/moodle

5. Als nächst erstellt de Moodledata Verzeichnis deen d'Plaz vun de Fichieren ass, déi vun der Moodle Interface eropgelueden oder erstallt ginn, dann zouginn déi entspriechend Permissiounen a Besëtzer fir de Webserver ze liesen a schreiwen Zougang zu deem:

# mkdir -p /var/www/html/moodledata
# chmod 770 -R /var/www/html/moodledata
# chown :nginx -R /var/www/html/moodledata

6. Als nächst gitt an d'Moodle Installatiounsverzeichnis a erstellt eng config.php Datei aus der Probe config.dist.php Datei déi zur Verfügung gestallt gëtt, maach se dann op fir z'änneren fir e puer ze konfiguréieren. Schlëssel Astellunge fir Är Moodle Plattform, wéi d'Datebankverbindungsparameter an d'Plaz vum Site a wou et de Moodledata Verzeichnis fënnt:

# cd /var/www/html/moodle/
# cp config-dist.php config.php
# vim config.php

Setzt de richtege Datebanktyp, korrekten Datebankhost, Datebanknumm an Datebank Benotzer an de Benotzerpasswuert.

$CFG->dbtype    = 'mariadb';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost    = 'localhost';  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname    = 'moodledb';     // database name, eg moodle
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = '[email zzwd0L2';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

7. Setzt och d'URL, déi benotzt gëtt fir Zougang zu Ärem Moodle Sit, dëst spezifizéiert de Standort vun der wwwroot wou Är Moodle Webdateien sinn, an och den Dataroot (de Moodledata Verzeichnis):

$CFG->wwwroot   = 'http://learning.testprojects.me';
$CFG->dataroot  = '/var/www/html/moodledata';

8. An dëser Rubrik musst Dir NGINX konfiguréieren fir Är Moodle Applikatioun ze déngen. Dir musst e Serverblock dofir erstellen an der NGINX Konfiguratioun wéi gewisen.

# vim /etc/nginx/conf.d/moodle.conf

Kopéiert a paste déi folgend Konfiguratioun an der Serverblockkonfiguratiounsdatei. Ersetzt de Servernumm mat Ärem Subdomain Numm uewen erstallt, an de fastcgi_pass soll op php-fpm weisen (Notéiert datt op CentOS 8, PHP-FPM FastCGI Ufroe akzeptéiert mat der Adress definéiert am /etc/nginx/conf.d/php- fpm.conf Konfiguratioun).

server{
   listen 80;
    server_name learning.testprojects.me;
    root        /var/www/html/moodle;
    index       index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index           index.php;
        fastcgi_pass            php-fpm;
        include                 /etc/nginx/mime.types;
        include                 fastcgi_params;
        fastcgi_param           PATH_INFO       $fastcgi_path_info;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Späichert d'Datei a maach se zou.

9. Da kontrolléiert d'NGINX Konfiguratioun fir d'Korrektheet, wann et Ok ass, restart d'nginx a php-fpm Servicer fir déi rezent Ännerungen anzesetzen:

# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm

10. Wann Dir SELinux op Ärem System aktivéiert hutt, da lafen déi folgend Befehle fir de richtege Kontext ze setzen fir Zougang zu de Moodle Webdateien um Server:

# setsebool -P httpd_can_network_connect on
# chcon -R --type httpd_sys_rw_content_t /var/www/html

11. Ausserdeem, sécherstellen datt d'HTTP- an HTTPS-Servicer an der Firewall op sinn fir de Traffic op den NGINX Webserver z'erméiglechen:

# firewall-cmd --permanent --zone=public --add-service=http 
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

12. Fir Zougang zum Moodle Web Installer ze kréien, öffnen Äre Webbrowser, a navigéiert mam Ënnerdomain, deen Dir uewen erstallt hutt:

http://learning.testprojects.me

Soubal d'Begréissungssäit lued, liest d'Konditioune duerch a klickt op Continue.

13. Als nächst wäert de Webinstallateur kontrolléieren ob Äre System den Ufuerderunge entsprécht fir e Moodle Site vun der spezifizéierter Versioun ze lafen. Dir kënnt erof scrollen fir méi Informatioun ze gesinn.

14. Den Installateur beschwéiert sech iwwer HTTPS net aktivéiert, ignoréiert dëse Feeler fir de Moment (an der nächster Rubrik wäerte mir weisen wéi Dir HTTPS op Moodle aktivéiert), a klickt Continue, fir déi aktuell Installatioun vun de Webdateien ze starten.

15. Elo fänkt den Installateur déi aktuell Installatioun vun de Moodle-Dateien un, wéi am folgenden Screenshot. Wann et fäerdeg ass, klickt op Continue.

16. Am nächste Schrëtt musst Dir den Administratorkonto vun Ärem Moodle Site aktualiséieren andeems Dir de Benotzernumm, Passwuert, Virnumm a Familljen an E-Mailadress aktualiséiert. Da scrollt d'Säit erof a klickt op Profil aktualiséieren.

17. Da aktualiséieren d'Moodle Site Front-Säit Astellungen. Da scrollt erof a klickt Update fir Äre Moodle Site ze benotzen.

18. Als nächst musst Dir Är Site registréieren andeems Dir d'Instruktioune um Bildschierm befollegt. Dir kënnt op den Dashboard goen andeems Dir op den Dashboard klickt.

HTTPS füügt déi éischt Schicht vu Sécherheet op Äre Site fir sécher Kommunikatiounen tëscht Äre Benotzer an der Moodle Applikatioun z'erméiglechen (besonnesch den NGINX Webserver deen Ufroe kritt an Äntwerte liwwert).

Dir kënnt entweder en SSL/TLS Zertifika vun engem kommerziellen CA kafen oder Let's Encrypt benotzen, dee gratis ass an unerkannt vun all modernen Webbrowser. Fir dëse Guide benotze mir Let's Encrypt.

19. De Let's Encrypt Certificate Deployment gëtt automatesch mat dem certbot-Tool geréiert. Dir kënnt certbot an aner erfuerderlech Packagen mat dem folgenden Kommando installéieren:

# dnf install certbot python3-certbot-nginx

20. Fuert dann de folgende Kommando fir e Let's Encrypt Zertifika ze kréien an Certbot Är NGINX Konfiguratioun automatesch z'änneren fir se ze déngen (et konfiguréiert och HTTP fir automatesch op HTTPS ëmgeleet ze ginn).

# certbot --nginx

21. Fuert dann de folgende Kommando fir automatesch Erneierung vum Let's Encrypt SSL/TLS Zertifika z'aktivéieren:

# echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

22. Als nächst, update Är Moodle Konfiguratioun fir HTTPS ze benotzen.

# vim /var/www/html/moodle/config.php

änneren d'wwwroot URL vun HTTP op HTTPS:

$CFG->wwwroot   = 'https://learning.testprojects.me';

23. Lescht awer net zulescht, bestätegt datt Äre Moodle Site elo op HTTPS leeft.

Dat ass et fir elo! Fir méi Informatioun a Konfiguratiounsoptioune fir Är nei Léierplattform ze lafen, gitt op d'Moodle Websäit, a liest duerch déi offiziell Dokumentatioun.