コマンドラインによる管理

提供:MoodleDocs
移動先:案内検索


CLIスクリプトの実行

Webサーバへのシェルアクセスがある場合、Moodleの管理中にさまざまなCLI(コマンドラインインターフェース)スクリプトが役立つ場合があります。コア管理CLIツールはadmin/cli/*フォルダにあります。他のプラグインは、独自のcliフォルダ内のスクリプトを介してCLI機能を提供します。たとえば、enrol_db同期スクリプトはenrol/db/cli/にあります。

アクセス制御の問題を回避するには、Webサーバプロセスの所有者としてそれらを実行する必要があります。 CLIのインストールとアップグレードでは、moodledataディレクトリに新しいファイルが作成され、Webサーバがそれらに書き込みアクセスできる必要があるため、特に重要です。 Linuxディストリビューションでは、Webサーバを実行するユーザは通常、apache、wwrun、httpdなどです。ルートとして、あなたはおそらく次のようなMoodleCLIスクリプトを実行したいと思うでしょう:

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

ほとんどのスクリプトは、共通の--help(または-h)パラメータを受け入れて、完全な使用法情報を表示します。次に例を示します。

   $ sudo -u apache /usr/bin/php admin/cli/install.php --help
注意: これらのスクリプトは、WebサーバユーザのIDで実行されることになっています。このページの例では、説明のためにapacheユーザを使用しています。特定の値は、OSのディストリビューションとローカルセットアップによって異なります。一般的な値は apachewww-dataまたはhttpdです。

アップグレード

Moodleはコマンドラインからアップグレードできます。インストールスクリプトと同様に、アップグレードには対話型モードまたは非対話型モードのいずれかがあります。スクリプト自体はサイトをメンテナンスモードにしません。自分で行う必要があります。また、スクリプトはデータをバックアップしません(このページを読んだ場合、おそらくmoodledataとデータベースをバックアップするための独自のスクリプトがいくつかありますよね?)

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

MoodleソースコードのGitチェックアウトを使用する場合、コマンドラインからのアップグレードはMoodleアップグレードの非常に快適な方法です(管理者用Gitを参照)。 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

インストール

コマンドラインからMoodleをインストールする方法は2つあります。インタラクティブモードでは、インストールスクリプトは新しいMoodleサイトを適切にセットアップするために必要なすべてのデータを要求します。非対話型モードでは、必要なすべてのデータをスクリプトパラメータとして指定する必要があります。そうすると、新しいサイトがサイレントインストールされます。パラメータは、インタラクティブモードでも渡すことができます。提供された値は、対話型セッション中にデフォルト値として使用されます。

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

必要に応じて、config.phpを入力するだけで、データベースのインストールをスキップできます。

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

メンテナンスモード

CLIを介してサイトをメンテナンスモードに切り替えるには、次を使用できます。

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

メンテナンスモードをオフにするには、-disableパラメータを指定して同じスクリプトを実行します。

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

メンテナンスモードをすぐに有効にしたくないが、ユーザにカウントダウンを表示する場合は、-enablelaterパラメータとカウントダウンを実行する分数を指定して同じスクリプトを実行します。

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

このスクリプトは、オフライン モードのclimaintenance.htmlファイルも作成および削除します。

オフラインモード

状況によっては、Moodleサイトをオフラインモードに切り替えて、Web経由でアクセスできないようにしたい場合がありますが、Webサーバを完全に停止することはできません(通常、他のWebページやアプリケーションが実行されているため)。 climaintenance.htmlというファイルがmoodledataディレクトリのルートフォルダに存在する場合、Moodleは他のページの代わりにそのファイルの内容を自動的に表示します。

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

あなたは停止しているサーバについてユーザに通知するための適切な形式のHTMLページを準備し、moodledataディレクトリにclimaintenance.offのような名前で保持し、必要に応じて名前をclimaintenance.htmlに変更できます。

カスタムサイトのデフォルト

CLIを介したインストールおよびアップグレード中にMoodleは管理変数をデフォルト値に設定します。さまざまなデフォルトを使用できます。詳細についてはMDL-17850を参照してください。間もなく、あなたがする必要があるのはファイルlocal/defaults.phpをMoodleインストールに追加することです。ファイルのフォーマットは以下のようになります:

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

これらのデフォルトはインストール、アップグレード中に使用され、サイト管理ページにもデフォルトとして表示されます。

ユーザパスワードをリセットする

管理者パスワードを忘れた場合(またはサイト上の他のユーザのパスワードを設定したい場合)はreset_password.phpスクリプトを使用できます。スクリプトは指定されたユーザに正しくソルトされたパスワードを設定します。

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

InnoDBからBarracudaに変換する

MySQLおよびMariaDBの新しいバージョンにはBarracudaと呼ばれる改良されたファイルフォーマットがあります。これを利用するには:

  1. あなたのMySQL/MariaDBのバージョンがラージインデックスキープレフィックス(innodb_large_prefix)でBarracudaを使用していることを確認してください。詳細は以下をご覧ください。
  2. 圧縮行フォーマットに変更してください (詳細は #テーブルを圧縮行フォーマットに変更するをご覧ください)。
  3. Unicodeを完全にサポートするために文字セットおよび照合順序を変更してください 詳細は ( #文字セットおよび照合順序を変換するをご覧ください)。

あなたがMySQL 8.0.0以降、またはMariaDB 10.3.0以降を使用している場合、これらのバージョンはラージインデックスキープレフィックスのBarracudaのみをサポートしています。それ以前のバージョンでMySQL/MariaDBがBarracudaを使用しているか確認するには、MySQL/MariaDBクライアントまたはphpMyAdminのSQLタブで以下のステートメントを実行してください:

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

あなたの設定が以下の表のいずれにも一致しない場合、MySQL#フルUTF-8サポートを設定するを参考に設定を変更してください:

innodb_file_format=Barracuda;innodb_file_per_table=ON;innodb_large_prefix=ON or innodb_file_format=(blank);innodb_file_per_table=ON;innodb_large_prefix=(blank) or innodb_file_per_table=ON

あなたの設定がこれらのテーブルに一致する場合、MySQL/MariaDBはラージインデックスキープレフィックスでBarracudaを使用しています。

テーブルを圧縮行フォーマットに変更する

このスクリプトは多数のテキスト列を持つテーブルでROW_FORMAT=COMPRESSEDを使用するよう変更します。この変更は必須ではありませんが推奨します。もし、Moodleを使用中にデータベースエラー (Row size too large (> 8126)) が発生した場合、このスクリプトを実行して修正してください。

注意: あなたがMariaDBバージョン10.6.0から10.6.6、またはバージョン10.7.0から10.7.2を使用している場合、このスクリプトを実行する前にそれ以降のバージョンにアップグレードする必要があります。詳細はMDL-72131をご覧ください。

変換が必要なテーブルを表示するには「--list」オプションを使用してください:

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

以下、出力例です:

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

変換を進めるには以下のように「fix」オプションを使用してコマンドを実行してください:

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

テーブル変換に成功した場合、例えば次のように出力されます:

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

これらのコマンドを実行するのに十分な権限がないためにエラーが発生した場合、「--showsql」オプションを使用して必要なSQLコマンドを生成してください:

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

そして、あなたは生成されたSQLを「root」ユーザとして動作しているMySQL/MariaDBクライアントにコピーできます。

文字セットおよび照合順序を変換する

このスクリプトはMoodleデータベーステーブルを変更してUnicode完全サポートを有効にします。

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

このスクリプトによる変更後、config.phpを編集して$CFG->dboptions配列の「dbcollation」を「utf8mb4_unicode_ci」に変更してください。

詳細は次をご覧ください: MySQLのフルUnicodeサポート

コマンドライン経由でcronを動作させる

あなたはバージョン1.xではコマンドラインまたはウェブ経由でadmin/cron.phpを実行できました。Moodle 2.0以降、admin/cli/cron.phpスクリプトのみコマンドラインから実行できます。

スケジュールタスク

スケジュールタスクはcronスクリプトで自動実行されますが、それぞれのcron反復で実行される特定のタスクはスケジュールされたタスク設定で決定されます。admin/cli/scheduled_task.phpスクリプトの使用でスケジュールタスク設定の上書きおよびスケジュールタスクの即時実行が可能です。

このスクリプトは以下の引数を受け付けます:

--list - 既知のスケジュールタスクすべてを一覧表示します。タスクはタスクの実行に使用されるクラス名で一覧表示されます。このクラス名は特定のタスクをすぐに実行するために次のオプションの引数として必要です。
--execute=<task> - スケジュール設定に関係なく、単一のスケジュールタスクを直ちに実行します。ここでは無効化されたタスクも実行します。タスクはクラスタ上であっても、同じタスクの同時実行を防ぐためにロックを使用します。<task>引数のフォーマットは上の「-list」オプションが返すものと同じにする必要があります。
 --disable=<task> - 単一のスケジュールタスクを無効にします (4.3以降の新機能)。<task>引数のフォーマットは上の「--list」オプションが返すものと同じにする必要があります。
--enable=<task> - 単一のスケジュールタスクを有効にします (4.3以降の新機能)。<task>引数のフォーマットは上の「--list」オプションが返すものと同じにする必要があります。
--showsql -  実行前にSQLクエリを表示します。

--showdebugging - 開発者のためのデバッグ情報を表示します。

'注意: あなたが'--executeコマンドを使用する場合、「\」を「\」でエスケープする必要があります。例えば次のようになります:

php admin/cli/scheduled_task.php --list

そして、以下のような結果が表示されます:

== スケジュールタスク一覧  (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

...

リストの最初のタスクを実行するには次のように実行してください:

php admin/cli/scheduled_task.php --execute='\enrol_imsenterprise\task\cron_task'

一重引用符に注意してください。これがない場合、あなたはシェルによるエスケープを避ける目的で二重引用符を使う必要があります。

アドホックタスク

[ [Cron#低遅延アドホックタスク|アドホックタスク]]は通常cronによって実行される低レイテンシのタスクです。admin/cli/adhoc_task.phpでキューに入れられたアドホックタスクだけを実行できます。

このスクリプトは以下のオプションおよび引数を受け付けます:

 -h, --help                このヘルプを表示します。
     --showsql             実行される前にSQLクエリを表示します。
     --showdebugging       開発者レベルのデバッグ情報を表示します。
 -e, --execute             キューに入れられたすべてのアドホックタスクを実行します。
 -k, --keep-alive=N        このスクリプトをN秒間継続して、新しいアドホックタスクをポーリングします。
 -i  --ignorelimits        task_adhoc_concurrency_limitおよびtask_adhoc_max_runtimeの制限を無視します。
 -f, --force               cronが無効にされている場合でも実行します。

例えば以下のようなコマンドで現在キューに入れられているアドホックタスクを実行できます:

sudo -u apache php admin/cli/adhoc_task.php -e

アドホックタスクの改善に関してスケジュールタスク#アドホックタスクもご覧ください。

データベース転送

データベース転送のコマンドラインスクリプトは「admin/tool/dbtransfer/cli/migrate.php」にあります。

キャッシュを削除する

あなたは以下のスクリプトでキャッシュを削除できます:

 php admin/cli/purge_caches.php

すべてのセッションを終了させる

管理上の理由で必要な場合、あなたはこのスクリプトを使用してすべてのユーザセッションを強制終了できます:

php admin/cli/kill_all_sessions.php

結果として、すべてのユーザがMoodleからログアウトされます。

規模の大きなコースをバックアップおよびリストアする

コースバックアップのCLIによるバックアップおよびコースリストアのCLIによるリストアをご覧ください (3.10以降の新機能)。

コース/モジュールの順序を修正する

まれに (非常に古いバージョンのMoodleからアップグレードした場合等)、コース / セクション / モジュールのシーケンスデータが同期されない場合があります。 これにより「セクションが表示されない」「バックアップが失敗する」「ページが表示されない」等の影響を受けるコースにさまざまな問題が発生する可能性があります。この問題に起因するエラーをチェックおよび発見時にデータベースのデータを修正する特定のチェックスクリプトがあります。このスクリプトを実行するには以下のコマンドを使用してください:

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

これはMoodleのすべてのコースをチェックして、どのコースにエラーがあり、修正されたかを報告します。

迷子の問題カテゴリを修正する

小テストが作成された場合、小テストの新しい問題カテゴリも自動的に作成されます2.9.1より前のバージョンのMoodleでは小テストが削除された場合に問題カテゴリおよびカテゴリ内の問題はデータベース内に残されます。これらの迷子の質問カテゴリはadmin/cli/fix_orphaned_question_categories.phpスクリプトの-fixオプションをつけた実行で修正できます。

テキストを検索および置換する

このスクリプトはデータベース全体のテキストを検索および置換するために使用できます。注意深く使用して常にバックアップを取ってください。詳細は検索および置換ツールをご覧ください。

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

テーマCSSキャッシュを構築する

Moodleがテーマデザイナモードで動作していない場合、コンパイルされたCSSのコピーをローカルディスクに保持します。そしてブラウザがページを要求する時点でそのコピーを提供します。ローカルディスクにコピーがない場合、Moodle内のページが最初にリクエストされた時点でコピーが作成されます。

このスクリプトを使用することで、ユーザが最初のページリクエスト中にテーマのコンパイル待ちを避けるため、あなたはMoodle内のテーマにキャッシュされたCSSファイルを事前にコンパイルできます。

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

設定値を取得および設定する

指定された設定の現在値を表示するか、指定された設定を指定された値で設定します。

$ 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]

例:

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

これは「サイト管理 > 言語 > 言語設定」の「言語メニューを表示する」の値を表示します(0=「いいえ」、1=「はい」)。

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

これは「サイト管理 > プラグイン > アクティビティモジュール > フォルダ」からアクセスできる「最大フォルダダウンロードサイズ(MB)」の値を表示します。

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

これは「言語メニュー」を無効にします。

ユーザのメールフラグ

New in 4.2 '4.2新機能 一度に1人または複数のユーザのメールフラグを変更するCLIスクリプトはページユーザのメールフラグにあります。

ダッシュボードリセット

If you make changes to the dashboard and want all users to have their dashboard reset to reflect the changes this can be done on the cli: あなたがダッシュボードに加えた変更を反映させるためにすべてのユーザのダッシュボードをリセットしたい場合、cli上でリセットできます:

php admin/cli/dashboard_reset.php -e

コマンドライン経由でプラグインを管理する

Moodleプラグインを一覧表示およびアンインストールする

Moodleにはプラグインを一覧表示および削除する便利なコマンドラインツールがあります。

$ php admin/cli/uninstall_plugins.php

このコマンドラインツールは以下のオプションを使用できます。

オプション:

    -h --help                   このヘルプを表示します。
    --show-all                  すべてのインストール済みのプラグイン一覧を表示します。
    --show-contrib           インストール済みのサードパーティプラグイン一覧を表示します。
    --show-missing           ディスクにないプラグイン一覧を表示します。
    --purge-missing             ディスクにないプラグインをすべてアンインストールします。
    --plugins=<plugin name>     アンインストールするプラグインのカンマ区切りリストです。例) mod_assign,mod_forumA comma
    --run                       アンインストールを実行します。このオプションが設定されていない場合、スクリプトはドライモードで実行されます。
    --showsql                   実行前にSQLクエリを表示します。
    --showdebugging             開発者レベルのデバッグ情報を表示します。

ドライモードは実際に変更を加えることを除くスクリプトが通常実行するすべてのことを実施します。これはコマンドの有効性をテストしたい場合に便利です。

このコマンドをMoodle wwwrootディレクトリから実行してください。以下いくつかの例を示します:

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

       インストールされているすべてのプラグイン一覧をタブ区切りで表示します。

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

        インストールされているすべてのサードパーティプラグインの一覧をタブ区切りで表示します。

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

ディスクに存在しないプラグインの一覧をタブ区切りで表示します。

    # php admin/cli/uninstall_plugins.php  --purge-missing
        すべての不足しているプラグインをアンインストールするドライランです。これはプラグインをアンインストールしません。実際にアンインストールするには「--run」引数を追加する必要があります。
    # php admin/cli/uninstall_plugins.php  --purge-missing --run

        不足しているすべてのプラグインをアンインストールします。

    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum
     mod_assignおよびmod_forumプラグインをアンインストールするドライランです。これはプラグインをアンインストールしません。実際にアンインストールするには「--run」引数を追加する必要があります。
    # php admin/cli/uninstall_plugins.php  --plugins=mod_assign,mod_forum --run

        mod_assignおよびmod_forumプラグインのアンインストールを実行します。

このツールではプラグインを完全にアンインストールするために必要なすべての手順を実行するわけではありません。その場合、あなたは以下の手順が必要です:

これらのステップの1つまたは両方をスキップした場合、次回あなたがサイト管理者としてログインして、サイト管理 > 通知ページにアクセスしたときにMoodleデータベースの更新またはプラグインの再インストールを要求されます。

関連項目

  • MDL-35736 - コマンドラインからプラグインを管理する
  • MDL-36237 - CLIによるリゾートコースリスト
  • MOOSH - MOOdleシェル。これは、最も一般的なMoodleタスクを実行できるようにするコマンドラインツールです。