② ConoHa VPS で複数WebサーバーとDBサーバーの構成を作る

前回記事：[① ConoHa VPS でWebサーバーとDBサーバーを分離する](https://qiita.com/mtitg/items/a4fa30cf1615bac196a4)

# この記事でやること

今回やることは下記です

- 前回作ったConoha VPSをWebサーバーとして動くようにする
- そこにPHPの簡単なスクリプトを設置
- スクリプトから前回作成したDBサーバーのデータベースに接続して情報を取得
- フロントに表示
- 2つ目のWebサーバーを作る

# 前回作ったConoha VPSをWebサーバーとして動くようにする

必要なものをyumでざっと入れてしまいます。

まずApacheを入れ、firewallでhttpアクセスを受け付けるようにします。

```terminal
# yum install httpd -y
# firewall-cmd --permanent --zone=public --add-service=http
```

この段階でApacheを起動してfirewallを再起動してみます。

```terminal
# systemctl start httpd
# systemctl restart firewalld
```

そしてブラウザで`http://133.130.118.38/`にアクセスしてみると、Apacheのデフォルトの画面が表示されます。


![スクリーンショット 2019-03-09 21.18.59.png](https://qiita-image-store.s3.amazonaws.com/0/113133/eeb663f9-9a26-6d74-990f-50c4562ea603.png)

# PHPのスクリプトから前回作成したDBサーバーのデータベースに接続して情報を取得してフロントに表示

Apacheを入れると、`/var/www`というディレクトリが作成されます。この中の`html`フォルダにphpのファイルを配置していきます。

まずこのフォルダに移動します。

```terminal
# cd /var/www/html
```

今回簡易的にphpファイルでデータベース接続を行うので、phpと周辺で必要なツールをインストールします。

```terminal
# yum install php -y
# yum install --enablerepo=remi,remi-php70 php-mysqlnd -y
```

ここで、私の環境だとブラウザからアクセスしたときにphpが動かなかったので、`httpd.conf`に一部追記をしました。

```terminal
# vi /etc/httpd/conf/httpd.conf 
```

```vi:httpd.conf
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
```

phpファイルを作成します。

```terminal
# vi index.php
```

```php:index.php
<!DOCTYPE html>
<html>
<body>
<h1>Web Server:1</h1>
<?php
  define('DB_DATABASE','3vptj_test');
  define('DB_USERNAME','3vptj_test');
  define('DB_PASSWORD','Password1234');
  define('PDO_DSN','mysql:host=private.3vptj.tyo1.database-hosting.conoha.io;dbname=' . DB_DATABASE);

  try{
    //DB接続
    $db = new PDO(PDO_DSN,DB_USERNAME,DB_PASSWORD);
    $stmt = $db->query("SELECT * FROM fruit");
    $result = $stmt->fetch(PDO::FETCH_NUM);
    print($result[0]);
    //エラーをスロー
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  } catch(PDOException $e){
    echo $e->getMessage();
    exit;
  }
 ?>
</body>
</html>
```

あまり詳しくこのコードの説明はしませんが、PDOとデータベースへの接続情報を使ってDBサーバー内のデータベースに接続、前回登録したfruitテーブルのappleを表示しているという感じです。

`http://133.130.118.38`に接続すると、Web Server:1という文字の下に先程fruitテーブルに登録したappleが表示されます。

![スクリーンショット 2019-03-09 22.16.14.png](https://qiita-image-store.s3.amazonaws.com/0/113133/70b82639-c48a-0f12-d6eb-bba280b8879d.png)

ちゃんとDBサーバーのデータベースから情報も引っ張ってこれています。

# 2つ目のWebサーバーを作る

それでは、これまで作ったものと同じ構成のWebサーバーを作成します。
同じ構成のVPSを作る必要があるので、Conohaに戻り、イメージを保存。そしてそのイメージを用いてVPSのコピーを作成します。

先程のVPS詳細画面に戻り、サーバーをシャットダウンして、イメージ保存ボタンをクリックします。

![スクリーンショット 2019-03-09 22.20.00.png](https://qiita-image-store.s3.amazonaws.com/0/113133/f9509747-e0a2-a2a4-24a8-c0a4c089313f.png)

![スクリーンショット 2019-03-09 22.22.22.png](https://qiita-image-store.s3.amazonaws.com/0/113133/782cb9e0-15f0-0b97-9e01-3276bdfca511.png)

続いて`サーバー追加`メニューから、作成したイメージをもとにVPSの作成を行います。（イメージが利用可能になるまで数分かかります）

![スクリーンショット 2019-03-09 22.32.32.png](https://qiita-image-store.s3.amazonaws.com/0/113133/3c3f8995-af5a-7732-c81d-3c61f8b7ce71.png)

今回はネームタグを`testVPS2`としました。

また、IPアドレスは`133.130.110.112`が割り振られました。

新しく作ったVPSとDBサーバーとの接続は再度行わないといけないようです。前回の記事と同じ内容なので省略しますが、適宜行ってください。

あと、Apacheをサーバーの起動時に自動的に起動する設定にしていないので`systemctl start httpd`も必要なはずです。

このあとロードバランサを入れて振り分け処理が行われていることを視覚的に判断するために、`index.php`を少し変えておきましょう。

```php:index.php
// <h1>Web Server:1</h1> これを
<h1>Web Server:2</h1> // こう書き換え
```

さっそくこのVPSに発行されたIPアドレス`http://133.130.110.112/`にアクセスしてみると、下記のような画面が表示されます。

![スクリーンショット 2019-03-09 23.05.39.png](https://qiita-image-store.s3.amazonaws.com/0/113133/875f17eb-cde7-ab80-34ed-6197dc9260d5.png)

ここでもちゃんとDBサーバーのデータベースから情報も引っ張ってこれています。これでロードバランサを入れる実験の素地ができました。

次回記事：[③ ConoHa VPS ロードバランサーを導入して複数Webサーバーの割り振り](https://qiita.com/mtitg/items/fcdbe0e45a0e35d639ef)