COLUMN

【テックメモシリーズ】AWSエンジニアが基本的なweb三層構築からMicrosoft Azureを紐解いてみた 【第3回】

NTT東日本が行ってきた さまざまな開発テクニックを紹介する「テックメモシリーズ」、開発者が実際の業務のなかで書き溜めていった作業メモをそのままリアルにご紹介するシリーズとなります。

本コラムでは、AWSのエンジニアがMicrosoft Azureを構築する手順をAWSの場合と比較しながら全3回に分けてご紹介しています。

今回、Microsoft Azureに構築しているものはAWSでは一般的なロードバランサ―、Webサーバ、データベースから成る「Web三層構造」になります。

最終回となる第3回では「データベース」の構築と「Webサーバ」へのWordPressの導入手順についてご紹介します。

Azure Databaseの立ち上げとwordpressの構築

Azure Database for MySQLを作成します。

AWSにおけるRDSに該当する「Azure Database for MySQL」を作成します。

サービスメニューの作成にすすみます。

デプロイオプションに2種類ありますが、フレキシブルサーバーは通常の用途で、WordPress + MySQL フレキシブル サーバーは別サービスのApp service Web Appsに最適化されたもののようです。今回はフレキシブルサーバーで作成していきます。

画像の通りスペックなどを設定していきます。

管理者ユーザ名はwordpressとしておきます。

パスワードは任意の物を設定してください。

可用性ゾーンで配置されるゾーンの指定をしています。

高可用性としてAWS RDSにおけるマルチAZと同じような概念を取り入れられます。ただし、異なるゾーン間での冗長だけでなく、単一ゾーン内での冗長という選択もできるみたいです。

※今回は高可用性は無効化しておきます。

ネットワーク設定として、インターネット経由での接続となる、publicアクセスと、仮想ネットワークに配置して仮想ネットワーク内単位での接続となるプライベートアクセスを選べます。

後者を選択肢、前章で作成した仮想ネットワークとまだ使用していないサブネット(subnet3)を選択します。

なおAzure Database for MySQLが存在するサブネットは、他のサービスの用途で使用することができなくなります。

プライベートDNS統合により、ドメインを作成できます。

その他の設定はデフォルトで作成します。

サービスページの「概要」から「サーバー名」でFQDNを確認できます。

試しにVMからmysqlクライアントを利用して直接疎通を確認してみます。

sudo yum install mysql
mysql -u wordpress -p -h 概要から確認したAzure DatabaseのFQDN

ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.というエラーを検知しました。

最初はネットワーク回りの設定ミスを疑いましたが、VMにアタッチされているネットワークセキュリティグループを疑いましたが現時点で、同じ仮想ネットワーク内の通信は許可される設定となっています。

ドキュメントによると、デフォルトでAzure Database for MySQL側によりTLSによる接続を強制する設定となっている模様でした。証明書の設定などをしてもいいですが、手っ取り早く無効化して接続してみます。

AWSにおけるパラメータグループに該当するサーバーパラメーターから変更します。

OFFにして保存で動的パラメータの為即時適用されているはずです。

無事疎通確認がとれました。

最後にWordpressを構築し、web3層としての疎通を確認します

サーバー上にwordpressを導入して、データベースとの接続を組み込んでいきます。

事前にAzure Database for MySQLにwordpress用のデータベースを作成します。

実はこのデータベース作成、Azure Database for MySQLの場合、踏み台などからログインして作成コマンドを送り込まずに、コンソール画面から可能なのです。

下記のデータベース画面から可能です。

追加を押しwordpressという名のデータベースを作成します。

なんと簡単なのでしょうか。

VMにSSH接続し、下記コマンドを順番に打っていきます。

※wordpressのダウンロードとPHPのインストールを行っていますが各コマンドの意味については省略します。

sudo su -
cd ~
yum update -y
wget https://ja.wordpress.org/wordpress-5.4.12-ja.tar.gz
tar -xzvf wordpress-5.4.12-ja.tar.gz
mkdir /var/www/html/blog
cp -r wordpress/* /var/www/html/blog/
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd_backup.conf

#httpd.confファイルをvimで編集し、AllowOverrideをnone から Allに変更します。

#変更箇所「AllowOverride none」 → 「AllowOverride All」

diff /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd_backup.conf
chown -R apache /var/www
chgrp -R apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
systemctl status httpd.service
yum update -y
yum -y install epel-release
yum -y install [http://rpms.famillecollet.com/enterprise/remi-release-7.rpm]
yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
centos7はデフォルトでSELINUXという機能が有効化されており、wordpressから外部DBへの接続ができないため、無効化します
setenforce 0
systemctl restart httpd

ここまで出来たら

http://VMのIPアドレス/blog/wp-admin/install.php にアクセスしDBとの接続をセットアップします。

データベース:wordpress

ユーザ名:wordpress

パスワード:Azure Database成時に設定したPW

ホスト:概要から確認したAzure DatabaseのFQDN

テーブル接頭辞:そのまま

ようこそ画面に到達したらDBと接続が完了し、wordpressの使用を開始することができます。

おわりに

今回からAWSのエンジニアがAWSと比較しながらMicrosoft Azureを構築してみたというテーマで、AWSでは一般的な「Web三層構造」(ロードバランサ―、Webサーバ、データベース)の構築手順を3回に分けてご紹介しています。

最終回となる第3回では「データベース」の構築と「Webサーバ」へのWordPressの導入手順ついて一連の操作記録をご紹介しました。

AWS経験者視点で構築手順をご紹介しましたので、Microsoft Azureをあまりご存じないAWSのエンジニアの方々にはMicrosoft Azureとの違いがよくお分かりになったと思います。今後Microsoft Azureの構築に手を広げる際のご参考になれば幸いです。

これからもNTT東日本が行ってきた さまざまな開発テクニックを紹介していきますのでご期待ください。

  • Amazon Web Services(AWS)および記載するすべてのAmazonのサービス名は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
  • Microsoft Azureは、Microsoft Corporationの米国及びその他の国における登録商標または商標です。

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。