Azure WebApp と Azure Database for MySQL フレキシブル サーバーで Wordpress サイトを立ち上げる際の Tips

Azure WebApp と Azure Database for MySQL フレキシブル サーバーで WordPress サイトを立ち上げる際の Tips

近年「静的 Web App」なども登場し、再度活気づいてきた Web App まわり。従来まで Web App で WordPress サイトを立ち上げようと思ったら、Web App 内にある MySQL in App を使うか、MySQL のサービスを追加するかしかなかったのですが、前者だと激重で実用に耐えず、後者だと割と大掛かりな課金が発生するため、「ちょっとしたサイトを立ち上げたい」というニーズにはマッチしませんでした。

しかし最近になり従量課金制の MySQL 、Azure Database for MySQL フレキシブル サーバー が登場し、もっとも低く設定すれば月額 2,000 円ほどで MySQL が利用できるようになりました。

喜び勇んで、環境を構築し WordPress のインストールを試みたのですが、残念ながら Wordress のセットアップ中にデータベース接続エラーになり繋げることができませんでした。

最終的には接続する事が出来たので、備忘録も兼ね、WebApps に WordPress をインストールし、Azure Database for MySQL フレキシブル サーバーに接続するまでの手順を解説をしていきます。

WebApp のインストール + WordPress ファイルの準備

ここは変わらずです。Azure Portal から 「Web アプリ」を選択し、希望の環境をクリックしていくだけで更地の WebApp がインストールされますので、ここで FTP で繋ぐなり、「高度なツール」 の ZIP Push Deply などを利用して WordPress を WebApp 上に展開します。

WebApps 管理画面 高度な管理ツール
WebApp Kudu Zip Push Deploy
WebApps Zip Deploy

ZIP Push 時の注意

WordPress の ZIP は、ZIP 内に “wordpress” というフォルダ階層があるため、このままウェブサーバーに Push すると、/wordpress/ という階層が作成され、その下に WordPress ファイルが展開されてしまいますので、それを避けるために一度ローカルで WordPress の ZIP を展開し、/wordpress 以下のファイル・フォルダを再 ZIP して、それをウェブサーバーに Push することをお勧めします。

Azure Database for MySQL フレキシブル サーバー の準備

インストール

Azure 管理画面より Azure Database for MySQL フレキシブル サーバーをインストールします。「リソースの作成」画面で「Azure Database for MySQL」と入力し、表示された「Azure Database for MySQL」をクリックします。

Azure 管理画面でリソースの追加で「Azure Database for MySQL」と入力した画面

SQL Database for MySQL が表示されるので「作成」をクリックします。

Azure Database for MySQL 作成画面

次の画面で「MySQL デプロイ オプションの Azure データベースの選択」になりますので、ここで「フレキシブル サーバー」の「作成」を選択します。

Azure Database for MySQL MySQL デプロイ オプションの Azure データベースの選択画面

フレキシブル サーバーの基本構成を設定する画面になりますので、以下の項目を入力・設定していきます。

フレキシブル サーバー 基本 設定画面
  • サーバー名: データベースのサーバー名を記入します。今回は例として avalonstudio-wordpress-sql という文字列で進めます。この文字列は WordPress からの接続時に利用しますので忘れないようにしてください。
  • リージョン: WebApp と同じリージョンを設定することを推奨します。
  • ワークロードの種類: 今回は実験なので「開発」を選択して進みます
  • コンピューティングとストレージ: 詳細次項で説明します。
  • 可用性ゾーン: デフォルトの「優先設定なし」ですすめます。
  • MySQL バージョン:5.7 と 8 どちらでも構いません。
  • 管理者アカウント:管理者ユーザー名とパスワードを入力します。Wordpress からの接続時に利用しますので忘れないようにしてください。

「コンピューティングとストレージ」では、以下のオプションを設定します。

Azure Database for MySQL フレキシブル サーバー  コンピューティングとストレージ 構成設定画面

「コンピューティング」の「Computing tier」では「バースト可能」を選択し、「コンピューティング サイズ」では「Standard_B1s」を選択します。

ストレージはひとまずデフォルトの最小値のまま、高可用性は OFF、バックアップもひとまずデフォルト値の 7 で進めます。

ページ最下部で、この状態で課金金額を確認できます。上記の状態ですと、月額 18.98 ドル(推定コスト 21.74 ドル)ということが確認できます。

保存を押してコンピューティングサイズを確定します。

ウィザード画面に戻り、「確認および作成」ボタンを押します。すると フレキシブル サーバーのデプロイが開始されます。

