広告

ヘテムル(heteml)サーバでLaravelの定期実行Cronを動かす

Laravel
この記事は約4分で読めます。

かなり動かすまで大変だったのでメモ。

ヘムテル(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で設定を行います。