Ubuntu14.04LTS に MariaDB+Mroonga 環境を作る

WindowsAzureのUbuntu14.04LTSを使って、MariaDB＋Mroonga環境を作ります。開発者用の簡易版…と言うか、自分のメモ版です。詳しくは、[ブログ](http://blog.2brins.raindrop.jp/?eid=435)を参照下さい。

基本は、[Mroonga公式ドキュメント](http://mroonga.org/ja/docs/)の[2.15. MariaDBにバンドルしたソースコードからのインストール](http://mroonga.org/ja/docs/install.html#install-from-the-source-code-with-mariadb)に従っていますが、若干の追加作業と情報の整理を行っています。

## サーバーの準備
#### 詳細オプションを指定して、WindowsAzureに仮想マシンを作成する。
![](http://img-cdn.jg.jugem.jp/1f5/1482367/20140509_799582.png)
簡易作成せずにAzureのOSギャラリーから選択する方法で行います。

#### 仮想サーバーに導入するOSイメージを選択する
![](http://img-cdn.jg.jugem.jp/1f5/1482367/20140509_799583.png)
「UbuntuServer 14.04 LTS」を選択します。その後のオプションは、お好みで…

## 標準サーバーの設定
RubyOnRailsのサーバー設定で定評のある、[Ruby on Rails with OIAX](http://www.oiax.jp/)さんの[サーバーの準備（Ubuntu Server 12.04 LTS編）](http://www.oiax.jp/rails3book/prepare_ubuntu_12_04.html)の情報を基本としています。

・基本設定

``` 
% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get install build-essential automake ssh git
% sudo apt-get install zlib1g-dev libssl-dev libreadline6-dev libyaml-dev libxml2-dev libxslt-dev
% sudo apt-get install libsqlite3-dev libcurl4-openssl-dev
% sudo apt-get install apache2 openssh-server apache2-prefork-dev libapr1-dev libaprutil1-dev
% sudo apt-get install cmake libncurse-dev
```
・Mecatトークナイザーを使う場合

``` 
% sudo apt-get istalll mecab mecab-ipadic-utf8 mecab-jumandic-utf8
```
・後は、お好みで…

``` 
php5 (5.5.9+dfsg-1ubuntu4)
ruby1.9.3 (1.9.3.484-2ubuntu1) [universe]
など…
```



## 前提条件のGroonga
[Groongaドキュメント](http://groonga.org/ja/docs/)にある、[2.4.1. PPA（Personal Package Archive）](http://groonga.org/ja/docs/install/ubuntu.html#ppa-personal-package-archive)に従って。
・一連の流れ

```
% sudo apt-get -y install software-properties-common
% sudo add-apt-repository -y universe
% sudo add-apt-repository -y ppa:groonga/ppa
% sudo apt-get update
% sudo apt-get -y install groonga
```
・Mecatトークナイザーを使う場合

```
% sudo apt-get -y install groonga-tokenizer-mecab
```
・MuninでGroongaの状態をモニターしたい場合

```
% sudo apt-get -y install groonga-munin-plugins
```
・MySQL互換のノーマライザーを使う場合

```
% sudo apt-get -y install groonga-normalizer-mysql
```


## ソースコードの入手とコンパイル
### ソースコードの入手
・作業フォルダーを作り、移動

```
% mkdir ~/src/
% cd ~/src/
```
・MariaDBを入手

```
% wget https://downloads.mariadb.org/interstitial/mariadb-10.0.10/kvm-tarbake-jaunty-x86/mariadb-10.0.10.tar.gz
```
・Mroongaを入手

```
% wget http://packages.groonga.org/source/mroonga/mroonga-4.02.tar.gz
```

### コンパイルの準備とコンパイル
・tarballを展開してMroongaをストレージフォルダーに移動

```
% tar xvfz mariadb-10.0.10.tar.gz
% tar xvfz mroonga-4.02.tar.gz
% mv mroonga-4.02 mariadb-10.0.10/storage/mroonga/
```
・cmakeとmake

```
% cd mariadb-10.0.10 
% cmake .
% make 
% make install
```
cmake で失敗したら、表示されたエラーメッセージを良く読んで、対処した後に、CMakeCache.txtを削除してからcmakeからリトライします。


## デーモンとして登録する
### MariaDB導入フォルダの整備
導入フォルダーに移動して、グループ／ユーザーの設定とフォルダーのアクセス権利を整えます。
・グループ、ユーザー、アクセス権の整備

```
% cd /usr/local/mysql
% sudo groupadd mysql
% sudo useradd -g mysql mysql
% sudo chown -R mysql .
% sudo chgrp -R mysql .
```

### /etc 回りの整備
・/etc/mysql/my.cnfを作成する

```
% sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.OLD
% sudo cp /usr/local/mariadb/support-files/my-medium.cnf /etc/mysql/my.cnf
```
・/etc/init.d/mysqldを作る

```
% sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
```
・sudo　vi　/etc/environment　（パスを追加）
*/usr/local/mysql/bin:* を追加

```
1 PATH="/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
~
~
```

### 初期システムDBの作成と、デーモン起動
・初期システムDBの作成

```
% sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql
```
・デーモン起動

```
% sudo /etc/init.d/mysqld start
Starting MySQL
. * 
%
```
・rootパスワード設定とクライント起動

```
% mysqladmin -u root password 'PASSWORD'
% mysql -uroot -pPASSWORD
Welcome to the MariaDB monitor. Commands end with ; or ¥g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB-log Source distribution
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '¥h' for help. Type '¥c' to clear the current input statement.

MariaDB [(none)]>
```

## Mroongaの設定
mysqlクライアントからMroongaの設定を行います。

・ストレージプラグインの導入と確認

```
MariaDB [(none)]> use information_schema
Database changed

MariaDB [information_schema]> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
MariaDB [information_schema]> show engines;

　　以下に、
>>| mroonga | YES | CJK-ready fulltext search, column store | NO | NO | 
   の様な行があるはず ...

```
・各ユーザーファンクションの定義

``` 
MariaDB [information_schema]> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';
MariaDB [information_schema]> CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';
MariaDB [information_schema]> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';
MariaDB [information_schema]> CREATE FUNCTION mroonga_escape RETURNS STRING SONAME 'ha_mroonga.so';
````


## 動作確認…
導入は終わりましたので、動作確認を行って下さい。