Actions

Mahara日本語ドキュメント/システム管理者ガイド/Cronジョブ

From Mahara Wiki

< Mahara日本語ドキュメント‎ | システム管理者ガイド
Revision as of 19:44, 9 Mayıs 2011 by WikiSysop (talk | contribs) (Created page with "予約された時間により、Maharaでは、いくつかのタスクを実行する必要があります。これは、'''cronジョブ'''を使用することで実現され…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

予約された時間により、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)。