JavaScriptを有効にしてください

新しい WordPress on App Service を試す

 ·   5 分で読めます  ·   Kento

先日 Azure Marketplace に新しい WordPress が公開されました
今回は本ブログを新しい環境に移行してみたので、それについてまとめます
Public preview: WordPress enhancements for App Service | Azure の更新情報 | Microsoft Azure

結論から言うと途中で wordpress の設定に挫折し、妥協しました。。。

概要

新しい環境だと以下の点が改善されているようです(機械翻訳)

  • このリリースでは、キャッシュやイメージ圧縮などの領域を最適化することで、読み取り応答時間が 10 倍、書き込み応答時間が 2 倍に短縮され、リソース使用率が 80% 削減されます。
  • 4つのホスティングプランにより、要件を最もよく反映するオプションを柔軟に選択できます。
  • 設定に必要なのはユーザー名とパスワードを作成するだけで、他のすべてはあなたのために世話をされます。

ホスティング プランの詳細は以下です

Hosting Plan WebApp Database (MySQL Flexible server)
Basic (Hobby or Research purposes) B1 (1 vCores, 1.75 GB RAM, 10 GB Storage) Burstable, B1s (1 vCores, 1 GB RAM, 32 GB Storage, 400 IOPs)
Development (Development and Staging purposes) S1 (1 vCores, 1.75 GB RAM, 50 GB Storage) Burstable, B1ms (1 vCores, 2 GB RAM, 64 GB Storage, 500 IOPs)
Standard (General Purpose production apps) P1V2 (1 vCores, 3.5 GB RAM, 250 GB Storage) Burstable, B2s (2 vCores, 4 GB RAM, 128 GB Storage, 400 IOPs)
Premium (Heavy Workload production apps) P1V3 (2 vCores, 8 GB RAM, 250 GB Storage) Gen Purpose, D2ds_v4 (2 vCores, 8 GB RAM, 128 GB Storage, 700 IOPs)

Flexible server が使われていますね!
以前にサイトのパフォーマンス改善で試行錯誤し、必要なメモリを確認しました
App Service のパフォーマンスを改善させる! | クラウドを勉強し隊
ただ、新しい環境だとリソース使用率が削減されるということなので、Basic プランを選択してみました

デプロイ

Azure Marketplace にアクセスをしてデプロイのためのパラメータを入力していきます

以下がスクリーンショットになります

portal01
リソースの作成01:

portal02
リソースの作成02:

portal03
リソースの作成03:

忘れずに DB のパスワードをメモしておきます(あとからパスワードリセットをすることもできます)
Web App の課金額が非常に安いですね。。。!
デプロイ後アクセスしてみましたがタイムアウトしてしまいました。。
少し時間を空けて再度挑戦すると無事にアクセスできました!

wordpress01
wordpress の作成:

サイトの移行

それでは既存のサイトを新環境に移行してみます(ここからが挫折ポイント)

MySQL のデータ移行

こちらの手順に従って実施しますまずは前提条件を確認

  1. バージョン 5.7 または 8.0 を実行している Azure Database for MySQL 単一サーバーのインスタンス
  2. Azure Database for MySQL フレキシブル サーバーのインスタンス。 詳細については、Azure Database for MySQL フレキシブル サーバーでのインスタンスの作成に関する記事を参照してください。
  3. MySQL Workbench を使用して接続し、データベースを作成する。 詳細については クイック スタート:接続する - MySQL Workbench - Azure Database for MySQL - フレキシブル サーバー | Microsoft Learn を参照してください。
  4. Linux を実行し、自分のソースおよびターゲット データベースをホストする Azure VM を、同じリージョン (またはプライベート アクセスを使用する同じ VNet 上) に配置するようにする。
  5. mysql クライアントまたは MySQL Workbench (クライアント ツール) を自分の Azure VM にインストールする。 プライマリとレプリカの両方のサーバーに接続できるようにしてください。 この記事では、mysql クライアントがインストールされています。
  6. mydumper または myloader を自分の Azure VM にインストールする。 詳細については、 mydumper または myloader を使用して大規模なデータベースを Azure Database for MySQL に移行する | Microsoft Learn を参照してください。

1つ目と2つ目はそのままで問題ありませんでした
3つ目の内容に取り掛かりますが、ここで注意です。
デプロイ直後の Flexible server のネットワーク設定がガバガバになっていました。先に必要最低限の許可だけに変更しておきます

portal04
Flexoble Server の設定01:

改めて取り掛かります。Flexible Server への接続してみたところ、wordpress 用の DB はすでに作成されていました
なので3つ目の項目もクリアです

db01
Flexoble Server の設定02:

db02
Flexoble Server の設定03:

続いて4つ目です
作業用の Linux VM を作成します。今回は Ubuntu 20.04 を作成しました
5つ目ではその Linux VM に MySQL クライアント をインストールします

apt-get -y install mysql-client

インストールしたら接続できることを確認します

mysql -u [MySQLユーザ名] --password="[MySQLユーザのパスワード]" -h [MySQLサーバ名]

無事に接続ができることが確認できたので 6つ目に移ります。MySQL の接続を終了して、以下のコマンドを実行してツールをインストールします

wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb

これでようやく前提条件を満たせたので、次の手順に進みます
移行元の Database に mysql クライアントでアクセスし log_bin がソースで有効かどうかを確認します

SHOW VARIABLES LIKE 'log_bin';
db03
Flexoble Server の設定04:

続いて移行元サーバーにユーザーを作成します (SSL を有効にしているかどうかでコマンドが変わります。詳しくは公開資料を参照して下さい)

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';

続いてデータベースをバックアップします

mydumper --host=<primary_server>.mysql.database.azure.com --user=<username>@<primary_server> --password=<Password> --outputdir=./backup --rows=100 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl --regex '^(<Db_name>\.)' -L mydumper-logs.txt

次に取ったバックアップを移行先で復元します

myloader --host=<servername>.mysql.database.azure.com --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt

WordPress の設定

復元した Database を参照するように Web Apps の環境変数を変更します
Web Apps の構成メニューから「高度な編集」を選択し、DATABASE_NAME の value を編集します

portal05
Web App の設定:

これで移行してきた DB を参照するようになりました!が!!!
管理者アカウントでログインができなくなりました。。。。移行前の管理者アカウントで試してもだめでした。。
色々試行錯誤しましたがうまくいかず、結局今回は WordPress の移行機能でサイトのお引越しをすることにしました
手順は以前にやったものと ほぼ同じです
App Service のパフォーマンスを改善させる! | クラウドを勉強し隊

まとめ

新しい WordPress 環境に移行してみました。想定していたやり方ではありませんでしたが、MySQL DB の移行の経験ができたのでこれはこれでありです(ということにしたい)

共有

Kento
著者
Kento
2020年に新卒で IT 企業に入社. インフラエンジニア(主にクラウド)として活動中