Come installare la piattaforma di eLearning Moodle su Rocky Linux 8
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa Git
- Passaggio 3 - Installa e configura PHP
- Passaggio 4 - Installa e configura MySQL
- Passaggio 5 - Installa Nginx
- Passaggio 6 - Installa Moodle
- Passaggio 7 - Configura Moodle
- Passaggio 8 - Installa SSL
- Passaggio 9 - Configura Nginx
- Passaggio 10 - Configura SELinux
- Passaggio 11 - Completamento dell'installazione di Moodle
- Conclusione
Moodle è un Learning Management System (LMS) online gratuito e open source. Consente agli educatori di creare un sito Web completamente funzionale per corsi didattici completo di un'esperienza di classe online. È scritto in PHP. Fornisce un ricco set di funzionalità tra cui wiki, valutazione, invio di compiti, quiz online, forum di discussione e altro ancora.
Questa guida spiega come installare Moodle su un server Rocky Linux 8.
Prerequisiti
-
A server running Rocky Linux 8.
-
A domain name pointing to the server. For our tutorial, we will use the
moodle.example.com
domain. -
A non-root user with sudo privileges.
-
Make sure everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.
$ sudo firewall-cmd --state running
Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
Moodle ha bisogno delle porte HTTP e HTTPS per funzionare. Aprili.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Ricarica il firewall per applicare le modifiche.
$ sudo firewall-cmd --reload
Passaggio 2: installa Git
Git è richiesto da Moodle per acquisire i file dell'applicazione. Installa Git.
$ sudo dnf install git
Passo 3 - Installa e configura PHP
Dobbiamo installare PHP 8.0 affinché Moodle funzioni per il nostro tutorial. Il primo passo è prendere il repository Epel.
$ sudo dnf install epel-release
Successivamente, installa il repository Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Controlla i flussi PHP disponibili.
$ dnf module list php -y Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language php 8.0 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
La versione predefinita è 7.2. Abilita il repository Remis PHP 8.0.
$ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.0
Installa PHP e le estensioni necessarie richieste da Moodle.
$ sudo dnf install graphviz aspell ghostscript clamav php-fpm php-iconv php-curl php-mysqlnd php-cli php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json php-sodium php-opcache
Verificare l'installazione.
$ php --version PHP 8.0.21 (cli) (built: Jul 6 2022 10:13:53) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.21, Copyright (c) Zend Technologies with Zend OPcache v8.0.21, Copyright (c), by Zend Technologies
Apri il file php.ini
per modificarlo.
$ sudo nano /etc/php.ini
Modificare i valori delle seguenti variabili per impostare la dimensione dell'allegato di posta su 25 MB.
upload_max_filesize = 25M post_max_size = 25M
Successivamente, decommenta la variabile max_input_vars
rimuovendo il punto e virgola davanti ad essa e cambiando il suo valore in 5000.
max_input_vars = 5000
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Apri il file /etc/php-fpm.d/www.conf
.
$ sudo nano /etc/php-fpm.d/www.conf
Trova le righe user=apache
e group=apache
nel file e modificale come segue.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Quindi, decommenta il proprietario del file socket, il gruppo e la riga di autorizzazione predefinita e modificali come mostrato di seguito.
; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx listen.mode = 0660
Successivamente, commenta la seguente riga come mostrato mettendo un punto e virgola davanti ad essa.
;listen.acl_users = apache,nginx
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Assegna le autorizzazioni appropriate alla directory della sessione PHP.
$ chown -R nginx:nginx /var/lib/php/session/
Abilitare e avviare il servizio PHP-FPM.
$ sudo systemctl enable php-fpm --now
Passo 4 - Installa e configura MySQL
Installa il server MySQL.
$ sudo dnf install mysql-server
Confermare l'installazione controllando la versione.
$ mysql --version mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
Abilita e avvia il servizio MySQL.
$ sudo systemctl enable mysqld --now
Eseguire lo script di installazione sicura.
$ sudo mysql_secure_installation
Riceverai diversi prompt. Il primo prompt chiederà se si desidera installare il plug-in Validate Password. Premi Y per installare il plugin. Scegli 2 come livello di sicurezza che richiederà che la tua password sia lunga almeno 8 caratteri e includa un mix di caratteri maiuscoli, minuscoli, numerici e speciali.
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: (Press Y) There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: (Type 2)
Successivamente, ti verrà chiesto di creare una password di root sicura. Assicurati che la tua password corrisponda ai requisiti del plug-in Validate.
Please set the password for root here. New password: Re-enter new password:
Successivamente, ti verranno chieste diverse richieste relative all'aumento della sicurezza del database. Premi Y in ogni prompt.
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : (Press Y) Remove anonymous users? (Press y|Y for Yes, any other key for No) : (Press Y) Disallow root login remotely? (Press y|Y for Yes, any other key for No) : (Press Y) Remove test database and access to it? (Press y|Y for Yes, any other key for No) : (Press Y) Reload privilege tables now? (Press y|Y for Yes, any other key for No) : (Press Y) Success. All done!
Accedi alla shell MariaDB.
$ sudo mysql
Crea un database per Moodle.
mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Creare un utente SQL per accedere al database. Sostituisci YourPassword23!
con una password a tua scelta.
mysql > create user 'moodleuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Concedi a moodleuser
l'accesso al database.
mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleuser'@'localhost';
Ricarica la tabella dei privilegi.
mysql > FLUSH PRIVILEGES;
Esci dal guscio.
mysql > exit
Passaggio 5: installa Nginx
Rocky Linux viene fornito con una versione precedente di Nginx. Devi scaricare il repository Nginx ufficiale per installare l'ultima versione.
Crea e apri il file /etc/yum.repos.d/nginx.repo
per creare il repository Nginx ufficiale.
$ sudo nano /etc/yum.repos.d/nginx.repo
Incolla il seguente codice al suo interno.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Installa il server Nginx.
$ sudo dnf install nginx
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.22.0
Passaggio 6: installa Moodle
Crea la directory pubblica per Moodle.
$ sudo mkdir /var/www/html/moodle
Autorizza l'utente che ha effettuato l'accesso ad accedere alla directory.
$ sudo chown -R $USER:$USER /var/www/html/moodle
Passa all'elenco pubblico.
$ cd /var/www/html/moodle
Clonare il repository Github di Moodle.
$ git clone https://github.com/moodle/moodle.git .
Controlla l'elenco delle filiali disponibili.
$ git branch -a
Per ora, MOODLE_400_STABLE
è l'ultima versione disponibile. Crea un ramo locale chiamato MOODLE_400_STABLE
e impostalo per tracciare il ramo remoto.
$ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
Passa alla filiale locale appena creata.
$ git checkout MOODLE_400_STABLE
Crea una directory di dati per Moodle.
$ sudo mkdir /var/moodledata
Assegna le autorizzazioni appropriate alla directory dei dati di Moodle.
$ sudo chown -R nginx /var/moodledata $ sudo chmod -R 775 /var/moodledata
Concedi i permessi di scrittura sulla directory di Moodle.
$ sudo chmod -R 755 /var/www/html/moodle
Passo 7 - Configura Moodle
Passa alla directory di Moodle.
$ cd /var/www/html/moodle
Copia il file di configurazione di esempio per creare il file di configurazione di Moodle.
$ cp config-dist.php config.php
Apri il file di configurazione per la modifica.
$ nano config.php
Cerca la sezione di configurazione del database, quindi configura il database in cui verranno archiviati tutti i dati di Moodle, come mostrato di seguito.
$CFG->dbtype = 'mysqli'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', '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 = 'moodleuser'; // your database username $CFG->dbpass = 'YourPassword23!'; // your database password $CFG->prefix = 'mdl_'; // prefix to use for all table names
Inoltre, configurare la posizione del nome di dominio Moodle e la directory dei dati.
$CFG->wwwroot = 'https://moodle.example.com'; $CFG->dataroot = '/var/moodledata';
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Passaggio 8: installa SSL
Lo strumento Certbot genera certificati SSL utilizzando l'API Lets Encrypt. Richiede il repository EPEL ma poiché lo abbiamo installato, possiamo procedere direttamente. Immetti il seguente comando per installarlo.
$ sudo dnf install certbot
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d moodle.example.com
Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/moodle.example.com
sul tuo server.
Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Crea una directory radice Web di verifica per il rinnovo automatico di Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file /etc/cron.daily/certbot-renew
e aprilo per modificarlo.
$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh certbot renew --cert-name moodle.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 9: configurare Nginx
Crea e apri il file /etc/nginx/conf.d/moodle.conf
per la modifica.
$ sudo nano /etc/nginx/conf.d/moodle.conf
Incolla il seguente codice al suo interno.
# Redirect all non-encrypted to encrypted 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; client_max_body_size 25M; 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-fpm/www.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; } }
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Apri il file /etc/nginx/nginx.conf
per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verificare la sintassi del file di configurazione di Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Abilita e avvia il servizio Nginx per abilitare la nuova configurazione.
$ sudo systemctl enable nginx --now
Se ricevi il seguente errore, molto probabilmente è dovuto alle restrizioni di SELinux.
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Per correggere l'errore, eseguire i seguenti comandi.
$ sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx $ sudo semodule -X 300 -i my-nginx.pp
Riavvia il servizio Nginx.
$ sudo systemctl start nginx
Passo 10 - Configura SELinux
Modificare il contesto di sicurezza dei file per la directory Web e dei dati di Moodles.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/moodle' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata' $ sudo restorecon -Rv '/var/www/html/moodle' $ sudo restorecon -Rv '/var/moodledata'
Configura SELinux per consentire le connessioni di rete da Moodle.
$ sudo setsebool -P httpd_can_network_connect on
Passaggio 11: completamento dell'installazione di Moodle
Apri l'URL https://moodle.example.com
nel tuo browser e ti verrà presentata la seguente schermata di benvenuto.
Premere il pulsante Continua per procedere. Successivamente, il programma di installazione verificherà i requisiti di sistema.
Se tutto è ok, scorri verso il basso e fai clic sul pulsante Continua per procedere con l'installazione dei file e la configurazione del database.
Fare clic sul pulsante Continua una volta completata l'installazione. Successivamente, crea un account amministratore compilando i dettagli dell'account come richiesto.
Al termine, scorri verso il basso fino alla pagina e fai clic su Aggiorna profilo per procedere.
Successivamente, ti verrà chiesto di configurare le impostazioni della prima pagina di Moodles.
Configuralo secondo i requisiti e fai clic su Salva modifiche per procedere alla dashboard di Moodle. Successivamente, fai clic sul collegamento Salta in basso se non desideri registrare il tuo sito Moodle con l'azienda.
Ora puoi iniziare a utilizzare la piattaforma di apprendimento.
Conclusione
Questo conclude il nostro tutorial sull'installazione della piattaforma di apprendimento Moodle su un server Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.