1. Qiita
  2. 投稿
  3. Mautic

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

  • 11
    いいね
  • 0
    コメント

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>
Comments Loading...