御成門プログラマーの日記

Microsoft AzureやAngularなどの技術情報を発信します

AzureでWordPressの環境を作成する際、既存のAzure MySQLを選択する方法

前回記事でAzure WebApps上でWordPressの環境を構築する方法を紹介しましたが、
その際、WebApps作成時に既存のMy SQL データベースサーバーが選択できず、新規作成しかできませんでした。 onarimonstudio.hatenablog.com

既存のデータベースが選択できないということは、
データベースサーバー単位で課金が発生する以上、WebAppsの環境の数分だけDBサーバーの課金が発生してしまします。
理想は複数のWebAppsが共有でMySQLのデータベースサーバー1つを使用する構成じゃないでしょうか。

現状の作り方だとデータベースサーバー分だけ課金が発生してしまう。
f:id:tt-suzukiit:20190522194305p:plain

複数のWebAppsからデータベースサーバー一つを共有する構成にしたい。
f:id:tt-suzukiit:20190522194316p:plain

その問題についての解決方法を紹介しようと思います。

Azureサポートに問い合わせてみたが、仕様で既存のDBサーバーは選べないそう

一応、今回の現象についてAzureのサポートにも問い合わせしてみましたが、
WordPressの環境の新規作成時には既存のDBは選べない仕様になっているそう。

対応策として、2通りのパターンを教えてもらった。

  1. とりあえず作ってから接続先を変更し、不要なDBサーバーをお削除する。
  2. ARMテンプレートを変更する。

取り合えず1の方法が簡単そうなのでそちらの方法を選択します。

Azure Database for MySQLに新規データベースを作成する

共有DBサーバー内にデータベースを作成します。
ここの情報を参考にCloudShell上でmysqlコマンドラインツールを使用します。
docs.microsoft.com

mysql接続コマンド

mysql -h <接続先のDBサーバ名> -u <サーバー管理者ログイン名> -p

空のデータベース作成コマンド

CREATE DATABASE <db名>;

DB接続先の変更はApp Serviceの構成ファイルの接続文字列を変更するだけ

接続先の変更は本来wp-config.phpファイルを変更する必要があるのですが、Azureから作られたWordPressの場合、AppServiceの構成ファイル内の接続文字列を参照しているようだったのでWebAppsの構成ファイルを変更します。

「WebApp」→「構成」→「接続文字列」でDefault Connectionをクリックします。
f:id:tt-suzukiit:20190522195820p:plain すると新規作成時のDBへの接続文字列が入力されているので、
そちらを今回接続を行うDBへの接続文字列へと入れ替えます。

Database=<今回用に作成したdb名>;Data Source=<接続先のDBサーバ名>;User Id=<サーバー管理者ログイン名>;Password=<サーバー管理者パスワード>

f:id:tt-suzukiit:20190522195949p:plain 接続文字列を変更すると、もう接続先が変わっているので後は手順通り、
WordPressの初期設定を行えば使えるようになっていると思います。

接続先を共有用のDBサーバーに設定すれば目指していた構成を構築することができるようになります。