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 上に展開します。
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」をクリックします。
SQL Database for MySQL が表示されるので「作成」をクリックします。
次の画面で「MySQL デプロイ オプションの Azure データベースの選択」になりますので、ここで「フレキシブル サーバー」の「作成」を選択します。
フレキシブル サーバーの基本構成を設定する画面になりますので、以下の項目を入力・設定していきます。
- サーバー名: データベースのサーバー名を記入します。今回は例として avalonstudio-wordpress-sql という文字列で進めます。この文字列は WordPress からの接続時に利用しますので忘れないようにしてください。
- リージョン: WebApp と同じリージョンを設定することを推奨します。
- ワークロードの種類: 今回は実験なので「開発」を選択して進みます
- コンピューティングとストレージ: 詳細次項で説明します。
- 可用性ゾーン: デフォルトの「優先設定なし」ですすめます。
- MySQL バージョン:5.7 と 8 どちらでも構いません。
- 管理者アカウント:管理者ユーザー名とパスワードを入力します。Wordpress からの接続時に利用しますので忘れないようにしてください。
「コンピューティングとストレージ」では、以下のオプションを設定します。
「コンピューティング」の「Computing tier」では「バースト可能」を選択し、「コンピューティング サイズ」では「Standard_B1s」を選択します。
ストレージはひとまずデフォルトの最小値のまま、高可用性は OFF、バックアップもひとまずデフォルト値の 7 で進めます。
ページ最下部で、この状態で課金金額を確認できます。上記の状態ですと、月額 18.98 ドル(推定コスト 21.74 ドル)ということが確認できます。
保存を押してコンピューティングサイズを確定します。
ウィザード画面に戻り、「確認および作成」ボタンを押します。すると フレキシブル サーバーのデプロイが開始されます。
カスタマイズ
MySQL フレキシブル サーバー のデプロイ後、WebApp との通信のための設定をする必要があります。まず、WebApp が通信のために使っている IP を確認する必要がありますので、WebApp の管理画面を表示します。管理メニューの中に「設定」-「プロパティ」という項目があるのでそれをクリックすると、WebApp の各種状態が表示される画面になります。
その中に、「送信 IP アドレス」という項目があり、その中にいくつか IP が列挙されています。ひとまずこの値をすべて書き留めておきます。
次に MySQL フレキシブル サーバー 側に上記の IP を設定します。MySQL フレキシブル サーバーの設定画面に行き、管理メニューより「設定」-「ネットワーク」をクリックします。
ネットワーク設定画面の中に「ファイアウォール規則」という設定項目がありますので、先ほどの IP をここで設定していきます。
ファイアウォール規則名に「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 にして、保存します。
こうすることで WordPress セットアップでデータベース接続エラーを回避することができます。
WordPress のセットアップ
通常通り WordPress のインストールを進めます。「フレキシブル サーバーの基本構成」画面で入力した値をそれぞれ入力していきます。
セットアップが完了し、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);
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 にして、保存します。
以上で設定は完了です。
WordPress を再読み込みしていただくと正しく接続されている事が確認できると思います。
WebApp と Azure Database for MySQL フレキシブル サーバーの組み合わせ総評
MySQL in App を使っている時よりも体感速度は倍近く速くなっています。WebApp が Standard 環境でこれだけ早くなっているので、SSD 環境の Premium に移行したらおそらくもっと体感は早く感じると思っています。
スケール可能な WordPress 環境も、Azure Database for MySQL フレキシブル サーバーの登場でぐっと身近になるのではないでしょうか。