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

CLIスクリプトの実行

あなたのウェブサーバーへのシェルアクセスがある場合、あなたはMoodle管理の間に様々なCLI(コマンドラインインターフェース)スクリプトが役に立つかもしれません。コア管理CLIツールは次の場所にあります。
 admin / cli / * 
フォルダ。他のプラグインは、独自のcliフォルダー内のスクリプトを介してそれらのCLI機能を提供します。たとえば、enrol_db同期スクリプトは次の場所にあります。
 / db / cli /を登録

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

 $ cd / path / to /あなたの/ 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 for Administratorsを参照)。次の手順に従って、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  - 無効

インストール

コマンドラインから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パラメータを付けて同じスクリプトを実行するだけです。

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

オフラインモード

状況によっては、Moodleサイトをオフラインモードに切り替えて、ウェブ経由でアクセスできないようにしますが、ウェブサーバを完全に停止することはできません(他のウェブページやアプリケーションが実行されているため)。ファイルが呼び出された場合
 climaintenance.html 
moodledataディレクトリのルートフォルダに存在する場合、Moodleは他のページの代わりにそのファイルの内容を自動的に表示します。
 $ cd / var / www / sites / moodle / moodledata /
   $ echo '<h1>申し訳ありません、メンテナンス中</h1>'> climaintenance.html
あなたはサーバがダウンしていることをユーザに知らせるためにmoodledataディレクトリに次のような名前で保存するために素敵なフォーマットのHTMLページを用意することができます。
 climaintenance.off 
そしてそれを
 climaintenance.html 
必要に応じて。

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

CLIによるインストールとアップグレードの間、Moodleは管理変数をデフォルト値に設定します。異なるデフォルトを使用することができます。詳細はMDL-17850をご覧ください。まもなく、あなたがする必要があるのはファイルを追加することだけです
 local / defaults.php 
あなたのMoodleインストールに。ファイルの形式は次のとおりです
 <?php
$ defaults [ 'pluginname' ] [ 'settingname' ] = 'settingvalue' ; //プラグイン用
$ defaults [ 'moodle' ] [ 'settingname' ] = 'settingvalue' ; //コア設定用 

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

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

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

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

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

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

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

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

ファイル形式としてAntelopeを使用しているデータベーステーブルを持つMySQLを使用しているサイトは、Barracudaファイルフォーマットにテーブルを変換するために推奨されます。

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

行サイズが大きすぎます(> 8126)。一部の列をTEXTまたはBLOBに変更するか、ROW_FORMAT = DYNAMICまたはROW_FORMAT = COMPRESSEDを使用すると解決する場合があります。

Barracudaは最新のinnoDBファイルフォーマットです。 コンパクト冗長な行フォーマットのサポートに加えて、Barracudaは圧縮された動的な行フォーマットもサポートしています。

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

テーブル変換ツール

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

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

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

出力例はここにあります:

 mdl_dataコンパクト(修正が必要) 
mdl_data_fieldsコンパクト(修正が必要)
mdl_enrol_paypalコンパクト(修正が必要)

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

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

成功したテーブル変換は出力に報告されます。例えば:

 mdl_data ...圧縮
mdl_data_fields ...圧縮済み
mdl_enrol_paypal ...圧縮済み

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

InnoDBファイルフォーマットの詳細については、 MySQL InnoDB用語集 - AntelopeおよびMySQL InnoDB用語集 - Barracudaを参照してください。

これらのコマンドを実行するための十分な特権がないためにエラーが発生した場合(これはかなりの可能性があります)、最も簡単な解決策は、次のコマンドを使用して必要な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  - 既知のスケジュール済みタスクをすべて一覧表示します。タスクは、タスクの実行に使用されたクラス名別にリストされています。このクラス名は、特定のタスクをすぐに実行するために次のオプションへの引数として必要です。
 --execute = <タスク>  - スケジュール設定に関係なく、スケジュールされた単一タスクをただちに実行します。これは無効なタスクも実行します。クラスタでも、タスクはロックを使用して同じタスクの同時実行を防ぎます。 <task>引数の形式は、上記の--listオプションによって返されるものと同じである必要があります。
 --showsql  -  SQLクエリを実行前に表示します
 --showdebugging  - 開発者のデバッグ情報を表示します

注:-- executeコマンドを使用するときは、 "\"を余分な\でエスケープする必要があります。例えば以下のようにします。

 php schedule_task.php --list 

次のようになります。

==スケジュールされたタスクのリスト(https://yourserver.com/moodle)==
\ enrol_imsenterprise \ task \ cron_task 10 * * * * *できるだけ早く
\ logstore_legacy \ task \ cleanup_task * 5 * * * *できるだけ早く
\ logstore_standard \ task \ cleanup_task * 4 * * * * 2014年11月12日水曜日、午前4時35分
\ mod_forum \ task \ cron_task * * * * * *できるだけ早く
\ core \ task \ automatic_backup_task 50 * * * * *できるだけ早く

...

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

 php 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_orphaned_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  - テーマブースト

関連情報

  • MDL-35736 - コマンドラインからプラグインを管理する
  • MDL-36237 - CLI経由のリゾートコースリスト
  • MOOSH - MOOdle SHell。それはあなたが最も一般的なMoodleタスクを実行することを可能にするコマンドラインツールです。