オープンソースMAツールのMauticをVagrantで動かす

オープンソースのマーケティングオートメーションツールであるMauticを、Macで手軽（？）に動かす手順です。
ローカルのOS環境とは独立させたいため、[Vagrant](https://www.vagrantup.com/)を利用しました。

書いてみたら、全然手軽ではない内容になってしまいましたが、
もう少し簡単な使い始め方や、Mauticの使い方や内部構造も、今後、調べて書いていこうと思います。

# Mauticとは
Mauticについては、[公式サイト](https://www.mautic.org/)をご覧ください。以下の記事でも紹介されています。

- [デジタルマーケティングジャーナル](http://dmj.underworks.co.jp/2015/07/27/opensource-marketing-automation/)
- [SELECK](https://seleck.cc/note/seleck_howto/article/41)
- [デジマラボ](https://bita.jp/dml/ma_mautic)

# 環境

この記事の内容は以下の環境を前提に書かれています。
Windowsでも、ほぼ同じだと思いますのが、今後、試します。
設定などは最低限の内容を書いています。
本番で動かす場合はセキュリティなども考慮しましょう。

- Mac OS 10.11.5 El Capitan
- Vagrant 1.8.1
- Mautic 2.0.1

# Vagrant

## Vagrantをインストール
[Vagrant](https://www.vagrantup.com/)をダウンロードしてインストールします。

```
$ vagrant
$ vagrant: command not found
```

いきなり、つまづきました。[この問題](https://github.com/mitchellh/vagrant/issues/6034)のようです。
El Capitanにしてから、Terminalすら使ってなかった..。ひとまず、リンクで解決しました。

```
sudo ln -s /opt/vagrant/bin/vagrant /usr/bin/vagrant
```

## Centos7のBoxをインストール

[こちら](https://atlas.hashicorp.com/boxes/search?utf8=%E2%9C%93&sort=&provider=&q=centos
)からBOXを探します。
任意のディレクトリでインストールを進めます。

```
mkdir vagrant_centos7
cd ./vagrant_centos7
vagrant init centos/7
```
Vagrantfileというファイルが作成されますが、以下を変更しました。
まず、IPアドレスで接続できるように設定します。

```
config.vm.network "private_network", ip: "192.168.33.10"
```

続いて、ホストとVagrantのファイル共有をできるようにします。
以下で、Macの../dataとCentOSの/vagrant_dataが共有されます。

```
config.vm.synced_folder "../data", "/vagrant_data"
```

Vagrantで、CentOSのBOXを起動します。

```
vagrant up centos/7
```
CentoS7が起動します。

# Apache/PHP/MySQL
## Apacheをインストール
yumを更新

```
sudo yum -y update
```

apacheをインストール

```
sudo yum -y install httpd
```

apacheを起動します

```
sudo systemctl start  httpd.service
```

OS起動時にApacheが自動起動するように設定する。

```
sudo systemctl enable httpd.service
```

ブラウザで、http://192.168.33.10/ を確認します。

## PHPをインストール

Mautic 2.0.1は[PHP 5.6.19以上で動作](https://www.mautic.org/download/requirements/)しますが、今回はPHP7を利用します。

EPELをインストールします。

```
yum install epel-release
```

Remiリポジトリを更新します。

```
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

必要なモジュールを一式インストールします。
（Mauticを動かした際にモジュール不足でエラーが表示されたら、追加でインストールしてください。）

```
yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-mysql php-mcrypt php-intl php-imap phpunit
```
## /etc/php.ini

最低限としては以下を設定します。

```
date.timezone = "Asia/Tokyo"
```

## MySQLをインストール

CentOS7では、MySQLではなく互換性のあるMariaDBが導入されています。

```
sudo yum install mariadb mariadb-server
```

### /etc/my.cnf
```
character-set-server=utf8
```

起動します。

```
systemctl start mariadb.service
```

初回起動設定

```
systemctl enable mariadb.service
```

rootのパスワードを設定します。

```
mysql_secure_installation
```

接続を確認します。

```
mysql -u root -p【rootのパスワード】
```

Mautc用のユーザーを作成します。
CREATE USER 【ユーザー名】 IDENTIFIED BY '【パスワード】';

# Mautic
## Mauticをダウンロード
ソースをダウンロードします。

```
wget https://github.com/mautic/mautic/archive/master.zip
```
zipファイルを展開して、composerでインストールします。
その後、パーミションの変更を行います。

```
unzip master.zip
cd mautic-master/
composer install
chmod -R 775 ./app/cache
chmod -R 775 ./app/logs
chmod -R 775 ./app/config
```
mautic-masterdディレクトリを公開するディレクトリにコピーします。
例では、ドキュメントルート以下にmauticフォルダを作っています。

```
$mv ./mautic-master /var/www/html/mautic
```

## ウェブで設定を行う

ここから先のmauticの設定はウェブブラウザから行います。
先ほど、配置したファイルが見れるディレクトリをブラウザで開きます。

```
http://hostname/mautic
```

データベースの接続設定、管理者アカウントの作成などを行います。

## cronの設定を行います。
メール配信など定期実行する処理を設定します。

1分ごとにしていますが、お好みで変更してください。
apacheを動かしているユーザーのcronに設定します。

```
sudo -u apache crontab -e
```

設定の内容は以下です。

```
*/1 * * * * sudo -u apache /usr/bin/php /var/www/html/mautic/app/console mautic:segments:update

*/1 * * * * sudo -u apache /usr/bin/php /var/www/html/mautic/app/console mautic:campaigns:rebuild

*/1 * * * * sudo -u apache /usr/bin/php /var/www/html/mautic/app/console mautic:campaigns:trigger
```

全然手軽ではないですが、起動しましたか？
もう少し簡単に動かす方法も調べたいと思います。

また、今後、Mauticの使い方や内部構造も調べて書いていこうと思います。