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

提供: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

MySQLストレージエンジンの変換

MySQLデータベースバックエンドでMoodleサイトを実行し、テーブルのストレージエンジンとしてデフォルトのMyISAMを使用する場合は、InnoDBなどのより信頼性の高いエンジンを使用するように変換することをお勧めします(実際には、PostgreSQLに切り替える必要があります;-)とにかく)。

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

InnoDBテーブルをBarracudaに変換する

ファイル形式としてAntelopeを使用するデータベーステーブルでMySQLを使用しているサイトでは、テーブルをBarracudaファイル形式に変換することをお勧めします。

これは、ファイル形式としてAntelopeを使用するテーブルは、10を超えるテキスト列を処理できないためです。このファイル形式は、下位互換性の理由から、 コンパクト および 冗長 行フォーマットのみをサポートします。これにより、コースをリストアするときに大規模なサイトで問題が発生する可能性があります。その場合、次のエラーが表示されます。

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

Barracudaは、最新のinnoDBファイル形式です。バラクーダは、コンパクト および冗長 行フォーマットをサポートすることに加えて、 圧縮 および 動的 行フォーマットもサポートします。

ただし、すべてのMySQLユーザが影響を受けるわけではないため、テーブルをBarracudaに変換することは推奨されるだけであり、必須ではありません。 (これは、大規模なサイトでのみ問題になる可能性があります。)

テーブルを変換するためのツール

テーブルをBarracudaに変換するためのコマンドラインツールがMoodleに含まれています。

変換が必要なテーブルを表示するには、リストオプションを使用します。

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

変換を続行するには、修正オプションを使用してコマンドを実行します。

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

成功したテーブル変換は、出力で報告されます。次に例を示します。

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

コマンドはmoodleディレクトリで実行する必要があることに注意してください。テーブルが修正されると、警告メッセージは表示されなくなります。

InnoDBファイル形式の詳細については、MySQL InnoDBグロッサリー-AntelopeおよびMySQL InnoDB用語集-バラクーダを参照してください。

これらのコマンドを実行するための十分なパーミッションがないためにエラーが発生した場合(これは非常に可能性が高いです)、最も簡単な解決策は、を使用して必要なSQLコマンドを生成することです。

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

次に、生成されたSQLを 'root' ユーザとして実行されているmysqlクライアントにコピーできます。

新しい文字セットと照合順序への変換

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

コマンドラインからcronを実行する

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

スケジュールされたタスク

スケジュールされたタスクはcronスクリプトによって自動的に実行されますが、各cron反復で実行される特定のタスクは、スケジュールされたタスクの構成によって決定されます。 admin/tool/task/cli/schedule_task.phpスクリプトを使用して、スケジュールされたタスクの構成を上書きし、単一のスケジュールされたタスクをすぐに実行することができます。

このスクリプトは、次の引数を受け入れます。

--list - list all the known scheduled tasks. The tasks are listed by the class name used to run the task. This class name is required as the argument to the next option in order to run a specific task immediately.
--execute=<task> - Runs a single scheduled task immediately - regardless of scheduling settings. This will even run disabled tasks. Tasks will still use locking to prevent concurrent execution of the same task - even on clusters. The format of the <task> argument must be the same as returned by the --list option above.
--showsql - Shows sql queries before they are execute
--showdebugging - Shows developer debugging info

注: --executeコマンドを使用する場合は、追加の\を使用して "\"をエスケープする必要があります。たとえば、次のようにします。

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

次のようなものが返されます:

== 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

...

そのリストの最初のタスクを実行するには、次を実行します

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

一重引用符に注意してください。それらがないと、シェルによるエスケープを回避するために、二重のバックラッシュを使用する必要があります。

データベース移行

データベース移行のコマンドラインスクリプトは、admin/tool/dbtransfer/cli/migrate.php です。

キャッシュを削除

次のスクリプトを使用して、キャッシュをパージできます。

 php admin/cli/purge_caches.php

すべてのセッションを強制終了します

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

php admin/cli/kill_all_sessions.php

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

コース/モジュールシーケンスの修正

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

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

これにより、Moodleのすべてのコースがチェックされ、エラーが発生して修正されたコースが報告されます。

孤立した問題カテゴリを修正

小テストが作成されると、小テストの新しい問題カテゴリが自動的に作成されます。 2.9.1より前のバージョンのMoodleでは、小テストが削除された場合、問題カテゴリとそのカテゴリ内の問題はデータベースに残ります。これらの孤立した問題カテゴリは、-fixオプションを指定してadmin/cli /fix_alone_question_categories.phpスクリプトを実行することで修正できます。

テキストの検索と置換

このスクリプトを使用して、データベース全体のテキストを検索および置換できます。慎重に使用し、常に最初にバックアップしてください。詳細については、検索および置換ツールをご覧ください。

 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]

関連項目

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