カスタマイズ

MySQL フレキシブル サーバー のデプロイ後、WebApp との通信のための設定をする必要があります。まず、WebApp が通信のために使っている IP を確認する必要がありますので、WebApp の管理画面を表示します。管理メニューの中に「設定」-「プロパティ」という項目があるのでそれをクリックすると、WebApp の各種状態が表示される画面になります。

その中に、「送信 IP アドレス」という項目があり、その中にいくつか IP が列挙されています。ひとまずこの値をすべて書き留めておきます。

WebApp プロパティ 送信 IP アドレス

次に MySQL フレキシブル サーバー 側に上記の IP を設定します。MySQL フレキシブル サーバーの設定画面に行き、管理メニューより「設定」-「ネットワーク」をクリックします。

ネットワーク設定画面の中に「ファイアウォール規則」という設定項目がありますので、先ほどの IP をここで設定していきます。

Azure Database for MySQL フレキシブル サーバー ネットワーク設定画面 ファイアウォール規則

ファイアウォール規則名に「WebApp Outbound 01」などとなんでもよいので名前を付け、開始 IP アドレスと終了 IP アドレスに IP を入力します。これを IP の個数分繰り返します。

これで WebApp と Azure Database for MySQL フレキシブル サーバーの通信ができるようになりました。

Azure Database for MySQL フレキシブル サーバー サーバーパラメーターの一時的な OFF

ここからがハマった箇所です。Azure Database for MySQL フレキシブル サーバーは基本暗号化された通信が前提となっているため、このままだと WordPress のセットアップにおいてデータベースと接続できない問題に遭遇します。

なので、Wordpress のセットアップが完了するまで、一時的に Azure Database for MySQL フレキシブル サーバー側の設定を変更します。

Azure Database for MySQL フレキシブル サーバーの管理メニューから「サーバーパラーメーター」をクリックし、検索ボックスで「require_secure_transport」と入力し、表示された require_secure_transport の値を OFF にして、保存します。

Azure Database for MySQL フレキシブル サーバー サーバーパラーメータで require_secure_transport を OFF にする図

こうすることで WordPress セットアップでデータベース接続エラーを回避することができます。

WordPress のセットアップ

通常通り WordPress のインストールを進めます。「フレキシブル サーバーの基本構成」画面で入力した値をそれぞれ入力していきます。

Wordpress セットアップ Azure Database for MySQL フレキシブル サーバー の値を入力

セットアップが完了し、Wordpress 管理画面が表示されたら、いったん WordPress のセットアップは完了です。

サーバーパラメータをもとに戻す

WordPress のセットアップが完了したことで、Wordpress の環境に wp-config.php が生成されています。これからこのファイルを編集して、先ほど OFF に設定した Azure Database for MySQL フレキシブル サーバーの require_secure_transport の値を ON に戻るための準備を行います。

Azure 管理画面の App Service Editor などを使い、Wordpress の wp-config.php を開きます。そして、既存テキストの 認証用ユニークキー と書かれた行の上あたりに、以下の1行を追加します。

define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL); 
wp-config.php に define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);  の設定を加えた画面

PHP のバージョンに注意

PHP 7.0 以上の環境では MYSQLI_CLIENT_SSL と記述しますが、7.0 未満の環境では MYSQL_CLIENT_SSL と、SQL の後ろに I のない値を使うと良いようです。

ファイルを保存して、次に Azure Database for MySQL フレキシブル サーバーの設定をもとに戻します。

OFF にした時と同様、Azure Database for MySQL フレキシブル サーバー の管理メニューより 「サーバーパラーメーター」をクリックし、検索ボックスで「require_secure_transport」と入力し、表示された require_secure_transport の値を ON にして、保存します。

Azure Database for MySQL フレキシブル サーバー の管理メニューより 「サーバーパラーメーター」をクリックし、検索ボックスで「require_secure_transport」と入力し、表示された  require_secure_transport  の値を ON にして、保存します。

以上で設定は完了です。

WordPress を再読み込みしていただくと正しく接続されている事が確認できると思います。

WebApp と Azure Database for MySQL フレキシブル サーバーの組み合わせ総評

MySQL in App を使っている時よりも体感速度は倍近く速くなっています。WebApp が Standard 環境でこれだけ早くなっているので、SSD 環境の Premium に移行したらおそらくもっと体感は早く感じると思っています。

スケール可能な WordPress 環境も、Azure Database for MySQL フレキシブル サーバーの登場でぐっと身近になるのではないでしょうか。