ロリポップ!レンタルサーバーでのCRON設定

ロリポップ!レンタルサーバーで、CRM分析プラグインの集計用CRONを設定する手順です。

ロリポップ!のcron設定は、コマンドを直接入力するのではなく、実行するファイル(シェルスクリプト)のパスを指定する方式です。コマンドを書いたシェルスクリプトを2つ作り、FTPでアップロードして、cronに登録します。

前提条件

  • ロリポップ!レンタルサーバーのユーザー専用ページにログインできること
  • ライトプラン以上であること(CRM分析プラグインは2件のcronを登録します。エコノミープランは、後述の「エコノミープランの場合」を参照)
  • EC-CUBEとCRM分析プラグインがインストール済みであること
  • FTPで接続できること(シェルスクリプトのアップロードに使います)
  • サーバーに、EC-CUBEが対応するバージョンのPHPがあること(/usr/local/php/ 配下のフォルダで確認できます)

推奨スケジュール

用途推奨コマンド
集計ワーカー5分おきeccube:crm-analytics42:worker
日次登録毎日 3:00eccube:crm-analytics42:enqueue-daily

管理画面から集計を開始するとキューに登録され、次回のワーカー実行で処理が始まります。5分おきなら、開始までの待ちは最大で約5分です。

設定手順

  1. ダッシュボードの内容をコピーして、集計ワーカー用と日次登録用のシェルスクリプトを、それぞれ作る(後述)
  2. FTPで web フォルダの中の cron フォルダにアップロードし、パーミッション(権限)を700にする
  3. ブラウザでスクリプトのURLを開き、開けない(403エラーになる)ことを確認する(後述)
  4. ユーザー専用ページの「cron設定」を開き、集計ワーカー用と日次登録用の2件を登録する(後述)

手順1: シェルスクリプトを作成する

ダッシュボードの初期セットアップ「1. CRONを設定しましょう」に表示される内容を、そのままコピーして、2つのファイルを作ります。

  • 「ご利用のサーバー」から、「ロリポップ!レンタルサーバー」を選ぶ
  • 「PHP のバージョン」を選ぶ(ご利用のアカウントの /usr/local/php/ にあるバージョンを選んでください)
  • 「5分おき(集計の定期実行)」の内容を、「コピー」ボタンでコピーして、テキストエディタに貼り付け、crm-worker.sh という名前で保存する
  • 「毎日(前日分の集計予約・推奨 3:00)」の内容も、同様にコピーして、crm-enqueue-daily.sh という名前で保存する

ダッシュボードには、設置パスとPHPのフルパスが入った、次のような内容が表示されます(集計ワーカー用の例)。

#!/bin/sh
cd /home/users/●/アカウント名/web/ec-cube || exit 1
/usr/local/php/8.3/bin/php bin/console --no-debug eccube:crm-analytics42:worker > /dev/null 2>&1
exit

手順2: アップロードと権限の設定

  1. FTPソフトで接続し、web フォルダの中に cron フォルダを作る(ロリポップ!のcron設定は、web フォルダ以下のファイルしか指定できません)
  2. cron フォルダに、2つのシェルスクリプトをアップロードする
  3. それぞれのファイルのパーミッション(権限)を700に変更する

手順3: Webから開けないことを確認する

シェルスクリプトは、Webから見える web フォルダの中に置くことになります。スクリプトにはサーバー内のパスが書かれているため、Webから開けないことを確認してください。パーミッションを700にしていれば、ブラウザからは開けません。次のURLをブラウザで開き、「現在、このページへのアクセスは禁止されています」などのエラー(403)になることを確認します。

https://ご利用のドメイン/cron/crm-worker.sh

スクリプトの内容が表示されてしまう場合は、パーミッションが700になっているか確認してください。それでも表示される場合は、cron フォルダに、Webからのアクセスを禁止する .htaccess を置きます(ファイル名は .htaccess。先頭が「.」のファイルがFTPソフトに表示されない場合は、隠しファイルを表示する設定を確認してください)。

<IfModule mod_authz_core.c>
  Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
  Order deny,allow
  Deny from all
