かなり動かすまで大変だったのでメモ。
ヘムテル(heteml)のコントロールパネル cron 設定
まずは、ヘムテル(heteml)のコントロールパネルにあるcron設定ページでcronの設定をします。
上級者モードで毎分実行させる設定を行います。
初心者モードだと毎分実行ができません。
cronの設定名は自由。
「実行ファイルパス〜〜〜」と書いてある部分の下にある小さなボックスには、全部 * を入れます。(スペースなし)
全部 * とすることで毎分実行となります。
「実行ファイルパスの〜〜〜」と書いてある部分の大きなボックスには、cron.shファイルの場所までのパスを書きます。
ただし、最初からすべてのパスを書く必要は無いので注意してください。
パスがわからない場合は、FileZillaなどのFTPソフトで調べましょう。
FileZillaなら、リモートサイトの部分にパスが表示されます。
ターミナルなどでSSH接続してpwdというコマンドでパスを調べるのもありです。
cron.sh の設定
正直、悩んだポイントです。
結論
#!/bin/sh
cd /home/users/ユーザー名など
/usr/local/php/7.4/bin/php artisan schedule:run >> /dev/null 2>&1
解説
#!/bin/sh
シェルスクリプトの場合「#!/bin/sh」を入れるとヘムテルのマニュアルに書いてあるので、入れます。
cd /home/users/ユーザー名など
cron.sh を置く場所までのパスを入れます。
ヘムテルサーバでcronを設定したときに書いたパスの末尾から、/cron.sh を除いて記載します。
/usr/local/php/7.4/bin/php artisan schedule:run >> /dev/null 2>&1
最初の/usr/local/php/7.4/bin/phpは、phpを動かすまでのパスです。
php8.2なら、/usr/local/php/8.2/bin/php となります。
artisan schedule:run は、Laravel artisanコマンドのことです。
>> /dev/null 2>&1
簡単にいうと、ログを残さない設定です。
cron.sh が正しいかコマンドで確認してみる。
ターミナルなどでSSH接続し、cron.sh に記載した「cd /home/users/ユーザー名など」を打ち込みます。
cd /home/users/ユーザー名など
問題なければ、cron.sh のディレクトリに移動します。
次に、「/usr/local/php/7.4/bin/php artisan schedule:run >> /dev/null 2>&1」が動くか確かめます。
例ではphp7.4なので、
/usr/local/php/7.4/bin/php artisan
と打ち込みます。
正しければ、コマンドが表示されます。
表示された中から、 schedule:run を探しましょう。
あれば、成功です。
cron.sh はアスキーモード、パーミッションは700
ヘムテルのマニュアルにもありますが、cron.sh はアスキーモードで転送し、パーミッションを700に設定します。
あとはLaravelの/app/Console/Kernel.phpで設定
php artisan make:command コマンドを使って、コマンドを作成。
/app/Console/Kernel.php で作成したコマンドを実行させる処理を書く。
などなど、Laravelで設定を行います。