エックスサーバー上でcronを使って、Laravelプロジェクトの自動処理を行う方法を解説します。
指定した時間に、php artisan schedule:run を実行するようにします。
なおエックスサーバーでは、phpのバージョンを指定する必要があり、ここがトラップ!
トラップに引っかからず、cronを設定する方法を解説していきます。
Laravelで自動処理を作成する方法は前回記事で解説しているので、併せて参考にしてください。
Laravel 定期処理を自動で実行②エックスサーバーにcronを設定
まずは必要なファイルを本番環境に移動させておきましょう。
その後、エックスサーバーの設定をしていきます。
① ファイルの準備
今回は、下記のコマンドを実行します。
1 |
php artisan schedule:run |
まずは開発環境で、コマンドが問題なく動くようにしておきます。
その後、エックスサーバー上にデプロイします。
前回の記事を読んで実行してくれた方は、git pullでデプロイ後、Cronをインストールした場合は、composer installも実行しておいてください。
1 |
git pull |
1 |
composer install |
②エックスサーバーでcronを設定
エックスサーバーのサーバーパネルにログインします。
アカウントメニューから「Cron設定」を選択してください。
「Cron設定追加」タブをクリックします。
まずは時間間隔を設定します。次のようにすべてに*をいれておくと、毎分実行されます。
毎日16時だけ実行したい、という場合は、次のようにいれます。
とりあえず最初はすべて*として毎分実行すると、テスト結果がすぐ分かります。
コマンドの部分は、次のように入力します。
条件によって変わりますが、下記のような感じになります。
Laravelのcronコマンド例)
1 |
cd /home/test/test && /usr/bin/php7.3 artisan schedule:run >> /dev/null 2>&1 |
プロジェクトのパス・phpのバージョン情報の調べ方を解説します。
プロジェクトのパスの調べ方
cdのあとは、スペースをいれます。&&の前後も、スペースをいれてください。
プロジェクトのパスですが、Git Bashなどのコマンドツールで開発環境にログインし、プロジェクトの場所に移動し、pwdを実行してください。
1 |
pwd |
現在のディレクトリの場所を表示してくれるコマンドです。
/home/プロジェクトのパスが表示されるので、この部分をコピーして、cron設定に使います。
phpのバージョンの調べ方
phpのバージョンは、エックスサーバーの PHP Ver.切り替えをクリックします。
ドメインを選択した後、「PHPバージョン切替」が表示されます。
上記のように表示されていれば、cron設定に「PHP7.3」といれます。
なお、エックスサーバーのマニュアルはこちら。
③cron実行結果が送られるアドレスを設定
Cronを設定した後は、Cron設定一覧タブの「Cron結果の通知アドレス」にアドレスを入れて「通知アドレス設定」ボタンをクリックします。
こうしておけば、うまくいかなかった場合、テスト結果がメールで届きます。
④ テストする
あとは実行結果を待つだけ。
なお、今回のcron設定のコマンドの意味が気になる方は、下記のエラー対策記事の後半をご覧ください。
エックスサーバーへのデプロイ方法で悩んだ場合はこちら。
いちからすべてのステップを解説しております。