« Administration en ligne de commande » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
 
(27 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Traduction}}
{{Traduction}}{{Installation}}== Lancer des scripts en ligne de commande ==
Si vous avez accès en ligne de commande à votre serveur web, différents scripts pourront vous être utiles pour l'administration de Moodle. Les outils pré-installés en standard sont situés dans le dossier <code>admin/cli/*</code> ('''CLI''' = ''command line interface''). Des plugins fournissent leurs propres outils en ligne de commande dans des scripts situés dans leur propre dossier <code>cli</code>. Par exemple, le script de synchronisation enrol_db est situé dans enrol/db/cli/.


Pour éviter des problèmes de contrôle d'accès, ces scripts doivent être lancés sou le nom de l'utilisateur possesseur du processus du serveur web (''apache'', ''www'', ''wwrun'', ''httpd'', etc.). Ceci est particulièrement important pour les tâches d'installation et de mise à jour en ligne de commande, puisque durant ces tâches des fichiers sont créés dans le dossier de données ''moodledata'' et que le serveur web doit y avoir accès en écriture. Si vous êtes connecté en tant que root, vous lancerez donc les scripts ainsi :
Si vous avez accès en ligne de commande à votre serveur web, différents scripts pourront vous être utiles pour l'administration de Moodle. Les outils d'administration générale sont situés dans le dossier <code>admin/cli/*</code> ('''CLI''' = ''command line interface''). Certains plugins peuvent fournir leurs propres outils en ligne de commande via des scripts situés dans leur propre dossier <code>cli</code>. Par exemple, le script de synchronisation d'inscription par base de donnée ''enrol_db'' est situé dans <code>enrol/db/cli/</code>.  


Pour éviter des problèmes de contrôle d'accès, ces scripts doivent être lancés sous le nom de l'utilisateur possesseur du processus du serveur web (''apache'', ''www-data'', ''wwrun'', ''httpd'', etc.). Ceci est particulièrement important pour les tâches d'installation et de mise à jour en ligne de commande, puisque durant ces tâches des fichiers sont créés dans le dossier de données ''moodledata'' et que le serveur web doit y avoir accès en écriture. Si vous êtes connecté en tant que root, vous lancerez donc les scripts ainsi :
     $ cd /chemin/vers/votre/dossier/moodle
     $ cd /chemin/vers/votre/dossier/moodle
     $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params
     $ sudo -u apache /usr/bin/php admin/cli/nom_script.php --parametres
 
La plupart des scripts acceptent la paramètre standard --help (ou -h) pour afficher l'aide sur l'utilisation du script, par exemple :
La plupart des scripts acceptent la paramètre standard --help (ou -h) pour afficher l'aide sur l'utilisation du script, par exemple :
     $ sudo -u apache /usr/bin/php admin/cli/install.php --help
     $ sudo -u apache /usr/bin/php admin/cli/install.php --help
 
== Mise à jour ==
== Mise à jour en ligne de commande ==
Moodle peut être mis à jour en ligne de commande. Tout comme pour le script d'installation, il y a pour la mise à jour un mode interactif et un mode non-interactif. Le script ne met pas le site en [[Mode de maintenance|mode de maintenance]]. Vous devrez le faire vous-même (en ligne de commande, par exemple). En outre, le script n'effectue aucune sauvegarde (mais si vous lisez cette page, vous avez certainement mis en place vos propres scripts de sauvegarde de moodledata et de la base de données, n'est-ce-pas ?). La commande est la suivante :
 
Moodle peut être mis à jour en ligne de commande. Tout comme pour le script d'installation, il y a pour la mise à jour un mode interactif et un mode non-interactif. Le script ne met pas le site en mode de maintenance. Vous devrez le faire vous-même (en ligne de commande, par exemple). En outre, le script n'effectue aucune sauvegarde (mais si vous lisez cette page, vous avez certainement mis en place vos propres scripts de sauvegarde de moodledata et de la base de données, n'est-ce-pas ?). La commande est la suivante :
 
     $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
     $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
 
La mise à jour en CLI est très confortable, notamment en combinaison avec l'utilisation de Git pour télécharger le code source de Moodle (voir [[Git pour administrateurs]]). La procédure ci-dessous montre comment mettre à jour votre site en quelques secondes, tout en préservant vos éventuelles personnalisations locales :
La mise à jour en CLI est très confortable, notamment en combinaison avec l'utilisation de Git pour télécharger le code source de Moodle (voir [[Git pour Administrateurs]]). La procédure ci-dessous montre comment mettre à jour votre site en quelques secondes, tout en préservant vos éventuelles personnalisations locales :
 
     $ cd /var/www/sites/moodle/htdocs/
     $ cd /var/www/sites/moodle/htdocs/
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
Ligne 24 : Ligne 17 :
     $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
     $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
 
== Installation ==
== Installation en ligne de commande ==
Moodle peut-être installé en ligne de commande de deux façons différentes. En mode interactif, le script d'installation vous demandera toutes les données nécessaires afin de procéder à l'installation correctement. En mode non-interactif, vous devez fournir toutes les données nécessaires comme paramètres du script et le nouveau site sera créé automatiquement. Les paramètres peuvent également être passés en mode interactif ; ils seront dans ce cas utilisés comme valeur par défaut durant la session interactive.
 
Depuis Moodle 2.0, Moodle peut-être installé en ligne de commande. Il y a deux modes d'installation. En mode interactif, le script d'installation vous demandera toutes les données nécessaires afin de procéder à l'installation correctement. En mode non-interactif, vous devez fournir toutes les données nécessaires comme paramètres du script et le nouveau site sera créé automatiquement. Les paramètres peuvent également être passés en mode interactif ; ils seront dans ce cas utilisés comme valeur par défaut durant la session interactive.
 
     $ sudo -u apache /usr/bin/php admin/cli/install.php --lang=fr
     $ sudo -u apache /usr/bin/php admin/cli/install.php --lang=fr
Si vos arguments contiennent des caractères spéciaux pour les systèmes basés sur Linux, n'oubliez pas de les échapper avec une barre oblique inverse. Par exemple, si vous voulez créer un administrateur avec <code>pa$sword</code> comme mot de passe, vous devez écrire <code>pa\$sword</code> à la place !


== Mode de maintenance ==
Si nécessaire, l'installation de la base de données peut être ignorée, avec seulement le fichier ''config.php'' renseigné.
 
  $ sudo -u apache /usr/bin/php admin/cli/install.php --skip-database
==Mode de maintenance==
Pour mettre votre site en mode de maintenance, vous pouvez utiliser :
Pour mettre votre site en mode de maintenance, vous pouvez utiliser :
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
     $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
Pour désactiver la maintenance, il suffit d'utiliser plutôt le paramètre --disable
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
Si vous ne souhaitez pas activer le mode maintenance immédiatement, mais afficher un compte à rebours à vos utilisateurs, exécutez le même script avec le paramètre ''--enablelater'' et le nombre de minutes pendant lesquelles le compte à rebours doit s'exécuter :
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enablelater=10
==Mode hors ligne==
Dans certaines situations, vous aurez besoin de mettre votre site Moodle hors ligne en le rendant inaccessible, tout en conservant certaines fonctionnalités, par exemple parce que d'autres pages ou applications web y tournent. Si un fichier du nom de <code>climaintenance.html</code> est placé dans le dossier moodledata tout en haut de la hiérarchie, Moodle affichera automatiquement le contenu de ce fichier au lieu de toute autre page.
    $ cd /var/www/sites/moodle/moodledata/
    $ echo '&lt;h1&gt;Désolé, le site Moodle est actuellement en maintenance&lt;/h1&gt;' &gt; climaintenance.html
Vous pouvez préparer une page HTML avec votre charte graphique pour informer vos utilisateurs que le serveur est temporairement inaccessible et conserver ce fichier dans le dossier moodledata sous un nom comme <code>climaintenance.off</code> et le renommer en <code>climaintenance.html</code> au besoin.
==Personnalisation des valeurs par défaut==
Durant l'installation ou la mise à jour en ligne de commande, Moodle définit des variables d'administration à leur valeur par défaut. Vous pouvez définir d'autres valeurs par défaut. Voyez [https://tracker.moodle.org/browse/MDL-17850 MDL-17850] pour des détails. En résumé, il suffit de créer un fichier <code>local/defaults.php</code> dans votre installation Moodle. Le format de ce fichier est le suivant :
    <?php
    $defaults['pluginname']['settingname'] = 'settingvalue'; // pour les plugins
    $defaults['moodle']['settingname'] = 'settingvalue'; // pour les paramètres du cœur de Moodle
Ces valeurs par défaut sont utilisées lors de l'installation, de la mise à jour, et sont en outre affichées comme valeur par défaut dans les pages d'administration du site.
==Réinitialisation du mot de passe==
Si vous avez perdu votre mot de passe administrateur (ou souhaitez définir le mot de passe d'un autre utilisateur), vous pouvez utiliser le script ''reset_password.php''. Ce script définit le mot de passe de l'utilisateur spécifié, en tenant compte correctement du sel de mot de passe.
    $ sudo -u apache /usr/bin/php admin/cli/reset_password.php
==Conversion des tables InnoDB au format Barracuda==
Les versions plus récentes de MySQL et MariaDB disposent d'un format de fichier amélioré appelé ''Barracuda''. Pour en tirer parti :
#Assurez-vous que votre version de MySQL/MariaDB utilise ''Barracuda'' avec le préfixe de clé d'indexation large (''innodb_large_prefix''). Voir ci-dessous pour plus de détails.
#Passage au format de ligne compressé (voir Conversion des tables au format ''compressed row'')
#Modifier le jeu de caractères et la collation pour une prise en charge complète d'Unicode (voir Conversion du jeu de caractères et de la collation).
Si vous avez MySQL 8.0.0 ou une version ultérieure, ou MariaDB 10.3.0 ou une version ultérieure, ces versions ne supportent Barracuda qu'avec le préfixe de clé d'indexation large (''innodb_large_prefix''). Pour les versions antérieures, pour vérifier si MySQL/MariaDB utilise Barracuda, exécutez l'instruction suivante dans le client MySQL/MariaDB ou dans l'onglet SQL de phpMyAdmin :
    SHOW GLOBAL VARIABLES WHERE variable_name IN ('innodb_file_format', 'innodb_large_prefix', 'innodb_file_per_table');
Si vos paramètres ne correspondent à aucun des tableaux ci-dessous, consultez la section Configurer le support UTF-8 complet pour savoir comment modifier ces paramètres :


Pour désactiver la maintenance, il suffit d'utiliser plutôt le paramètre --disable
[[Fichier:phpMyAdmin.png|sans_cadre]] ou [[Fichier:phpMyAdmin2.png|sans_cadre]] ou [[Fichier:WilJbrTlL4.png|sans_cadre]]


    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
Si vos paramètres correspondent à l'une de ces tables, MySQL/MariaDB utilise Barracuda avec le préfixe de clé d'indexation large.


== Mode hors ligne ==
=== Conversion des tables au format compressed row ===
Ce script permet de modifier les tables contenant de nombreuses colonnes de texte afin d'utiliser ROW_FORMAT=COMPRESSED. Ce changement n'est pas obligatoire mais il est recommandé. Si l'erreur de base de données ''Row size too large (> 8126)'' survient lors de l'utilisation de Moodle, exécutez ce script pour la corriger.


Dans certaines situations, vous aurez besoin de mettre votre site Moodle hors ligne en le rendant inaccessible, tout en conservant certaines fonctionnalités, par exemple parce que d'autres pages ou applications web y tournent. Si un fichier du nom de <code>climaintenance.html</code> est placé dans le dossier moodledata tout en haut de la hiérarchie, Moodle affichera automatiquement le contenu de ce fichier au lieu de toute autre page.
'''Note :''' Si vous avez MariaDB version 10.6.0 à 10.6.6 ou version 10.7.0 à 10.7.2 vous devez mettre à jour vers une version plus récente avant d'exécuter ce script. Voir [https://tracker.moodle.org/browse/MDL-72131 MDL-72131] pour plus de détails.


    $ cd /var/www/sites/moodle/moodledata/
Pour afficher les tableaux nécessitant une conversion, utilisez l'option --list :
    $ echo '&lt;h1&gt;Désolé, le site Moodle est actuellement en maintenance&lt;/h1&gt;' &gt; climaintenance.html
$ php admin/cli/mysql_compressed_rows.php --list
Voici un exemple de résultat :
mdl_data                            Compact    (needs fixing)
mdl_data_fields                    Compact    (needs fixing)
mdl_enrol_paypal                    Compact    (needs fixing)
Pour procéder à la conversion, exécutez la commande en utilisant l'option fix :
$ php admin/cli/mysql_compressed_rows.php --fix
La conversion réussie de tables sera indiquée en réponse, par exemple :
mdl_data                  ... Compressed
mdl_data_fields            ... Compressed
mdl_enrol_paypal          ... Compressed
Si vous obtenez des erreurs parce que vous n'avez pas les privilèges suffisants pour exécuter ces commandes, utilisez --showsql pour générer les commandes SQL nécessaires :
$ php admin/cli/mysql_compressed_rows.php --showsql
Vous pouvez ensuite copier le code SQL généré dans votre client MySQL/MariaDB en utilisant l'utilisateur "root".


Vous pouvez préparer une page HTML avec votre charte graphique pour informer vos utilisateurs que le serveur est temporairement inaccessible et conserver ce fichier dans le dossier moodledata sous un nom comme <code>climaintenance.off</code> et le renommer en <code>climaintenance.html</code> au besoin.
=== Conversion du jeu de caractères et de la collation ===
Ce script modifie les tables de la base de données Moodle pour permettre le support complet de l'Unicode.
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
Après avoir effectué cette modification, éditez ''config.php'' et remplacez 'dbcollation' par 'utf8mb4_unicode_ci' dans ''$CFG->dboptions''.


== Personnalisation des valeurs par défaut ==
Pour plus de détails, voir : [[Support unicode complet pour MySQL|MySQL full unicode support]]


Durant l'installation ou la mise à jour en ligne de commande, Moodle définit des variables d'administration à leur valeur par défaut. Vous pouvez définir d'autres valeurs par défaut. Voyez MDL-17850 pour des détails. En résumé, il suffit de créer un fichier <code>local/defaults.php</code> dans votre installation Moodle. Le format de ce fichier est le suivant :
==Exécution du cron en ligne de commande==
Dans les versions 1.x, on pouvait lancer le script <code>admin/cron.php</code> soit en ligne de commande, soit depuis le web. Depuis Moodle 2.0, seul le script <code>admin/cli/cron.php</code> peut être lancé via la ligne de commande.
==Tâches programmées==
Les tâches programmées sont lancées automatiquement par le script cron. Celles qui sont lancées lors de chaque lancement du cron sont déterminées par la configuration de chaque tâche programmée. Il est possible de court-circuiter cette configuration et de lancer une tâche programmée immédiatement à l'aide du script <code>admin/tool/task/cli/schedule_task.php</code>.  


<code php>
Ce script accepte les paramètres suivants :
<?php
--list - donne la liste de toutes les tâches programmées. Ces tâches sont classées par nom de la classe utilisée pour lancer la tâche. Ce nom de classe est requis comme paramètre de l'option ci-dessous, pour pouvoir lancer immédiatement une tâche spécifique.
$defaults['pluginname']['settingname'] = 'settingvalue'; // pour les plugins
$defaults['moodle']['settingname'] = 'settingvalue';    // pour les paramètres du cœur de Moodle
</code>


Ces valeurs par défaut sont utilisées lors de l'installation, de la mise à jour, et sont en outre affichées comme valeur par défaut dans les pages d'administration du site.
--execute=<tâche> - lance immédiatement une tâche programmée, sans tenir compte de sa programmation, y compris les tâches désactivées. Les tâches utiliseront le système de verrouillage pour éviter des lancements simultanés d'une même tâche, y compris sur des installations en cluster. Le format du paramètre <tâche> doit être identique à celui de la sortie de la commande avec l'option --list (voir ci-dessus).


== Réinitialiser le mot de passe ==
--showsql - Affiche les requêtes SQL avant de les exécuter


Si vous avez perdu votre mot de passe administrateur (ou souhaitez définir le mot de passe d'un autre utilisateur), vous pouvez utiliser le script reset_password.php. Ce script défini correctement le mot de passe de l'utilisateur spécifié, en tenant compte du sel de mot de passe.
--showdebugging - Affiche les [[Débogage|informations de débogage]] de niveau développeur


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


== Conversion du moteur de stockage MySQL ==
'''Remarque.''' Le caractère "\" doit être échappé avec un deuxième caractère \ lors de l'utilisation de l'option <code>--execute</code>. Par exemple :
<pre>php admin/tool/task/cli/schedule_task.php --list</pre>
donnera la sortie suivante :
<pre>
== List of scheduled tasks (http://yourserver.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


Si votre site Moodle utilise la base de données MySQL et utilise par défaut le moteur de stockage MyISAM pour vos tables, vous pourriez vouloir les convertir pour utiliser un autre moteur plus performant comme InnoDB (certains diraient que vous devriez même quitter MySQL et passer à PostgreSQL ;-) ).
...
</pre>
Pour lancer immédiatement la première des tâches de la liste, on lancerait la commande
<pre>php admin/tool/task/cli/schedule_task.php --execute=\\enrol_imsenterprise\\task\\cron_task</pre>
==Transfert de la base de données==
Un script CLI pour transférer votre base de données (par exemple de MySQL à PostgreSQL) se trouve dans ''admin/tool/dbtransfer/cli/migrate.php''.
==Purger les caches==
Vous pouvez purger les caches en utilisant ce script :
  $ sudo -u apache /usr/bin/php admin/cli/purge_caches.php
{{Moodle 3.4}}
==Supprimer toutes les sessions==
Si nécessaire, pour des raisons administratives, vous pouvez supprimer toutes les sessions utilisateur avec ce script :
php admin/cli/kill_all_sessions.php
Du coup, tous les utilisateurs seront déconnectés de Moodle.
==Réparer les séquences cours / module==
Dans de rares cas (par exemple après avoir effectué la [[Mise à jour|mise à jour]] d'une version très ancienne de Moodle), la séquence des données cours / section / module peut être dé-synchronisée. Cette situation peut générer divers problèmes pour les cours touchés, tels que des sections qui n'apparaissent pas, des sauvegardes qui échouent, des pages qui ne s'affichent pas, etc. Un script est disponible pour vérifier l'existence de ce problème et réparer les données dans la base de données, le cas échéant. Pour lancer ce script, on utilisera la commande suivante :
  php admin/cli/fix_course_sequence.php -c=* --fix
Cette commande vérifiera chaque cours de la plateforme Moodle et annoncera ceux qui avaient une erreur et ont été corrigés.
==Réparer les catégories de question orphelines==
Lorsqu'un test est créé, une nouvelle catégorie de question est automatiquement créée pour le test.
Avant Moodle 2.9.1, si le test était supprimé, la catégorie de question et les questions qu'elle contenait restaient dans la base de données interne de Moodle.
Ces catégories de questions orphelines peuvent être trouvées avec admin/cli/fix_orphaned_question_categories.php, et corrigées avec la commande suivante :
  php admin/cli/fix_orphaned_question_categories.php --fix
==Chercher et remplacer du texte==
Ce script peut être utilisé pour chercher et remplacer du texte dans toute la base de données. Attention : à utiliser prudemment, et après une sauvegarde complète ! Plus d'informations dans [[Recherche et remplacement]].
  php admin/tool/replace/cli/replace.php --search=//ancienserveur.anciendomaine.fr --replace=//nouveauserveur.nouveaudomaine.fr
==Construire le cache CSS du thème==
If Moodle is not running in theme designer mode it will keep a copy of the compiled CSS on local disk and serve that to the browser when it requests a page. If there isn't a copy on local disk then a copy will be built the first time a page within Moodle is requested.  


    $ sudo -u apache /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB
With this script you can pre-compile the cached CSS files for themes within Moodle to avoid having a user wait for the theme to compile during the first page request.
  php admin/cli/build_theme_css.php --themes=boost
== Afficher et modifier des valeurs de configuration==
Displays the current value of the given setting, or set the given setting to the specified value.
$ php admin/cli/cfg.php [--component=<componentname>] [--json] [--shell-arg]
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] [--shell-arg] [--no-eol]
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] --set=<value>
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] --unset
$ php admin/cli/cfg.php [--help|-h]
Examples:
$ php admin/cli/cfg.php --name=langmenu
will display the value of ''Display language menu'' in ''Site administration > Language > Language settings'' (0 for ''No'' or 1 for ''Yes'').
$ php cfg.php --name=maxsizetodownload --component=folder
will display the value of ''Maximum folder download size (MB)'' accessible from ''Site administration > Plugins > Activity modules > Folder''.
$ php admin/cli/cfg.php --name=langmenu --set=0
will disable the ''Language menu''.
==E-mail flag for users==
'''New in 4.2'''
The CLI script to change the email flag for one or many users at a time can be found on the page [[E-Mail flag for users]]
==Gérer les plugins en ligne de commande==
===Lister et désinstaller des plugins Moodle===
Moodle includes a handy command-line tool to display a list of plugins and remove plugins.
$ php admin/cli/uninstall_plugins.php
This command line tool accepts the following arguments.


== Exécution du cron en ligne de commande ==
Options:
    -h --help                   Print this help.
    --show-all                  Displays a list of all installed plugins.
    --show-contrib              Displays a list of all third-party installed plugins.
    --show-missing              Displays a list of plugins missing from disk.
    --purge-missing             Uninstall all missing from disk plugins.
    --plugins=<plugin name>     A comma separated list of plugins to be uninstalled. E.g. mod_assign,mod_forum
    --run                       Execute uninstall. If this option is not set, then the script will be run in a dry mode.
    --showsql                   Show sql queries before they are executed.
    --showdebugging             Show developer level debugging information.
Dry Mode does everything the script would normally do except for actually making any changes. This is useful when you want to test the validity of your command.


Dans les versions 1.x, vous pouviez exécuter admin/cron.php soit depuis la ligne de commande, soit depuis le web. Depuis Moodle 2.0, seul le script admin/cli/cron.php peut être exécuté via la ligne de commande.
Run this command from the Moodle wwwroot directory. Here are some examples:
    # php admin/cli/uninstall_plugins.php  --show-all
        Prints tab-separated list of all installed plugins.
    # php admin/cli/uninstall_plugins.php  --show-contrib
        Prints tab-separated list of all third-party installed plugins.
    # php admin/cli/uninstall_plugins.php  --show-missing
<blockquote>        Prints tab-separated list of all missing from disk plugins.</blockquote>
    # php admin/cli/uninstall_plugins.php  --purge-missing
        A dry run of uninstalling all missing plugins. This will NOT uninstall the plugin. To actually uninstall, you need to add the '--run' arguments.
    # php admin/cli/uninstall_plugins.php  --purge-missing --run
        Run uninstall of all missing plugins.
    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum
        A dry run of uninstalling mod_assign and mod_forum plugins. This will NOT uninstall the plugin. To actually uninstall, you need to add the '--run' arguments.
    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum --run
        Run uninstall for mod_assign and mod_forum plugins.


[[en:Administration via command line]]
This tool does not perform all of the steps needed to fully uninstall a plugin. You must then:
*Remove the files belonging to the plugin manually;
*[https://docs.moodle.org/en/Administration%20via%20command%20line#Upgrading Update the Moodle database] as previously described.
If you skip one or both of these steps, you will be prompted to update the Moodle database or re-install the plugin the next time you log in as a site administrator and access the Site Administration > Notifications page.
==Voir aussi==
*MDL-35736 - Manage plugins via command line
*MDL-36237 - Resort course list via CLI
*[http://moosh-online.com/ MOOSH] - MOOdle SHell. C'est un outil en ligne de commande permettant d'effectuer plusieurs tâches communes sur Moodle.
[[https://docs.moodle.org/de/Administration über Kommandozeile]]
[[https://docs.moodle.org/en/Administration via command line]]
[[https://docs.moodle.org/ja/コマンドライン経由の管理]]
[[https://docs.moodle.org/es/Administración por línea de comando]]

Dernière version du 9 novembre 2023 à 17:07

Remarque : la traduction de cette page n'est pas terminée. N'hésitez pas à traduire tout ou partie de cette page ou à la compléter. Vous pouvez aussi utiliser la page de discussion pour vos recommandations et suggestions d'améliorations.

Lancer des scripts en ligne de commande

Si vous avez accès en ligne de commande à votre serveur web, différents scripts pourront vous être utiles pour l'administration de Moodle. Les outils d'administration générale sont situés dans le dossier admin/cli/* (CLI = command line interface). Certains plugins peuvent fournir leurs propres outils en ligne de commande via des scripts situés dans leur propre dossier cli. Par exemple, le script de synchronisation d'inscription par base de donnée enrol_db est situé dans enrol/db/cli/.

Pour éviter des problèmes de contrôle d'accès, ces scripts doivent être lancés sous le nom de l'utilisateur possesseur du processus du serveur web (apache, www-data, wwrun, httpd, etc.). Ceci est particulièrement important pour les tâches d'installation et de mise à jour en ligne de commande, puisque durant ces tâches des fichiers sont créés dans le dossier de données moodledata et que le serveur web doit y avoir accès en écriture. Si vous êtes connecté en tant que root, vous lancerez donc les scripts ainsi :

   $ cd /chemin/vers/votre/dossier/moodle
   $ sudo -u apache /usr/bin/php admin/cli/nom_script.php --parametres

La plupart des scripts acceptent la paramètre standard --help (ou -h) pour afficher l'aide sur l'utilisation du script, par exemple :

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

Mise à jour

Moodle peut être mis à jour en ligne de commande. Tout comme pour le script d'installation, il y a pour la mise à jour un mode interactif et un mode non-interactif. Le script ne met pas le site en mode de maintenance. Vous devrez le faire vous-même (en ligne de commande, par exemple). En outre, le script n'effectue aucune sauvegarde (mais si vous lisez cette page, vous avez certainement mis en place vos propres scripts de sauvegarde de moodledata et de la base de données, n'est-ce-pas ?). La commande est la suivante :

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

La mise à jour en CLI est très confortable, notamment en combinaison avec l'utilisation de Git pour télécharger le code source de Moodle (voir Git pour administrateurs). La procédure ci-dessous montre comment mettre à jour votre site en quelques secondes, tout en préservant vos éventuelles personnalisations locales :

   $ 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

Installation

Moodle peut-être installé en ligne de commande de deux façons différentes. En mode interactif, le script d'installation vous demandera toutes les données nécessaires afin de procéder à l'installation correctement. En mode non-interactif, vous devez fournir toutes les données nécessaires comme paramètres du script et le nouveau site sera créé automatiquement. Les paramètres peuvent également être passés en mode interactif ; ils seront dans ce cas utilisés comme valeur par défaut durant la session interactive.

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

Si vos arguments contiennent des caractères spéciaux pour les systèmes basés sur Linux, n'oubliez pas de les échapper avec une barre oblique inverse. Par exemple, si vous voulez créer un administrateur avec pa$sword comme mot de passe, vous devez écrire pa\$sword à la place !

Si nécessaire, l'installation de la base de données peut être ignorée, avec seulement le fichier config.php renseigné.

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

Mode de maintenance

Pour mettre votre site en mode de maintenance, vous pouvez utiliser :

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

Pour désactiver la maintenance, il suffit d'utiliser plutôt le paramètre --disable

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

Si vous ne souhaitez pas activer le mode maintenance immédiatement, mais afficher un compte à rebours à vos utilisateurs, exécutez le même script avec le paramètre --enablelater et le nombre de minutes pendant lesquelles le compte à rebours doit s'exécuter :

   $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enablelater=10

Mode hors ligne

Dans certaines situations, vous aurez besoin de mettre votre site Moodle hors ligne en le rendant inaccessible, tout en conservant certaines fonctionnalités, par exemple parce que d'autres pages ou applications web y tournent. Si un fichier du nom de climaintenance.html est placé dans le dossier moodledata tout en haut de la hiérarchie, Moodle affichera automatiquement le contenu de ce fichier au lieu de toute autre page.

   $ cd /var/www/sites/moodle/moodledata/
   $ echo '<h1>Désolé, le site Moodle est actuellement en maintenance</h1>' > climaintenance.html

Vous pouvez préparer une page HTML avec votre charte graphique pour informer vos utilisateurs que le serveur est temporairement inaccessible et conserver ce fichier dans le dossier moodledata sous un nom comme climaintenance.off et le renommer en climaintenance.html au besoin.

Personnalisation des valeurs par défaut

Durant l'installation ou la mise à jour en ligne de commande, Moodle définit des variables d'administration à leur valeur par défaut. Vous pouvez définir d'autres valeurs par défaut. Voyez [https://tracker.moodle.org/browse/MDL-17850 MDL-17850] pour des détails. En résumé, il suffit de créer un fichier local/defaults.php dans votre installation Moodle. Le format de ce fichier est le suivant :

   <?php
   $defaults['pluginname']['settingname'] = 'settingvalue'; // pour les plugins
   $defaults['moodle']['settingname'] = 'settingvalue'; // pour les paramètres du cœur de Moodle

Ces valeurs par défaut sont utilisées lors de l'installation, de la mise à jour, et sont en outre affichées comme valeur par défaut dans les pages d'administration du site.

Réinitialisation du mot de passe

Si vous avez perdu votre mot de passe administrateur (ou souhaitez définir le mot de passe d'un autre utilisateur), vous pouvez utiliser le script reset_password.php. Ce script définit le mot de passe de l'utilisateur spécifié, en tenant compte correctement du sel de mot de passe.

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

Conversion des tables InnoDB au format Barracuda

Les versions plus récentes de MySQL et MariaDB disposent d'un format de fichier amélioré appelé Barracuda. Pour en tirer parti :

  1. Assurez-vous que votre version de MySQL/MariaDB utilise Barracuda avec le préfixe de clé d'indexation large (innodb_large_prefix). Voir ci-dessous pour plus de détails.
  2. Passage au format de ligne compressé (voir Conversion des tables au format compressed row)
  3. Modifier le jeu de caractères et la collation pour une prise en charge complète d'Unicode (voir Conversion du jeu de caractères et de la collation).

Si vous avez MySQL 8.0.0 ou une version ultérieure, ou MariaDB 10.3.0 ou une version ultérieure, ces versions ne supportent Barracuda qu'avec le préfixe de clé d'indexation large (innodb_large_prefix). Pour les versions antérieures, pour vérifier si MySQL/MariaDB utilise Barracuda, exécutez l'instruction suivante dans le client MySQL/MariaDB ou dans l'onglet SQL de phpMyAdmin :

   SHOW GLOBAL VARIABLES WHERE variable_name IN ('innodb_file_format', 'innodb_large_prefix', 'innodb_file_per_table');

Si vos paramètres ne correspondent à aucun des tableaux ci-dessous, consultez la section Configurer le support UTF-8 complet pour savoir comment modifier ces paramètres :

phpMyAdmin.png ou phpMyAdmin2.png ou WilJbrTlL4.png

Si vos paramètres correspondent à l'une de ces tables, MySQL/MariaDB utilise Barracuda avec le préfixe de clé d'indexation large.

Conversion des tables au format compressed row

Ce script permet de modifier les tables contenant de nombreuses colonnes de texte afin d'utiliser ROW_FORMAT=COMPRESSED. Ce changement n'est pas obligatoire mais il est recommandé. Si l'erreur de base de données Row size too large (> 8126) survient lors de l'utilisation de Moodle, exécutez ce script pour la corriger.

Note : Si vous avez MariaDB version 10.6.0 à 10.6.6 ou version 10.7.0 à 10.7.2 vous devez mettre à jour vers une version plus récente avant d'exécuter ce script. Voir [https://tracker.moodle.org/browse/MDL-72131 MDL-72131] pour plus de détails.

Pour afficher les tableaux nécessitant une conversion, utilisez l'option --list :

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

Voici un exemple de résultat :

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

Pour procéder à la conversion, exécutez la commande en utilisant l'option fix :

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

La conversion réussie de tables sera indiquée en réponse, par exemple :

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

Si vous obtenez des erreurs parce que vous n'avez pas les privilèges suffisants pour exécuter ces commandes, utilisez --showsql pour générer les commandes SQL nécessaires :

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

Vous pouvez ensuite copier le code SQL généré dans votre client MySQL/MariaDB en utilisant l'utilisateur "root".

Conversion du jeu de caractères et de la collation

Ce script modifie les tables de la base de données Moodle pour permettre le support complet de l'Unicode.

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

Après avoir effectué cette modification, éditez config.php et remplacez 'dbcollation' par 'utf8mb4_unicode_ci' dans $CFG->dboptions.

Pour plus de détails, voir : MySQL full unicode support

Exécution du cron en ligne de commande

Dans les versions 1.x, on pouvait lancer le script admin/cron.php soit en ligne de commande, soit depuis le web. Depuis Moodle 2.0, seul le script admin/cli/cron.php peut être lancé via la ligne de commande.

Tâches programmées

Les tâches programmées sont lancées automatiquement par le script cron. Celles qui sont lancées lors de chaque lancement du cron sont déterminées par la configuration de chaque tâche programmée. Il est possible de court-circuiter cette configuration et de lancer une tâche programmée immédiatement à l'aide du script admin/tool/task/cli/schedule_task.php.

Ce script accepte les paramètres suivants :

--list - donne la liste de toutes les tâches programmées. Ces tâches sont classées par nom de la classe utilisée pour lancer la tâche. Ce nom de classe est requis comme paramètre de l'option ci-dessous, pour pouvoir lancer immédiatement une tâche spécifique.
--execute=<tâche> - lance immédiatement une tâche programmée, sans tenir compte de sa programmation, y compris les tâches désactivées. Les tâches utiliseront le système de verrouillage pour éviter des lancements simultanés d'une même tâche, y compris sur des installations en cluster. Le format du paramètre <tâche> doit être identique à celui de la sortie de la commande avec l'option --list (voir ci-dessus).
--showsql - Affiche les requêtes SQL avant de les exécuter
--showdebugging - Affiche les informations de débogage de niveau développeur


Remarque. Le caractère "\" doit être échappé avec un deuxième caractère \ lors de l'utilisation de l'option --execute. Par exemple :

php admin/tool/task/cli/schedule_task.php --list

donnera la sortie suivante :

== List of scheduled tasks (http://yourserver.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

...

Pour lancer immédiatement la première des tâches de la liste, on lancerait la commande

php admin/tool/task/cli/schedule_task.php --execute=\\enrol_imsenterprise\\task\\cron_task

Transfert de la base de données

Un script CLI pour transférer votre base de données (par exemple de MySQL à PostgreSQL) se trouve dans admin/tool/dbtransfer/cli/migrate.php.

Purger les caches

Vous pouvez purger les caches en utilisant ce script :

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

Nouveauté
Moodle
3.4

Supprimer toutes les sessions

Si nécessaire, pour des raisons administratives, vous pouvez supprimer toutes les sessions utilisateur avec ce script :

php admin/cli/kill_all_sessions.php

Du coup, tous les utilisateurs seront déconnectés de Moodle.

Réparer les séquences cours / module

Dans de rares cas (par exemple après avoir effectué la mise à jour d'une version très ancienne de Moodle), la séquence des données cours / section / module peut être dé-synchronisée. Cette situation peut générer divers problèmes pour les cours touchés, tels que des sections qui n'apparaissent pas, des sauvegardes qui échouent, des pages qui ne s'affichent pas, etc. Un script est disponible pour vérifier l'existence de ce problème et réparer les données dans la base de données, le cas échéant. Pour lancer ce script, on utilisera la commande suivante :

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

Cette commande vérifiera chaque cours de la plateforme Moodle et annoncera ceux qui avaient une erreur et ont été corrigés.

Réparer les catégories de question orphelines

Lorsqu'un test est créé, une nouvelle catégorie de question est automatiquement créée pour le test. Avant Moodle 2.9.1, si le test était supprimé, la catégorie de question et les questions qu'elle contenait restaient dans la base de données interne de Moodle. Ces catégories de questions orphelines peuvent être trouvées avec admin/cli/fix_orphaned_question_categories.php, et corrigées avec la commande suivante :

 php admin/cli/fix_orphaned_question_categories.php --fix

Chercher et remplacer du texte

Ce script peut être utilisé pour chercher et remplacer du texte dans toute la base de données. Attention : à utiliser prudemment, et après une sauvegarde complète ! Plus d'informations dans Recherche et remplacement.

 php admin/tool/replace/cli/replace.php --search=//ancienserveur.anciendomaine.fr --replace=//nouveauserveur.nouveaudomaine.fr

Construire le cache CSS du thème

If Moodle is not running in theme designer mode it will keep a copy of the compiled CSS on local disk and serve that to the browser when it requests a page. If there isn't a copy on local disk then a copy will be built the first time a page within Moodle is requested.

With this script you can pre-compile the cached CSS files for themes within Moodle to avoid having a user wait for the theme to compile during the first page request.

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

Afficher et modifier des valeurs de configuration

Displays the current value of the given setting, or set the given setting to the specified value.

$ php admin/cli/cfg.php [--component=<componentname>] [--json] [--shell-arg]
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] [--shell-arg] [--no-eol]
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] --set=<value>
$ php admin/cli/cfg.php --name=<configname> [--component=<componentname>] --unset
$ php admin/cli/cfg.php [--help|-h]

Examples:

$ php admin/cli/cfg.php --name=langmenu

will display the value of Display language menu in Site administration > Language > Language settings (0 for No or 1 for Yes).

$ php cfg.php --name=maxsizetodownload --component=folder

will display the value of Maximum folder download size (MB) accessible from Site administration > Plugins > Activity modules > Folder.

$ php admin/cli/cfg.php --name=langmenu --set=0

will disable the Language menu.

E-mail flag for users

New in 4.2 The CLI script to change the email flag for one or many users at a time can be found on the page E-Mail flag for users

Gérer les plugins en ligne de commande

Lister et désinstaller des plugins Moodle

Moodle includes a handy command-line tool to display a list of plugins and remove plugins.

$ php admin/cli/uninstall_plugins.php

This command line tool accepts the following arguments.

Options:

    -h --help                   Print this help.
    --show-all                  Displays a list of all installed plugins.
    --show-contrib              Displays a list of all third-party installed plugins.
    --show-missing              Displays a list of plugins missing from disk.
    --purge-missing             Uninstall all missing from disk plugins.
    --plugins=<plugin name>     A comma separated list of plugins to be uninstalled. E.g. mod_assign,mod_forum
    --run                       Execute uninstall. If this option is not set, then the script will be run in a dry mode.
    --showsql                   Show sql queries before they are executed.
    --showdebugging             Show developer level debugging information.

Dry Mode does everything the script would normally do except for actually making any changes. This is useful when you want to test the validity of your command.

Run this command from the Moodle wwwroot directory. Here are some examples:

    # php admin/cli/uninstall_plugins.php  --show-all

        Prints tab-separated list of all installed plugins.

    # php admin/cli/uninstall_plugins.php  --show-contrib

        Prints tab-separated list of all third-party installed plugins.

    # php admin/cli/uninstall_plugins.php  --show-missing

        Prints tab-separated list of all missing from disk plugins.

    # php admin/cli/uninstall_plugins.php  --purge-missing

        A dry run of uninstalling all missing plugins. This will NOT uninstall the plugin. To actually uninstall, you need to add the '--run' arguments.

    # php admin/cli/uninstall_plugins.php  --purge-missing --run

        Run uninstall of all missing plugins.

    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum

        A dry run of uninstalling mod_assign and mod_forum plugins. This will NOT uninstall the plugin. To actually uninstall, you need to add the '--run' arguments.

    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum --run

        Run uninstall for mod_assign and mod_forum plugins.

This tool does not perform all of the steps needed to fully uninstall a plugin. You must then:

If you skip one or both of these steps, you will be prompted to update the Moodle database or re-install the plugin the next time you log in as a site administrator and access the Site Administration > Notifications page.

Voir aussi

  • MDL-35736 - Manage plugins via command line
  • MDL-36237 - Resort course list via CLI
  • MOOSH - MOOdle SHell. C'est un outil en ligne de commande permettant d'effectuer plusieurs tâches communes sur Moodle.

[über Kommandozeile] [via command line] [[1]] [por línea de comando]