前回記事でAzure WebApps上でWordPressの環境を構築する方法を紹介しましたが、
その際、WebApps作成時に既存のMy SQL データベースサーバーが選択できず、新規作成しかできませんでした。
onarimonstudio.hatenablog.com
既存のデータベースが選択できないということは、
データベースサーバー単位で課金が発生する以上、WebAppsの環境の数分だけDBサーバーの課金が発生してしまします。
理想は複数のWebAppsが共有でMySQLのデータベースサーバー1つを使用する構成じゃないでしょうか。
現状の作り方だとデータベースサーバー分だけ課金が発生してしまう。
複数のWebAppsからデータベースサーバー一つを共有する構成にしたい。
その問題についての解決方法を紹介しようと思います。
- Azureサポートに問い合わせてみたが、仕様で既存のDBサーバーは選べないそう
- Azure Database for MySQLに新規データベースを作成する
- DB接続先の変更はApp Serviceの構成ファイルの接続文字列を変更するだけ
Azureサポートに問い合わせてみたが、仕様で既存のDBサーバーは選べないそう
一応、今回の現象についてAzureのサポートにも問い合わせしてみましたが、
WordPressの環境の新規作成時には既存のDBは選べない仕様になっているそう。
対応策として、2通りのパターンを教えてもらった。
- とりあえず作ってから接続先を変更し、不要なDBサーバーをお削除する。
- 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をクリックします。
すると新規作成時のDBへの接続文字列が入力されているので、
そちらを今回接続を行うDBへの接続文字列へと入れ替えます。
Database=<今回用に作成したdb名>;Data Source=<接続先のDBサーバ名>;User Id=<サーバー管理者ログイン名>;Password=<サーバー管理者パスワード>
接続文字列を変更すると、もう接続先が変わっているので後は手順通り、
WordPressの初期設定を行えば使えるようになっていると思います。
接続先を共有用のDBサーバーに設定すれば目指していた構成を構築することができるようになります。