Amministrazione via riga di comando


Eseguire script CLI

Se si ha accesso alla shell del proprio web server, si possono trovare utili vari script CLI durante l’amministrazione di Moodle. I principali strumenti CLI di amministrazione si trovano nella cartella:

admin/cli/*

Altri plugin forniscono le loro funzionalità CLI tramite script situati nella loro cartella:

cli

Ad esempio, lo script:

enrol_db sync

si trova in:

enrol/db/cli/

Per evitare problemi con il controllo degli accessi, durante l’installazione e l’aggiornamento via CLI, occorre eseguire tali script come proprietari del processo del web server poiché creano nuovi file nella cartella moodledata e il web server deve potervi accedere anche in scrittura. Nelle distribuzioni Linux, l’utente che esegue il web server è solitamente apache, wwrun, httpd o qualcosa di simile. Come 'root', gli script CLI di Moodle possono essere eseguiti nel seguente modo:

$ cd /path/to/your/moodle/dir
$ sudo -u apache /usr/bin/php admin/cli/somescript.php --params

La maggior parte degli script accetta il parametro --help (o -h) per visualizzare tutte le informazioni d’uso, ad esempio:

$ sudo -u apache /usr/bin/php admin/cli/install.php --help 


Nota: Questi script dovrebbero essere eseguiti con l’identità dell’utente del web server. Gli esempi illustrati in questa pagina utilizzano l’utente apache. Il valore specifico dipende dalla distribuzione del proprio sistema operativo e dalle impostazioni locali. Valori tipici potrebbero essere apache, www-data o httpd.

Installazione

Esistono due modi per installare Moodle dalla riga di comando. Nella modalità interattiva, lo script di installazione richiede i dati necessari per configurare correttamente il nuovo sito Moodle. Nella modalità non interattiva, occorre fornire i dati richiesti come parametri dello script e il nuovo sito sarà installato in background. I parametri possono essere passati anche nella modalità interattiva. I valori forniti sono quindi utilizzati come valori predefiniti durante la sessione interattiva:

$ sudo -u apache /usr/bin/php admin/cli/install.php --lang=cs

Se necessario, l’installazione del database può essere saltata, limitando l’installazione alla sola configurazione del file config.php:

$ sudo -u apache /usr/bin/php admin/cli/install.php --skip-database

Aggiornamento

Moodle può essere aggiornato dalla riga di comando. Come con lo script d'installazione, esiste sia una modalità di aggiornamento interattiva e una non-interattiva. Lo script non attiva la modalità manutenzione, occorre farlo autonomamente. Inoltre, non esegue il backup dei dati (chi sta leggendo questa pagina, è probabile che abbia alcuni script per il backup dei moodledata e del database, giusto?):

$ sudo -u apache /usr/bin/php admin/cli/upgrade.php

Utilizzare la riga di comando consente di aggiornare Moodle agevolmente facendo il checkout via Git del codice sorgente di Moodle (consultare Git per Amministratori). La procedura seguente illustra come aggiornare un sito alla versione più recente in pochi secondi, preservando le eventuali personalizzazioni locali tracciate nel repository Git:

$ cd /var/www/sites/moodle/htdocs/
$ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
$ git pull
$ sudo -u apache /usr/bin/php admin/cli/upgrade.php
$ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable

Modalità manutenzione

Per mettere il sito in modalità manutenzione tramite CLI è possibile utilizzare il comando:

$ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable

Per disattivare la modalità manutenzione basta eseguire lo stesso script con il parametro --disable. Questo script crea e rimuove anche il file climaintenance.html per la gestione della modalità offline.

Modalità offline

In alcune situazioni si potrebbe voler mettere offline il sito Moodle per imperdirne l’accesso via web; tuttavia è impossibile arrestare completamente il web server (di solito perché ci sono altre pagine web e applicazioni in esecuzione). Se nella radice della cartella moodledata esiste un file chiamato :

climaintenance.html

Moodle mostrerà automaticamente il contenuto di quel file al posto di qualsiasi altra pagina. Quindi, per mettere offline un sito Moodle basta dare il comando:

$ cd /var/www/sites/moodle/moodledata/
$ echo '<h1>Sorry, maintenance in progress</h1>' > climaintenance.html


Tuttavia, è opportuno preparare una pagina HTML ben formattata per informare gli utenti del fermo del server e salvarla nella directory moodledata con un nome come:

climaintenance.off

e, se necessario, rinominarla come:

climaintenance.html

Impostazioni predefinite del sito

Durante l’installazione e l’aggiornamento via CLI, Moodle imposta le variabili di amministrazione con dei valori predefiniti. È tuttavia possibile utilizzare delle preimpostazioni diverse. Consultare (EN) MDL-17850 per ulteriori dettagli. In breve, è sufficiente aggiungere un file:

local/defaults.php

nell’installazione di Moodle. Il formato del file è il seguente:

<?php
$defaults['pluginname']['settingname'] = 'settingvalue'; // for plugins
$defaults['moodle']['settingname'] = 'settingvalue'; // for core settings

Questi valori predefiniti sono utilizzati durante l’installazione e l’aggiornamento e sono visualizzati come predefiniti nelle pagine di Amministrazione del sito.

Reimpostare la password dell’utente

Se si dimentica la password di Amministratore (o si vuole reimpostare la password per qualsiasi altro utente del sito), si può utilizzare lo script reset_password.php. Lo script imposta la salted password per l'utente:

$ sudo -u apache /usr/bin/php admin/cli/reset_password.php

Conversione del motore di archiviazione MySQL

Se si esegue Moodle con il database MySQL in back-end e si utilizza l’impostazione predefinita MyISAM come motore di archiviazione per le tabelle, è possibile convertirle per utilizzare un motore più affidabile come InnoDB (in realtà, sarebbe comunque consigliabile migrare direttamente a PostgreSQL):

$ sudo -u apache /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB

Convertire tabelle InnoDB in Barracuda

Le tabelle nel formato file Antelope non possono gestire più di 10 colonne di testo. Si raccomanda pertanto di convertire i siti che utilizzano MySQL con tabelle salvate nel formato Antelope nel formato file Barracuda. Questi formati file, per ragioni di compatibilità con le versioni precedenti, supportano solamente i formati riga compact e redundant. Ciò potrebbe rappresentare un problema durante il ripristino di un corso su siti più grandi. Il sistema potrebbe infatti visualizzare il seguente messaggio di errore:

Row size too large (>8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help.

Barracuda è il formato file InnoDB più recente. In aggiunta ai formati riga compact e redundant, Barracuda supporta anche i formati riga compressed e dynamic. La conversione delle tabella in Barracuda è comunque solamente consigliata e non richiesta, poiché non riguarda tutti gli utenti MySQL. Potrebbe rappresentare un problema solo per i siti più grandi.

Strumento per convertire le tabelle

Uno strumento a riga di comando per convertire le tabelle in Barracuda è incluso in Moodle. Per visualizzare le tabelle che richiedono la conversione, utilizzare l’opzione --list:

$ php admin/cli/mysql_compressed_rows.php --list

Ecco un esempio di output:

mdl_data                           Compact     (needs fixing) 
mdl_data_fields                     Compact     (needs fixing)
mdl_enrol_paypal                    Compact     (needs fixing)

Per procedere alla conversione, eseguire il comando utilizzando l’opzione fix:

$ php admin/cli/mysql_compressed_rows.php --fix

L’avvenuta conversione di ogni tabella sarà riportata nell’output del comando, ad esempio:

mdl_data                   ... Compressed
mdl_data_fields            ... Compressed
mdl_enrol_paypal           ... Compressed

Si noti che i comandi devono essere eseguiti nella cartella moodle. Una volta che le tabelle sono state corrette, il messaggio di avviso non sarà più visualizzato.

Per ulteriori informazioni sui formati dei file InnoDB consultare MySQL InnoDB glossary Antelope e Barracuda.

Se si verificano errori dovuti a privilegi insufficienti per eseguire questi comandi (cosa molto probabile), la soluzione più semplice è generare i comandi SQL richiesti utilizzando:

$ php admin/cli/mysql_compressed_rows.php --showsql

Si potrà quindi copiare il codice SQL generato nel client MySQL eseguendolo come utente 'root'.

Convertire a un nuovo set di caratteri e collation

$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

Lanciare il cron via riga di comando

Nelle versioni 1.x, è possibile eseguire admin/cron.php sia dalla riga di comando che dal web. A partire da Moodle 2.0, solo lo script admin/cli/cron.php può essere eseguito dalla riga di comando.

Operazioni pianificate

Le operazioni pianificate sono eseguite automaticamente dallo script cron, ma i processi specifici eseguiti ad ogni iterazione del cron sono determinati dal file di configurazione delle operazioni pianificate. È possibile sovrascrivere la configurazione delle operazioni pianificate ed eseguire immediatamente una singola operazione pianificata utilizzando lo script admin/tool/task/cli/schedule_task.php.

Lo script accetta i seguenti argomenti:

--list - elenca tutte le operazioni pianificate conosciute. Le operazioni sono elencate in base al nome della categoria utilizzato per eseguire l’attività. Il nome della categoria è richiesto come argomento dell’opzione successiva per eseguire immediatamente un’attività specifica.
--execute=<task> - esegue immediatamente una singola operazione pianificata, indipendentemente dalle impostazioni di pianificazione. Questa opzione eseguirà anche le attività disabilitate. Le attività continueranno a utilizzare i lock per impedire l’esecuzione simultanea della stessa attività, anche su cluster. Il formato dell’argomento del <task> deve essere uguale a quello restituito dall’opzione --list qui sopra.
--showsql - mostra le query SQL prima che siano eseguite.
--showdebugging - mostra le informazioni di debug degli sviluppatori.


Nota: Occorre evitare di scrivere "\" con un extra \ quando si utilizza il comando --execute.

Si osservi l’esempio seguente:

php schedule_task.php --list

restituirà qualcosa di simile a:

== Elenco delle operazioni pianificate (https://nome.del.server.com/moodle) ==
\enrol_imsenterprise\task\cron_task                10 * * * * *      ASAP
\logstore_legacy\task\cleanup_task                 * 5 * * * *       ASAP
\logstore_standard\task\cleanup_task               * 4 * * * *       Wednesday, November 12, 2014, 4:35 AM
\mod_forum\task\cron_task                          * * * * * *       ASAP
\core\task\automated_backup_task                   50 * * * * *      ASAP
...

Per eseguire la prima attività in quell’elenco, si dovrebbe eseguire:

php schedule_task.php --execute='\enrol_imsenterprise\task\cron_task'

Prestare attenzione alle virgolette singole. Senza di esse, occorrerebbe utilizzare il doppio slash (\\) per evitare la sostituzione della sequenza di escape da parte della shell.

Trasferimento di database

Uno script a riga di comando per il Trasferimento di database si trova in admin/tool/dbtransfer/cli/migrate.php.

Svuotare la cache

La cache può essere svuotata utilizzando lo script:

php admin/cli/purge_caches.php

Chiudere tutte le sessioni

Se necessario, per motivi amministrativi, è possibile chiudere tutte le sessioni utente con lo script:

php admin/cli/kill_all_sessions.php

Si noti che così facendo, tutti gli utenti collegati saranno immediatamente disconnessi da Moodle.

Correggere le sequenze del corso / modulo

In rari casi (come a seguito dell’aggiornamento di una versione molto vecchia di Moodle), l’ordine di apparizione di corso / sezione / modulo possono risultare non sincronizzati. Ciò può causare diversi problemi ai corsi interessati, come sezioni che non figurano, backup non riusciti, pagine non visualizzate, ecc. Esiste un controllo specifico per verificare gli errori causati dall’assenza di sincronizzazione e per correggere i dati nel database, se sono rilevati. Per eseguire questo script utilizzare il seguente comando:

php admin/cli/fix_course_sequence.php -c=* --fix

che controllerà ogni corso di Moodle e segnalerà in quali corsi ha riscontrato errori e quali di questi sono stati corretti.

Correggere le categorie di domande orfane

Quando viene creato un quiz, una nuova categoria di domanda è automaticamente creata. Nelle versioni di Moodle precedenti alla 2.9.1, se un quiz è eliminato, la categoria di domanda e qualunque domanda nella categoria restano nel database. Queste categorie di domanda orfane potrebbero essere corrette eseguendo lo script:

admin/cli/fix_orphaned_question_categories.php

con l’opzione --fix.

Cercare e sostituire porzioni di testo

Questo script può essere utilizzato per cercare e sostituire porzioni di testo all’interno dell’intero database:

php admin/tool/replace/cli/replace.php --search=//oldsitehost --replace=//newsitehost

Utilizzare con attenzione ed effettuare prima sempre un backup. Ulteriori informazioni sono disponibili in Strumento cerca e sostituisci.

Costruire la cache CSS del tema attivo

Se Moodle non è in esecuzione in modalità progettazione temi, manterrà una copia del CSS compilato sul disco locale e lo invierà al browser quando questo richiede una pagina. Se non è presente una copia sul disco locale, questa sarà creata alla prima richiesta di una pagina all'interno di Moodle.

Con questo script è possibile precompilare i file CSS memorizzati nella cache per i temi all'interno di Moodle. In questo modo si evita che l’utente debba attendere che il tema sia compilato alla prima richiesta di pagina:

php admin/cli/build_theme_css.php -- themes boost

Per saperne di più

  • (EN) MDL-35736 - gestione dei plugin via riga di comando.
  • (EN) MDL-36237 - riordinare la lista dei corsi via CLI.
  • (EN) MOOSH - MOOdle SHell. È uno strumento a riga di comando che permette di eseguire le attività più comuni di Moodle.