28
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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 の設定

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>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
28
Help us understand the problem. What are the problem?