Azure Web App で WordPress 環境構築 (できる限りリーズナブルな方法で) ~ 2019年7月版

  • by

最近 Azure App Service Web App で WordPress 環境を構築することになりました。幾通りかの方法がありますが、検討過程とそのうちの一つを一例としてご紹介します。

サービス構成と必要な作業、考慮点

サーバー+DB の構成、および WordPress のインストール

今回は、Web サーバーとしてのコントロールのしやすさを考慮しつつ、ひとまずテスト稼働させることを目的としました。

自分で Virtual Machine を作成して全ての環境構築を行う方法もありますが、Azure の強みである Managed Service を利用する場合は、以下のような選択肢になるかと思います。

OS に Windows を選択した場合の方法を検証したく、ひとまず Azure Web App (Windows) + MySQL in-app に WordPress インストールする方法を取ることにしました。

追加設定

ブログとして暫く運用するために、以下の追加設定を検討、実施します

  • 画像・動画用ストレージとして Azure Blob Storage を利用
  • MySQL in App の設定を動的に取得
  • 直接 Azure Web App に独自ドメインを設定 : 後日追記
  • 独自ドメイン設定 および SSL 対応として Azure CDN を利用 : 後日追記
  • MySQL in-app から Azure Database for MySQL に移行 *1
    • *1) こちらは “リーズナブル” かどうかはケースバイケースですので、後日実際に移行した場合に追記していきます

Azure Web App をベースとした WordPress ブログサイトの作成

Azure Web App の作成

Azure Portal から Azure Web App を作成します。

2019 年 7 月現在、WordPress の最新バージョンは 5.2.x、PHP の推進バージョンは 7.3 なので、OS が Windows/ Linux いずれにしても対応するバージョンに設定します。

Azure Web App の使用言語として PHP を選択すると、デフォルトで OS が Linux に設定されます。OS を Windows にしたい場合は、一旦 .NET などを指定して作成します。

作成後に Azure Web App の設定で PHP 7.x を有効にします。

Azure Web App が作成できたら、設定から MySQL in App を有効にします。

Azure Web App のコンソールを開き、d:\home\data\mysql にアクセスします。このディレクトリに MYSQLCONNSTR__localdb.txt というファイルが生成されているか確認します。(MySQL を有効化してから txt ファイルができるまで暫く時間が掛かりますので、WordPress ソースコードのダウンロードなどの次の作業を一部やっておくと良いですね。)

作成されていたら、cat コマンドで内容を表示すると、 このように MySQL にアクセスするための情報が表示されますので、これらをローカルに保存しておきます。

d:\home\data\mysql>cat MYSQLCONNSTR_localdb.txt
Database=localdb;Data Source=127.0.0.1:YOUR_PORT;User Id=azure;Password=YOUR_PWD

一旦ここで Web App のURL (YOUR_APPNAME.azurewebsites.net といったURLになっていると思います) Azure Web App が正常に作成されているのを確認しておきます。

WordPress のインストール

インストールする WordPress のソースをダウンロードしておきます。WordPress ソースコードのアップロードと展開はAzure Web App の標準機能である App Service Editor を使用します。

WordPress を展開したいディレクトリに移動し、zip ファイルのまま ドラック&ドロップ します。zip ファイルを右クリックして Extract All を行い、展開されたら準備完了です。

ブラウザーから Web App の URL/wordpress (※wwwroot に wordpress-x.x.zip をドロップして展開した場合) にアクセスします。 ここから通常の WordPress インストールを行います。

MySQL の設定は、先程ローカルに保存しておいた DB 設定を使用してください。

WordPress のインストールが完了し、WordPress の管理ページや WordPress デフォルトテーマのトップページが表示できたら、最低限の作業は終了です。

Azure Web App × WordPress を使ったブログサイトでやっておきたい設定

画像・動画用ストレージとして Azure Blob Storage を利用

ブログに掲載する画像や動画はデフォルトでは Azure Web App 内に保管されるため、Web App の容量を気にせずに利用できるよう、画像&動画用ストレージを Azure Blob Storage に (別に) 設定します。

といっても、そんなに難しい設定は必要なく、Microsoft Azure Storage for WordPress というプラグインがあります。Azure Blob Storage を作成して、画像&動画を格納するコンテナーを作成、WordPress 管理画面からプラグインの設定画面で Storage アカウント名、接続文字列 およびコンテナー名を設定するだけです。

MySQL in App の設定を動的に取得

MySQL in App の制限事項として、複数の Web App で MySQL を共有しているために、Web App の停止時間や再起動があった場合、別のポートが割り振られる場合があります。

ポートは常に MYSQLCONNSTR__localdb.txt にアップデートされますので、動的に取得するようにソースコード (WordPress インストールディレクトリ\wp-config.php) を、例えば以下のように編集します。

wp-config.php – 編集前

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define( 'DB_NAME', 'localdb' );

/** MySQL database username */
//define( 'DB_USER', 'azure' );

/** MySQL database password */
//define( 'DB_PASSWORD', 'YOUR_PWD' );

/** MySQL hostname */
//define( 'DB_HOST', '127.0.0.1:YOUR_PORT' );

wp-config.php – 編集後

foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
continue;
}

$connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

/** The name of the database for WordPress */
define('DB_NAME', $connectstr_dbname);
/** MySQL database username */
define('DB_USER', $connectstr_dbusername);
/** MySQL database password */
define('DB_PASSWORD', $connectstr_dbpassword);
/** MySQL hostname */
define('DB_HOST', $connectstr_dbhost);

直接 Azure Web App に独自ドメインを設定

ひとまず Azure Web App に独自ドメインを設定する場合は、D1 以上のプランを利用し、CNAME および A Record を構成します。[後日詳細を追記]

独自ドメイン設定 および SSL 対応として Azure CDN を利用

Azure Web App で独自ドメインを利用するには D1 以上、SSL に対応するには S1 以上のプランを利用する必要があります。そこで、それらを手軽に&リーズナブルに利用するのに Azure CDN を利用します。[後日詳細を追記]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です