Sådan installeres Moodle Learning Platform med Nginx i CentOS 8


Moodle er verdens mest populære læringsstyringssystem til opbygning af robuste online-læringssider. Den har en række aktiviteter og uddannelsesmæssige værktøjer, som du kan vælge imellem, den understøtter vurderingsstyring og leveres med brugerdefinerede certifikater. Det muliggør også kommunikation med dine studerende i realtid med et kraftfuldt videokonferenceværktøj. Desuden er den mobilklar, så dine studerende kan lære af deres mobile enheder.

  • Operating System: a minimal installation of CentOS 8 or RHEL 8 server with LEMP stack installed.
  • Disk Space: 200MB for the Moodle, and 5GB is probably a realistic minimum of storing content.
  • Processor: 1GHz (min), 2GHz dual-core or more recommended.
  • Memory: 512MB (min), 1GB or more is recommended. 8GB plus is likely on a large production server.

På denne side

  • Creating a Domain DNS Record for Moodle Website
  • Installing Moodle Learning Platform in CentOS 8 Server
  • Configuring NGINX to Serve Moodle Website
  • Complete Moodle Installation via Web Installer
  • Enable HTTPS on Moodle Site Using Let’s Encrypt

1. Start med at oprette et underdomæne, som brugerne vil bruge til at få adgang til Moodle online-læringswebstedet. For eksempel, hvis dit domænenavn er testprojects.me , kan du oprette et underdomæne kaldet learning.testprojects.me .

Åbn dit domænenavns avancerede DNS-indstillinger, og tilføj en A -post som vist på det følgende billede.

2. Inden du installerer Moodle, skal du sikre dig, at du har de nødvendige PHP-udvidelser på din server, du kan køre følgende kommando for at installere dem:

# 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. Opret derefter en database til Moodle-applikationen som følger.

# mysql -u root -p

Opret derefter databasen, databasebrugeren, og opret en sikker adgangskode til brug.

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. Download nu den nyeste version af Moodle (3.9 i skrivende stund) fra det officielle moodle-projektwebsted, udpak arkivfilen og flyt den til din webroot (/var/www/html/) katalog, og indstil derefter passende tilladelser og ejerskab for at give webserveren adgang til Moodle-biblioteket som følger.

# 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. Opret derefter moodledata-biblioteket, der er placeringen af filer, der uploades eller oprettes af Moodle-grænsefladen, og tildel derefter passende tilladelser og ejerskab for at tillade webserveren at læse og skrive adgang til det:

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

6. Gå derefter ind i Moodle-installationsmappen, og opret en config.php -fil fra eksemplet config.dist.php -fil, der åbnes, og åbn den derefter til redigering for at konfigurere nogle nøgleindstillinger til din Moodle-platform, såsom parametre for databaseforbindelse og stedets placering, og hvor den kan finde moodledata-biblioteket:

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

Indstil den korrekte databasetype, korrekt databasevært, databasenavn og databasebruger og brugerens adgangskode.

$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. Indstil også den URL, der bruges til at få adgang til din Moodle-sit, dette specificerer placeringen af wwwroot, hvor dine Moodle-webfiler er placeret, og også dataroten (moodledata-biblioteket):

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

8. I dette afsnit skal du konfigurere NGINX til at betjene din Moodle-applikation. Du skal oprette en serverblok til den i NGINX-konfigurationen som vist.

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

Kopier og indsæt følgende konfiguration i konfigurationsfilen til serverblokken. Udskift servernavnet med dit underdomænenavn oprettet ovenfor, og fastcgi_pass skal pege på php-fpm (bemærk at PHP-FPM på CentOS 8 accepterer FastCGI-anmodninger ved hjælp af adressen defineret i /etc/nginx/conf.d/php- fpm.conf-konfiguration).

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;
}
}

Gem filen, og luk den.

9. Kontroller derefter NGINX-konfigurationen for korrekthed, hvis den er OK, genstart nginx- og php-fpm-tjenesterne for at anvende de seneste ændringer:

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

10. Hvis du har SELinux aktiveret på dit system, skal du køre følgende kommandoer for at indstille den korrekte kontekst for adgang til Moodle-webfiler på serveren:

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

11. Sørg desuden for, at HTTP- og HTTPS-tjenesterne er åbne i firewallen for at tillade trafik til NGINX-webserveren:

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

12. For at få adgang til Moodle-webinstallationsprogrammet skal du åbne din webbrowser og navigere ved hjælp af det underdomæne, du oprettede ovenfor:

http://learning.testprojects.me

Når velkomstsiden er indlæst, skal du læse gennem vilkårene og betingelserne og klikke på Fortsæt.

13. Dernæst kontrollerer webinstallatøren, om dit system opfylder kravene til at køre et Moodle-websted i den angivne version. Du kan rulle ned for at se flere oplysninger.

14. Installationsprogrammet klager over, at HTTPS ikke er aktiveret, ignorerer den fejl for nu (i det næste afsnit viser vi, hvordan du aktiverer HTTPS på Moodle), og klik på Fortsæt for at starte den faktiske installation af webfilerne.

15. Nu starter installationsprogrammet den faktiske installation af Moodle-filerne som vist i det følgende skærmbillede. Når den er færdig, skal du klikke på Fortsæt.

16. I det næste trin skal du opdatere dit Moodle-websteds administratorkonto ved at opdatere brugernavn, adgangskode, fornavn og efternavn og e-mail-adresse. Rul derefter ned på siden, og klik på Opdater profil.

17. Opdater derefter Moodle-webstedets forsideindstillinger. Rul derefter ned og klik på Opdater for at begynde at bruge dit Moodle-websted.

18. Dernæst skal du registrere dit websted ved at følge instruktionerne på skærmen. Du kan gå til instrumentbrættet ved at klikke på instrumentbrættet.

HTTPS tilføjer det første lag af sikkerhed til dit websted for at muliggøre sikker kommunikation mellem dine brugere og Moodle-applikationen (især NGINX-webserveren, der modtager anmodninger og leverer svar).

Du kan enten købe et SSL/TLS-certifikat fra en kommerciel CA eller bruge Lad os kryptere, som er gratis og anerkendt af alle moderne webbrowsere. Til denne vejledning bruger vi Lad os kryptere.

19. Implementeringen af Let's Encrypt Certificate administreres automatisk ved hjælp af certbot-værktøjet. Du kan installere certbot og andre nødvendige pakker med følgende kommando:

# dnf install certbot python3-certbot-nginx

20. Kør derefter følgende kommando for at få et Lad os kryptere certifikat og få Certbot til at redigere din NGINX-konfiguration automatisk for at tjene det (det konfigurerer også HTTP, der automatisk omdirigeres til HTTPS).

# certbot --nginx

21. Kør derefter følgende kommando for at aktivere automatisk fornyelse af Lad os kryptere SSL/TLS-certifikat:

# 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. Opdater derefter din Moodle-konfiguration for at begynde at bruge HTTPS.

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

skift wwwroot URL fra HTTP til HTTPS:

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

23. Sidst men ikke mindst skal du bekræfte, at dit Moodle-websted nu kører på HTTPS.

Det er det for nu! For mere information og konfigurationsmuligheder til at køre din nye læringsplatform, skal du gå til Moodle-webstedet og læse gennem den officielle dokumentation.