</IfModule>

手順4: cron設定に入力する内容

ユーザー専用ページの「cron設定」で、次のように登録します。「実行ファイルパス」には、web フォルダからのパスを入力します。

集計ワーカー(5分おき)

項目入力内容
設定名CRM分析 worker(任意)
日付・曜日・時間毎日・すべての曜日・5分おき
実行ファイルパスcron/crm-worker.sh

日次登録(毎日 3:00)

項目入力内容
設定名CRM分析 日次登録(任意)
日付・曜日・時間毎日・すべての曜日・3時0分
実行ファイルパスcron/crm-enqueue-daily.sh

「設定済みcron一覧」に登録内容が正しく表示されていることを確認してください。

エコノミープランの場合

エコノミープランは、cronを1件しか登録できません。2つの処理を1つのシェルスクリプトにまとめ、5分おきで登録してください。次のスクリプトは、5分おきにワーカーを動かし、毎日3:00台の最初の実行のときだけ、日次登録も行います。

まとめ用(crm-cron.sh)

#!/bin/sh
cd /home/users/●/アカウント名/web/ec-cube || exit 1
PHP=/usr/local/php/8.3/bin/php

# 毎日 3:00 台の最初の実行だけ、前日分の集計を登録する
if [ "$(date +%H)" = "03" ] && [ "$(date +%M)" -lt 5 ]; then
  $PHP bin/console --no-debug eccube:crm-analytics42:enqueue-daily > /dev/null 2>&1
fi

# 5分おきの実行のたびに、集計ワーカーを動かす
$PHP bin/console --no-debug eccube:crm-analytics42:worker > /dev/null 2>&1
exit
  • アップロード先とパーミッションは、前述と同じです。cron設定の「実行ファイルパス」には cron/crm-cron.sh を入力し、「日付・曜日・時間」は毎日・すべての曜日・5分おきにします
  • スクリプトの時刻は、サーバーの時刻(日本時間)で判定されます
  • cd のあとの設置パスと、PHPのパス(PHP= の右側)は、ダッシュボードに表示されるスクリプトと同じ値にしてください

設定後の確認

  1. ダッシュボードの初期セットアップで、ワーカー側に「動作を確認しました」と出るか見る(登録から最大5分ほどかかります)
  2. 初期セットアップの「上記2つの登録が完了したらチェックしてください。」にチェックを入れる
  3. 初期セットアップのステップ2「初回集計を開始しましょう」で「集計を開始」をクリックし、「定期実行の開始待ち」から実行中へ進むことを確認する(集計の期間は自動で選ばれます。集計するデータがない場合は、ステップ2は表示されず、セットアップが完了します)

うまくいかないとき

  • /usr/local/php/ に、EC-CUBEが対応するバージョンのフォルダが無い場合は、実行できません。ロリポップ!のサポートにご確認ください
  • 「実行ファイルパス」は、web フォルダからのパスです(先頭の / は付けません)。ファイルの場所と、ファイル名を確認してください
  • シェルスクリプトの改行コードがWindows用のCR+LFだったり、文字コードがBOM付きのUTF-8だったり、パーミッションが700になっていないと、動かないことがあります。改行コードはUNIX用のLF、文字コードはBOM無しのUTF-8で保存してください
  • ダッシュボードに「CRON(定期実行)が動いていない可能性があります」と表示された場合や、解決しない場合は、初期セットアップ の「うまく動かないときは」を参照してください
  • シェルスクリプトの > /dev/null 2>&1 は、実行結果を捨てる指定です(付けないと、5分おきに結果がメールで届くことがあります)。原因を調べるときは、これをいったん外し、cron設定で実行結果の通知メールアドレスを設定して、実行結果を確認してください。確認が終わったら、元に戻してください
  • 登録数の上限(エコノミー1件、ライト5件、スタンダード以上10件)を超えていないか確認してください
  • 詳細は 集計されない も参照してください

関連ページ

CRM分析プラグイン

EC-CUBEの会員・受注データを分析し、リピート率や休眠顧客の把握、AIによる改善提案まで行えるプラグインです。