はじめに

前回までにWEBサーバーの構築を行いました。今回はデータベースの構築を行いたいと思います。はじめに aws でデータベースを構築するためにどの様な方法があるのかを確認してその中から僕でも出来そうで一番安い ^^; 方法を選択したいと思います。

aws で DB を構築する時の選択肢

RSD(Relational Database Service)

好きな点
  • EC2とは分離されているので障害に強い
  • 簡単に始められる
嫌いな点
  • 自分の用途に対しては費用がかさむ
    最低の性能で容量を1GBにしてもtokyoリージョンでは $14.88/月だった

EC2インスタンスへ自分でDBをインストールする

好きな点
  • 追加費用がない(EC2分だけ)
嫌いな点
  • 自分でいろいろとやらなければならない

Amazon LightSail

好きな点
  • ブラウザでポチポチッと開始できる(WEBサーバー、DBなども含む)
嫌いな点
  • 無料期間が1ヶ月(プランは $3.5/月 から)しかない
  • 汎用性がないらしい(WordPressで構築したらそれ専用になる)
  • 負荷が高いアプリケーションの運用には向いてない様子
    参考:VPS比較2020

Amazon Marketplace

好きな点
  • 全て設定済み(だと思う)
嫌いな点
  • 作成した人によって色々と設定が異なるのでどれを利用すべきか見極めが難しい。費用はものによって異なる

大体、以上が aws で DB を構築する方法だと思います。

並べてみて思ったとこは、 Lightsail が安いことです。

Lightsail は VPS(Virtual Private Server:プライベート仮想サーバー)と言うことできっとDBも同じ仮想環境上にあるのだと思います。最低の性能 (ストレージは SSD 20GB) なら $3.5/月 なので EC2 を t3a.nano 20GB を 1年契約で借りた時 $5.25/月 よりも安いことになります。

年契約しないでこの価格です。

構築もサイト上でポチポチッと出来てしまう様です。

性能に関しては
負荷のかかるアプリケーションを運用するのはやめたほうが良いとの記事もインターネットで見かけました。

負荷というのがどの程度のものなのかわからないところではありますが、
負荷が高くなる予定のないアプリケーションを1つだけ手取り早く作成したい場合はこの方法が一番良いかもしれません。

僕の場合は WordPress だけではなく他の実験などにも使ってみたいと考えているため今回は Lightsail ではなく EC2 インスタンスに MySQL をインストールすることにしました。

と、ここで疑問が。。。

前回 #2 Elastic Beanstalk で WEBサーバーを構築しましたが、この時に自動で作成された EC2 インスタンスに MySQL をインストールできるのか。

そのインスタンスにインストールできないとなると別途DB用にインスタンスを作成しなければならなくなります。そうすると単純に料金は倍に^^;

で調査してみたところElastic Beanstalk に作成された EC2 インスタンスへは DB など入れないっぽい雰囲気でした ^^;

ってことは WordPress を動かして更にちょっとした実験や別ホームページも動かせる廉価な環境を作成する選択肢は

「 EC2 インスタンスへ WEBサーバーとDBを手動でインストールする」

の一択と言うことみたい。

てことで LAMP(Linux Apache MySQL/MariaDB PHP/Python) 環境を作成します。
#1 で作成したEC2インスタンスが #2 によって不要と判断していましたがここに来て復活です^^

Extras Library

aws のこのチュートリアルを参考にインストールしていきます。

EC2 インスタンスに amazon-linux-extras リポジトリ(以降リポジトリ)から LAMP 環境の構築に必要なパッケージを取得した後に yum でインストールしていきます。

パッケージを最新に更新します

[ec2-user ~] $ sudo yum update -y

下記のパッケージを リポジトリ から取得します

  • lamp-mariadb10.2-php7.2
  • php7.2

[ec2-user ~] $ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

リポジトリから最新のパッケージを取得とのことですがこの時点で PHP はインストールされました。なお 2番目に登場する php7.2 でバージョンが上がりました。

DB が MySQL ではなく MariaDB ですがこれは MySQL の派生らしいので、現在 さくらインターネットのレンタルサーバーで動いている僕の WordPress の MySQL からエクスポートしたデータも読めると信じています。

apache, mariadb をインストールします

[ec2-user ~] $ sudo yum install -y httpd mariadb-server

lamp-mariadb10.2-php7.2 で PHPはインストールされるのに mariadb はなぜインストールされないのか仕組みがよくわかりませんが、 mariadb と apache は yum で別途インストールが必要らしいです。

amazon の説明では amazon-linux-extras install xxx で最新パッケージの取得とのことなので PHP がインストールされることがイレギュラーなのでしょうか。

apache を起動します

[ec2-user ~] $ sudo systemctl start httpd

WEBサーバーが起動しました。

#2 で配置したサンプルPHP(LEGO75040と表示するページ)を配置しました。

早速ブラウザで確認したいところですがこのままではアクセスができないためその前にセキュリティーグループの変更を行う必要があります。

1.Amazon EC2 コンソールでインスタンスを選択し適用されているセキュリティーグループ名を確認します

2.「セキュリティーグループ(左側のメニュー)」画面を開いて 1 で確認したセキュリティーグループ名を選択します

3.インバウンド/アウトバンドルールを編集します

  1. ルールを追加
  2. タイプ「HTTP」を選択
  3. ソース「任意の場所」を選択
  4. ルールを保守

同じ要領でHTTPSとアウトバウンドルールにも同じくHTTPとHTTPSを追加します。

実際にブラウザで立ち上げたWEBサーバーにアクセスしてみます。
URLはEC2のインスタンスページにある「パブリックDNS」または「IPv4 パブリック IP」を参照します。

表示されました!

改めて #2 でWEBサーバーを構築した Elastic Beanstalk は便利だったと感じます^^;

システムが起動するたびに自動で apache が起動する様に設定します

[ec2-user ~] $ sudo systemctl enable httpd

データベースの確認

データベースを起動します。

[ec2-user ~] $ sudo systemctl start mariadb

チュートリアルに書かれてあるままにDBのセキュリティー確保の作業をします。

[ec2-user ~] $ sudo mysql_secure_installation

  • 初めは root パスワードの設定がされていないのでリターン
  • Y:rootパスワードを設定する
  • 以降全部Y

サーバー起動時に毎回 MariaDB が起動する様にします

[ec2-user ~] $ sudo systemctl enable mariadb

接続してみます。

[ec2-user ~] $ mysql -u root -p

無事に接続できました。

Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.10-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>

最後に

WEBサーバー、PHP、DBのそれぞれの動作確認が取れました。
最後に「LEGO 75040」と表示していたテストページを改造して DB に登録してある製品番号を全て表示するようにしてみます。

無事に総合的な確認も取れました。

次回はWordPressを動かしたいと思います。

シリーズのリンク

#1 サーバー構築編
#2 WEBサーバー構築編
#3 DB構築編
#4 ドメインの設定とWrodPress稼働編