スターサーバーでnextcloudのcronを設定

nextcloudでcron実行が必要になったため、設定してみました。
いくつかポイントがあるため、まとめます。

スターサーバーのcronの制限

スターサーバーのcronはプランで制限が異なります。

参照: Cronとは?

注目点は、ライトプラン・スタンダードプラン・ハイスピードプランで設定間隔が異なることです。

cronの設定

こたかは始めてcronを設定しましたが、cronについては「タスクを定時実行できる機能」程度の理解で具体的な設定値は知らない状態です。
そこで、設定項目について調べました。

スターサーバーの設定画面

項目説明
時刻の分、または実行間隔を指定。
時刻の分では6つまで’,’で区切って指定可能
間隔の場合は、’*/5′ とすると5分間隔で実行。
※プランで最小間隔の制限がある。
時刻の時、または*で毎時を指定
日時の日、または*で毎日を指定
日時の月、または*で毎月を指定
曜日(未調査)曜日、または ‘*’で毎日を指定
コマンド※phpコマンドについて下方で説明します
コメントこの設定の名前。分かりやすくするためのコメント

今回は、5分間隔でcronを実行したかったので、5分設定の調査結果をまとめています。
そのため、「時」「日」「月」「曜日」は’*’としました。

5分間隔はハイスピードプランで利用できますが、他のプランでは制限があり5分にならないと推測されます。
ハイスピードプランでは「*/5」で5分間隔で実行できました。

結果的に以下のコマンドでnextcloudのcron実行を確認できました。
PHPバージョン設定が「PHP8.0.x」の設定で、サブドメインで動作させた場合です。

/usr/bin/php8.0 --define apc.enable_cli=1 -f /home/(サーバーID)/(ドメイン)/public_html/(サブドメイン-サブの場合)/nextcloud/cron.php

PHPの実行パスが「/usr/bin/php8.0」です。実行できているので、ディレクトリではなくコマンドまたはリンクとなります。
各PHPのバージョンのパスについては、スターサーバーのサーバー管理ツールにある「サーバー情報」の「コマンドパス情報」にあります。

nextcloudでは「apc.enable_cli=1」の指定が必要のようです。メモリキャッシュのようです。「defile」の前の’-‘は2つです。

-f を指定してファイル名を指定しています。-f は省略可能ですが、なかなか動作しないので付けました。
「nextcloud/cron.php」のパスは絶対パスで指定します。
(サーバーID)と(ドメイン)には契約のサーバーIDとドメインになります。スターサーバーではおなじみです。

「nextcloud/cron.php」のパーミッションを「0744」にします。phpコマンドから実行する場合は「.php」にも実行可能属性が必要です。
apacheでは実行可能属性が無くても動きますが、cronではphpからの実行されるためエラーになると推測されます。