EC2とRDSのWeb環境構築の最終回です。
第4回:RDS編はこちら
https://qiita.com/kikurage2030/items/82205ab72742a5ee5b85
サービスの全体象
EC2にWebサーバを立ててPHPのプログラムがMySQLにアクセスしてテーブルの情報を表示する画面を作ります。
いわゆる一般的なWebシステムの構成でWebサーバはPublicサブネットに公開し、DBサーバはPrivateサブネットで冗長構成としてEC2のみのアクセスを許可する制御とします。また独自ドメインを取得してDNSでの名前解決も行えるようにします。
このシリーズで取り組む内容は
第1回:VPC・サブネット周りの作業
第2回:EC2の構築
第3回:Route53の登録
第4回:RDSの構築
第5回(最終回):Web環境の構築 ここ!
を予定しています。今回は第5回(最終回):Web環境の構築編となります。
Web構築作業概要
EC2環境とRDS環境が作成されたので後はEC2のTomcat上で動くプログラムを作成して動作確認をするのみです。プログラムの実行環境であるPHPのインストール作業と簡易的なWeb画面の表示処理を実装し、WebサービスがRDSにアクセスして必要な情報を取得し画面に表示できることを確認します。
順序としては
1.PHPのインストール
2.PHPの簡易プログラムの実装
の順番で実施。
1.PHPのインストール
Webシステムが動作するためのランタイム環境(PHP)をインストールします。
EC2にログインして以下のコマンドを実行
PHPのインストールを実施
$sudo dnf install -y php php-mysqli php-fpm php-json php-devel php-gd
PHP関連のライブラリをインストール
$sudo yum install -y php php-mbstring
これでPHPのブログラムが動作する環境が作成されました。
2.PHPの簡易プログラムの実装
ここではMySQLにアクセスしてユーザーテーブルから情報を取得して画面に表示する簡易的な画面を作成します。
実装内容は以下の通りです。
<?php
// MySQLの接続エンドポイント、ユーザー名、パスワードを定義
$dsn = 'mysql:host=aws-mysql-db.ctg84chzcg8w.ap-northeast-1.rds.amazonaws.com;charset=utf8mb4';
$username = 'admin';
$password = 'XXXXXXXXX';
// try-catch
try {
// データベースへの接続PDOインスタンスを生成
$pdo = new PDO($dsn, $username, $password);
// SQL文
$sql = "select user,host from mysql.user where user='rdsadmin'";
// プリペアドステートメントを作成
$stmt = $pdo->prepare($sql);
$stmt->execute();
$dataset = $stmt->fetch(PDO::FETCH_ASSOC);
// 接続を閉じる
//$pdo = null;
} catch (PDOException $e) {
// UTF8に変換します
exit(mb_convert_encoding($e->getMessage(), 'UTF-8', 'SJIS-win'));
}
function escape1($str)
{
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>DataSelect</title>
</head>
<body>
<?php foreach ($dataset as $a) : ?>
<?= escape1($a) ?>
<?php endforeach; ?>
</body>
</html>
こちらのtest.phpファイルをApacheの実行環境フォルダに配置してあげます。(/var/www/html配下)
実行結果、MySQLで取得したユーザー名(rdsadmin)とホスト(localshot)の情報が画面に表示されました。
以上で5回にわたって開設したEC2とRDS関係のWebサービスの構築概要の説明は以上です。