Mahara日本語ドキュメント/システム管理者ガイド/Cronジョブ
From Mahara Wiki
< Mahara日本語ドキュメント | システム管理者ガイド
予約された時間により、Maharaでは、いくつかのタスクを実行する必要があります。これは、cronジョブを使用することで実現されます。Maharaスクリプトに毎分アクセスするジョブを設定することで、残りの作業はMaharaが引き受けます。
ジョブには以下の処理が含まれます:
- 配信されたRSSフィードの更新
- フォーラム投稿および他の通知に関する送信メール
- 保存スペースを空けるため、古いファイルのクリーンアップ
Cronジョブの設定方法
cronスクリプトは、lib/cron.php
です。 あなたは、このスクリプトに毎分アクセスするよう、設定が必要です - http://your-mahara-site.org/lib/cron...へのウェブアクセスによる実行、またはスクリプトを実行するコマンドライン /path/to/mahara/htdocs/lib/cron.php です。両者とも利点および不利点があります。
ウェブよりcron.phpを実行する
これは、cronを実行するシンプルな方法です。crontabにて、あなたは、以下の行を入力するだけです:
* * * * * curl http://your-mahara-site.org/lib/cron.php
「毎分、crulを使用して、cron.phpをスクリプトを実行する」と読むことができます。
これは、非常にシンプルな方法です。また、通常あなたは望まないと思いますが、ウェブサーバのエラーログに、cron出力が記録されることを意味します。しかし、動作しないよりは良いでしょう。
コマンドラインよりcron.phpを実行する
これは、若干難しい方法ですが、あなたは、cron出力を分けてログに記録することができます。あなたがcronジョブを必要な権限すべてを持ったウェブサーバユーザとして実行させる点がトリックです。または、ユーザフィールドにウェブサーバユーザを追加して、rootのcrontabに記述します:
ウェブサーバユーザのcrontabでは:
* * * * * php /path/to/mahara/htdocs/lib/cron.php >> /path/to/mahara/cron.log 2>&1
または、rootのcrontabで (www-data を適切なウェブサーバユーザに換えてください):
* * * * * www-data php /path/to/mahara/htdocs/lib/cron.php >> /path/to/mahara/cron.log 2>&1
この方法には、いくつかの注意点があります:
- ウェブサーバユーザにより、ログファイルを書き込めることを確認してください。あなたは、debianにおいて、ディレクトリ「directory /var/log/mahara-cron」を作成して、所有権を「www-data」にすることができます。そして、ログファイルのパスを「/var/log/mahara-cron/cron.log」にしてください。
- コマンドラインで使用するPHPのphp.iniは、Apacheで使用するPHPのものとは異なります。例えば、Debianでは、コマンドラインのPHPが「/etc/php5/cli/php.ini」を使用するのに対して、Apacheでは「/etc/php5/apache2/php.ini」を使用します。そのため、あなたは、両者を同じにする必要があります。または、下記のように、あなたのPHPコールに「-c」フラグを使用しても良いでしょう: * * * * * php -c /etc/php5/apache2/php.ini /path/to/mahara/htdocs/lib/cron.php >> /path/to/mahara/cron.log 2>&1
- いくつかのディストリビューション (例 Debian) 配下では、拡張モジュールのロード方法により、PHPセグメンテーション違反が生じる場合があります。これは、postgresモジュールの前にphp curlモジュールがロードされることにより発生します。あなたは、curl.iniを語彙的に後ろに移動することで、この問題を解決できます (例 Z99_curl.ini)。