Mautic

マーケティングオートメーションの Mautic をインストールする

More than 1 year has passed since last update.


Mautic とは

Mautic とは Symfony で開発されているオープンソースマーケティングオートメーションのツール。Introduction to Mautic (Japanese) によると、主な機能は以下の通り。


  • モニタリング(ビジターのWebサイトその他での行動を監視し、トラッキングする)

  • リードを特定する詳細情報

  • ポイント(見込み客のランク付け)

  • キャンペーン(営業サイクルに従ってリードを育てていくワークフロー)

  • Eメール

  • フォーム

  • ランディングページ

  • アセット(資料や動画などの顧客獲得用のデジタルコンテンツ)

  • レポート

Mautic Meetup Tokyo へ参加したので記念パピコ。

発音は「モーティック」が一般的と思われるが、「マウティック」と言う人も多かった。


インストール

作業は VirtualBox にインストールしてある CentOS 7.2.1511 上で検証した。

ミドルウェアは Apache 2.4 / PHP 7.0 / MySQL 5.7 を選択している。


MySQL のセットアップ


インストール

yum install https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

yum install mysql-community-server


文字コードと自動起動の設定

cp -a /etc/my.cnf{,.org} && echo "character-set-server=utf8" >> /etc/my.cnf

systemctl enable mysqld


起動とセキュリティ設定

systemctl start mysqld

grep "temporary password" /var/log/mysqld.log | awk '{print $11}' # 初期パスワードを確認
mysql_secure_installation


DB と DB ユーザーの作成

openssl rand -base64 12 #パスワード用文字列の生成

cat << "_EOQ_" | mysql -u root -p
CREATE DATABASE `mautic` CHARACTER SET 'utf8';
GRANT ALL ON `mautic`.* TO `mautic`@`%` IDENTIFIED BY 'P@assw0rd';
_EOQ_


Apache と PHP のセットアップ


インストール

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && yum -y update

yum install yum-utils && yum-config-manager --enable remi-php70
yum install httpd php php-gd php-imap php-intl php-mbstring php-mcrypt php-mysqlnd php-pecl-zip php-process php-xml
yum install php-opcache php-pecl-apcu


設定

sed -i 's|;date.timezone =|date.timezone = Asia/Tokyo|' /etc/php.ini

sed -i '/memory_limit =/s/128M/512M/' /etc/php.ini
cat << _EOF_ > /etc/httpd/conf.d/mautic.conf
ServerName localhost
<Directory "/var/www/html">
AllowOverride All
</Directory>
_EOF_
systemctl enable httpd

デフォルトだと .htaccess が機能しないので AllowOverride ディレクティブで許可する必要がある。

Apache のセキュリティ設定は「Apacheセキュリティ設定」を参考にしてほしい。


起動

httpd -t

systemctl start httpd


FirewallD

firewall-cmd --permanent --add-service=http && firewall-cmd --reload


Composer のセットアップ


Composer のインストール

curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer


高速化対応

composer config -g repos.packagist composer https://packagist.jp

composer global require hirak/prestissimo

Composer は大変遅いので、リポジトリをレイテンシの少ない packagist.jp に切り替え、ダウンロード処理を高速化する prestissimo プラグインを追加する。


Mautic のセットアップ


インストール

yum install git

curl -L https://github.com/mautic/mautic/archive/master.tar.gz -o mautic.tar.gz -#
tar vzxf mautic.tar.gz -C /var/www/html --strip=1
cd /var/www/html
composer install

zip ではなく tar.gz をダウンロードして展開すればパーミッションの設定は変更する必要が無い。


所有権とコンテキストの変更

chown -R apache:apache app/{config,logs,cache} media translations

chcon -R -t httpd_sys_script_rw_t app/{config,logs,cache} media translations

SELinux が有効になっている場合、 app/config app/logs app/caches ディレクトリのコンテキストを httpd_sys_content_t から httpd_sys_script_rw_t に変更しないと動作しない。


ブラウザからセットアップ

Mautic1.png

問題がなければ上記のように表示される。

Site is offline.png

このようなエラー画面が表示された場合、所有権とコンテキストの変更を再度実施する。

Mautic2.png

Mautic3.png

Mautic4.png

Mautic5.png

Mautic6.png


MaxMind の GeoLite2 の DB データ取得

php app/console m:ip:d

小技だが app/console はコマンド名が重複していなければイニシャルだけで通る。


Cron の設定

https://mautic.org/docs/jp/setup/cron_jobs.html

cat << "_EOF_" | crontab

0-45/15 * * * * cd /var/www/html && /usr/bin/php app/console m:s:u
1-46/15 * * * * cd /var/www/html && /usr/bin/php app/console m:c:r
2-47/15 * * * * cd /var/www/html && /usr/bin/php app/console m:c:t
3-48/15 * * * * cd /var/www/html && /usr/bin/php app/console m:e:s
4-49/15 * * * * cd /var/www/html && /usr/bin/php app/console m:e:f
5-50/15 * * * * cd /var/www/html && /usr/bin/php app/console m:w:p
0 0 1-7 * * [ "$(date '+\%w')" -eq 3 ] && cd /var/www/html && /usr/bin/php app/console m:ip:d
_EOF_

2.0 からか一部コマンド名が変わったようで、日本語のドキュメントではまだ更新されていないので注意。

MaxMind のデータベース更新は「毎月第一火曜日」らしいので、第一水曜日の日本時間0時に実行するように設定。


トラッキングコードの設定

以下の JavaScript トラッキングコードを、 yourmautic.com を Moutic を設置したURLに書き換えて </body> タグの直前に貼り付ける。

<script>

(function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
})(window,document,'script','http(s)://yourmautic.com/mtc.js','mt');

mt('send', 'pageview');
</script>