Mautic の cron 設定サンプル


Mautic は、キャンペーンやメールの送信などで Cron を多用します。
crontab や /etc/crontab で設定するのが一番。

対応バージョン Mautic 2.7.1

# 確認作業

## PHP の場所を確認

```shell
which php
> php
```

PHP の場所が違う場合は下記のサンプルコードの「PATH」を書き換えてください。


## Web サーバーとして実行しているユーザー

apache なのか nginx なのか、SSH と同じユーザーで実行しているのか確認します。
このサンプルでは「apache」ユーザーで、crontab のユーザーには、 **パスワードなし** で「sudo」権限を割り当てられているとします。

下記のサンプルでは、「apache」ユーザーと仮定しています。ユーザーが違う場合は書き換えてください。


## Mautic が格納されているパスを確認

Mautic が格納されているパスを確認します

```shell
cd [Mautic の格納場所]
pwd
> /var/www/vhost/mautic/

```

このサンプルでは「/var/www/vhost/mautic/」に Mautic ファイルが存在しているとします。違う場合はサンプルコードを書き換えてください。

## 実行するコマンドを決定

下記サンプルコードのコメントを読んで、どのコマンドを実行するか決定し、必要がないコマンドはコメントアウトするか削除してください。

## 実行間隔を決定

サンプルでは、サーバーに負荷を与えないために、10分毎に実行する設定になっています。

メンテナンス系は月に1回としています。

メール送信の了が多くなるとサーバーを増強するか、外部メール送信サービスを使うか、間隔を狭めるなどの対応が必要になります。

## `HOME` & `PATH` ディレクトリの確認

HOME ディレクトリを、Mautic の格納場所にするか、それとも自分のユーザーの場所にするか決めると、php のコマンドを省略できます。

## メール通知

Cron が正常に動いているか、しばらく通知メールを送ってもらってチェックするのも良いでしょう。

`MAILTO` の値をちょっとだけ自分のメールアドレスに変えてみても良いかもです。


# `/etc/crontab` の場合

Web サーバーのユーザーとして実行する必要があるし、`etckeeper` などの、設定ファイルレポジトリを使っている場合、`/etc/crontab` で Cron の設定をした方が良いので  sudo 権限や root である場合は、こちらでの設定をおすすめします。

```shell
sudo vi /etc/crontab
I
```


```shell
SHELL=/bin/bash
HOME=【サイトのルートディレクトリでも良いかも】
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$HOME/.local/bin:$HOME/bin
MAILTO=""

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
#  *  *  *  *  * user-name command to be executed

# キャンペーンのビルド
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:rebuild
# キャンペーンのトリガー
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:trigger
# キャンペーンメッセージ
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:messages

# セグメントのアップデート
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:segments:update

# メールの送信
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:emails:send
# メールの受信（バウンスメールチェック機能など）
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:email:fetch

# ソーシャルモニタリング
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:social:monitoring

# IPアドレス情報のダウンロード (毎月1日午前0時)
0 0 1 * * apache php /var/www/vhost/mautic/app/console mautic:iplookup:download
# 365日より古いユーザーデータを削除
0 0 1 * * apache php /var/www/vhost/mautic/app/console mautic:maintenance:cleanup --days-old=365
```

```shell
[esc]
ZZ
```


# `crontab -e` の場合

ユーザーアカウントとして実行する Crontab の場合、ユーザーは sudo 権限があり、apache や nginx などとして実行できるか、apache や nginx ユーザーとして実行する必要があります。


```shell
crontab -e
I
```


```shell
SHELL=/bin/bash
HOME=【サイトのルートディレクトリでも良いかも】
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$HOME/.local/bin:$HOME/bin
MAILTO=""

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
#  *  *  *  *  * command to be executed

# キャンペーンのビルド
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:rebuild
# キャンペーンのトリガー
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:trigger
# キャンペーンメッセージ
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:campaigns:messages

# セグメントのアップデート
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:segments:update

# メールの送信
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:emails:send
# メールの受信（バウンスメールチェック機能など）
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:email:fetch

# ソーシャルモニタリング
*/10 * * * * apache php /var/www/vhost/mautic/app/console mautic:social:monitoring

# IPアドレス情報のダウンロード (毎月1日午前0時)
0 0 1 * * apache php /var/www/vhost/mautic/app/console mautic:iplookup:download
# 365日より古いユーザーデータを削除
0 0 1 * * apache php /var/www/vhost/mautic/app/console mautic:maintenance:cleanup --days-old=365
```

```shell
[esc]
ZZ
```

## ウチのサーバーの例

- 10分おきに実行
- メールのキューは使っていない

```
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=katz@concrete5.co.jp
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
#  *  *  *  *  * user-name command to be executed

*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:campaigns:rebuild
*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:campaigns:trigger
*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:campaigns:messages

*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:segments:update

*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:emails:send
*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:email:fetch

*/10 * * * * apache php /var/www/vhosts/mautic/app/console mautic:social:monitoring

0    0 1 * * apache php /var/www/vhosts/mautic/app/console mautic:iplookup:download
# 0  0 1 * * apache php /var/www/vhosts/mautic/app/console mautic:maintenance:cleanup --days-old=365 --dry-run

```

# 備忘録：アップデートしたら Cron が動作しているか確認を！

忘れがちなのが、Mautic をアップデートした時に、Cron コマンドが変更になっているかも
そんな時は

```
php /var/www/vhost/mautic/app/console
```

と入力すれば、そのバージョンの Mautic で使用できるコマンドリストが出てくるので、確認しておきましょう。

# 関連記事

- [Cron が走っているかどうか確認する](http://qiita.com/katzueno/items/ca416d32b901d64a344d)


# 宣伝・クレジット

CMS は断然 [concrete5](https://concrete5-japan.org/)で決まり。 Mautic のコミュニティ支援や導入支援を行っている、[コンクリートファイブジャパン株式会社](https://concrete5.co.jp)では様々なサポートを提供しています。