【AWS】Ubuntu Server 18.04にMroongaをインストール（MySQL）

# 構成
今回は、プライベートサブネット内にデータベースを作成していきます。



# AWSでのUbuntu Serverの立ち上げ


AWS マネジメントコンソールのEC2の画面からインスタンスの作成をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/d0560a23-e3d8-ab22-adae-f4429ae9bc7a.png)

## AMIの選択
Amazon マシンイメージ (AMI)のページで検索欄に`Ubuntu`と入力します。
今回は「Ubuntu Server 18.04 LTS」を利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/56803445-ae51-0374-b217-b6473d06c64e.png)

## インスタンスタイプの選択
インスタンスタイプは`t2.micro`を選択します。
`t2.nano`はメモリが足りずMySQLが起動できないという情報が有った為、断念しました。

## インスタンスの設定
VPC内のプライベートサブネットを選択しました。
「キャパシティーの予約」だけ`開く`を選択しました。

## ストレージの追加
デフォルトの設定にしました。

## タグの設定
**Name**タグを設定しました。

## セキュリティグループの設定
セキュリティーグループは下記のように設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/8c93dec4-a101-9e7b-de1b-6e8cf0f02fd5.png)

## キーペアの選択
`新しいキーペアの作成`を選択し、キーペアをダウンロードしました。

 
# AWS 踏み台サーバーからUbuntuへのアクセス
踏み台サーバーは、VPCのパブリック内に立ち上げておいてください。

## アクセス方法
踏み台サーバーへキーペアをアップロードします。

Ubuntuサーバーのインスタンスを選択し、`接続`を押すとインスタンスに接続する方法が表示されます。

踏み台サーバーにアップしたキーに対し、`chmod`でアクセス権限の変更をおこなってください。

その後、「例」の内容をコピーし、**sudo**権限をつけて実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/f36d99f7-7fda-2b1e-f01a-531897d79772.png)

## 結果
下記の画像のように表示された場合、接続が完了しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/ddc24bfa-40fa-76bd-84cd-aaea0dc2ffe8.png)

# Ubuntuサーバーからインターネットへアクセスする為の設定
安全にネットワークに接続する為にNATを利用仕様と思います。

## NAT GateWayの作成
VPCのページから、「NAT ゲートウェイ」を選択します。
NATゲートウェイのページで、`NAT ゲートウェイの作成`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/2ce19f3c-fdc6-23d6-670b-71a5b9b6f98b.png)

サブネットはUbuntuサーバーを配置したVPC内のパブリックサブネットを選択してください。
Elastic IPは`新しいEIPの作成`を押してください。

作成されたNATゲートウェイのIDをメモしてください。
nat-0590f6bc305083087
そのまま、`ルートテーブルの編集`をクリックしてください。

## ルートテーブルの作成
VPCのプライベートネットワークに「ルートテーブル」を作成します。

VPCのページからルートテーブルを選択し、`ルートテーブルの作成`を押します。
名前と対象のVPCを選択し、`作成`ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/2aa5f87e-ead3-a548-e895-c962f489f91c.png)

## ルートテーブルの編集
先ほど作成したルートテーブルを選択し、ルートの編集を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/9893921b-dc7c-d382-ff12-4e17ddd49e78.png)

`ルートの追加`を選択し、下記の設定を行います。

- 送信先 ： 0.0.0.0/0
- ターゲット ： 先ほど作成したNATを指定

設定を入力したら、`ルートの保存`をクリックします。

## サブネットの関連付け
先ほど作成したルートテーブルを選択し、ルートの編集を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/d0cb2c02-c530-ddbc-a87e-d60d261bf8da.png)

Ubuntuのサーバーを設置したプライベートのサブネットを選択し、`保存`をクリックします。

## インターネット接続の確認
踏み台サーバーを経由して、Ubuntuサーバーにアクセスします。
下記のコマンドを実行してください。

```sh:実行コマンド
curl https://google.com
```

下記のような実行結果が表示されれば、正常にネットワークに接続されています。

```sh:curl実行結果
ubuntu@ip-XX-XX-XX-XX:~$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
```

サーバー等の環境構築は以上です。次からMroongaのインストールを行います。

# Mroongaのインストール
PPA (Personal Package Archive)を利用してインストールしていきます。

[公式のインストールページ](http://mroonga.org/ja/docs/install/ubuntu.html)には以下の説明が書かれています。
`Ubuntu用のMroongaのAPTリポジトリーはLaunchpad上のPPA（Personal Package Archive）を使っています。このPPAからAPTでMroongaをインストールできます。`

##インストール前の設定
### universeリポジトリーとセキュリティアップデートリポジトリを有効化
はじめに、「add-apt-repository」を利用できるようにする為に、「software-properties-common」をインストールします。
利用中の Linux ディストリビューションおよび Linux Standard Base との互換性の識別を補助するためのシンプルなツール 「lsb-release」もインストールします。

```sh:
sudo apt-get install -y -V software-properties-common lsb-release
```
次に各リポジトリの有効化を行います。

```sh:universeリポジトリーの有効化
sudo add-apt-repository -y universe
```

```sh:セキュリティアップデートリポジトリの有効化
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu $(lsb_release --short --codename)-security main restricted"
```

### PPAをシステムに追加
PPAをシステムに追加するために下記コマンドを実行してください。

```sh:PPAシステムの追加
sudo add-apt-repository -y ppa:groonga/ppa
sudo apt-get update
```

## Mroongaのインストール
今回はMySQL用のMroongaをインストールします。

```sh:MySQL_Mroonga
sudo apt-get install -y -V mysql-server-mroonga
```

実行した結果内に「mysql.service」が「Active」になっていた場合、正常にインストールできています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401878/6d56e16e-d637-4fc4-fd4f-5685fa755022.png)


## MeCabのインストール
今回は**MeCab**をトークナイザーとして利用したいので、「groonga-tokenizer-mecab」をインストールします。

```sh:groonga-tokenizer-mecabのインストール
sudo apt-get install -y -V groonga-tokenizer-mecab
```

# Mroongaがインストールできたかを確認する。
下記のコマンドを実行してMySQLに接続します。
初期の設定は、ユーザー名：`root`にパスワード無しで接続できます。

```sh:MySQLへの接続
sudo mysql -uroot
```
Mroongaがインストールされているかどうかを確認します。

```sh:エンジンの確認
mysql> SHOW ENGINES;
```
下記のように実行結果内の「Engine」のカラムに**Mroonga**が存在すれば無事インストールされています。

```sh:実行結果
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| Mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)
```

一応、バージョンの確認もしておきましょう。

```sh:実行するコマンド
mysql> SHOW VARIABLES LIKE 'mroonga_version';
```

```sh:実行結果
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| mroonga_version | 9.11  |
+-----------------+-------+
1 row in set (0.00 sec)
```

# まとめ
これで、正常にMySQLをインストールすることができました。

MySQLの初期設定等は、後日記事にしていこうと思います。

# 動作確認日
2020年01月15日に動作を確認しました。