Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

前回記事:① ConoHa VPS でWebサーバーとDBサーバーを分離する

この記事でやること

今回やることは下記です

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

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

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

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

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

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

# systemctl start httpd
# systemctl restart firewalld

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

スクリーンショット 2019-03-09 21.18.59.png

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

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

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

# cd /var/www/html

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

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

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

# vi /etc/httpd/conf/httpd.conf 
httpd.conf
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

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

# vi index.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

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

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

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

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

スクリーンショット 2019-03-09 22.20.00.png

スクリーンショット 2019-03-09 22.22.22.png

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

スクリーンショット 2019-03-09 22.32.32.png

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

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

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

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

このあとロードバランサを入れて振り分け処理が行われていることを視覚的に判断するために、index.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

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

次回記事:③ ConoHa VPS ロードバランサーを導入して複数Webサーバーの割り振り

mtitg
データサイエンスの企業でWebエンジニアやってます
datamix
データサイエンスに関わる最適なサービスを継続的に提供することで、企業・地域・社会に属するひとりひとりが、客観的に意思決定する力を高め、自由に、そして平等に活躍できる世界を実現します。
https://datamix.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした