Actions

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

From Mahara Wiki

< Mahara日本語ドキュメント‎ | システム管理者ガイド
(Created page with "予約された時間により、Maharaでは、いくつかのタスクを実行する必要があります。これは、'''cronジョブ'''を使用することで実現され…")
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
<div id="section_1">
<div id="section_1">


== Cronジョブの設定方法 ==
==Cronジョブの設定方法==


cronスクリプトは、<code>lib/cron.php</code> です。 あなたは、このスクリプトに毎分アクセスするよう、設定が必要です - [http://your-mahara-site.org/lib/cron.php http://your-mahara-site.org/lib/cron...へのウェブアクセスによる実行]、またはスクリプトを実行するコマンドライン /path/to/mahara/htdocs/lib/cron.php です。両者とも利点および不利点があります。
cronスクリプトは、<code>lib/cron.php</code> です。 あなたは、このスクリプトに毎分アクセスするよう、設定が必要です - [http://your-mahara-site.org/lib/cron.php%E3%81%B8%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%A1%8C http://your-mahara-site.org/lib/cron...へのウェブアクセスによる実行]、またはスクリプトを実行するコマンドライン /path/to/mahara/htdocs/lib/cron.php です。両者とも利点および不利点があります。


<div id="section_2">
<div id="section_2">


=== ウェブよりcron.phpを実行する ===
===ウェブよりcron.phpを実行する===


これは、cronを実行するシンプルな方法です。crontabにて、あなたは、以下の行を入力するだけです:
これは、cronを実行するシンプルな方法です。crontabにて、あなたは、以下の行を入力するだけです:
Line 27: Line 27:
</div><div id="section_3">
</div><div id="section_3">


=== コマンドラインよりcron.phpを実行する ===
===コマンドラインよりcron.phpを実行する===


これは、若干難しい方法ですが、あなたは、cron出力を分けてログに記録することができます。あなたがcronジョブを必要な権限すべてを持ったウェブサーバユーザとして実行させる点がトリックです。または、ユーザフィールドにウェブサーバユーザを追加して、rootのcrontabに記述します:
これは、若干難しい方法ですが、あなたは、cron出力を分けてログに記録することができます。あなたがcronジョブを必要な権限すべてを持ったウェブサーバユーザとして実行させる点がトリックです。または、ユーザフィールドにウェブサーバユーザを追加して、rootのcrontabに記述します:

Latest revision as of 18:35, 12 Mayıs 2011

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