スターサーバーで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からの実行されるためエラーになると推測されます。