8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Moodleのおすすめ隠しconfig

Last updated at Posted at 2017-06-13

隠しconfigとは?

とりあえずWebUIから設定を変更したり確認したり出来ないものを隠しconfigと呼ぶことにする。
これはconfig.phpの適当な部分に追記して設定を変更することになる。
config-dist.phpに記載があるので本当の意味での隠し設定を期待されていた方には予めお詫びしておきます。

おすすめ設定項目

以下の項目についてconfig.phpに記載しておくと運用で便利だと思っている。

$CFG->sslproxy = true;

PoundのようなSSLラッパ機能を持つリバースプロキシ配下にある場合は設定を有効にする必要がある。

$CFG->disableusercreationonrestore = true;

(コースバックアップ時にユーザを含んでいた場合)コースリストア時にユーザ作成を抑制する。年度毎に別々にMoodleサイトを作成してるとき、コースを移行する際に変なユーザ名のユーザが自動作成されなくなる。

$CFG->disableupdatenotifications = true;

Moodleの特定ページ閲覧時やcronの処理でアップデート通知メールが送られることを抑制する。サイト登録しておけばセキュリティアップデートなどの通知は来るのでそれで代替可能。

$CFG->apacheloguser

Apache httpdでaccess_logにユーザ名などを記録することができる。このへんで苦労してるのを見たので追記。

  • $CFG->apacheloguser = 0 : ユーザ情報を記録しない
  • $CFG->apacheloguser = 1 : ユーザID(userテーブルのid)を記録
  • $CFG->apacheloguser = 2 : ユーザ氏名を記録
  • $CFG->apacheloguser = 3 : ユーザ名(ログイン名)を記録

config.phpの変更だけでは不足しており、httpd側の設定も一部変更する必要がある。

config-dist.php
// To get the values logged in Apache's log, add to your httpd.conf
// the following statements. In the General part put:
//     LogFormat "%h %l %{MOODLEUSER}n %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" moodleformat

$CFG->doclang = 'en';

エラーが起きた時などにMoodleDocsを参照する「このエラーに関する詳細情報」のリンクが表示されるが、和訳されていないことが多いため英語の説明文が表示されるように指定する。
実はこの設定はWebUIから設定可能だった…

$CFG->disableonclickaddoninstall = true;

サイト管理メニューで「プラグインインストーラ」を無効にする。Moodle管理者に勝手にプラグインを追加されたくないときに有効そう。

$CFG->disableupdateautodeploy = true;

WebUIからのプラグイン等のアップデートが実行されないようになる。WebUIからだとプラグインアップデートに失敗してMoodleサイトが死ぬことが稀にあるので、確実にCLIからアップデートを実行したい場合に利用する。
$CFG->disableonclickaddoninstall = true; だと自動的にtrueに設定される。

$CFG->emailconnectionerrorsto = 'your@emailaddress.com';

DBサーバとの接続エラーが発生した際に、指定したメールアドレスにアラートメールを飛ばす。
ユーザに「昨日の夜アクセスしたらエラーが出て困った」とか言われてから調査を始めるケースが減るかもしれない。

$CFG->session_update_timemodified_frequency = 120;

ここで指定された秒数以上が経過している場合は、sessionsテーブルの最終アクセス日時を更新する。デフォルトは20秒。
短時間に多数のユーザによるアクセスが集中して困っている場合、DBへの書き込みを減らすことが出来るかも知れない。

$CFG->debugusers = '2';

特定のユーザがログインした場合にだけ、デバッグメッセージを表示する様にする。
運用中のサイトで問題が発生していて、トラブルシューティングを行いたい場合に使うのだろうか?

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?