Azure App Service / WordPress on Linux (preview) を探る - 1

f:id:itaoyuta:20171020232853p:plain

前置き

受託案件で、Azure縛りでWordPressを立てる必要があって検証しました。
Azureについては、"AWS, GCPと並ぶ大きいサービス"くらいの認識だったので、実際に触るのは初めてです。
実際触っていて感じたのは、想定以上にUIがよくて、GUI操作感について個人的には3大クラウドサービスで一番使いやすいと思いました。
また、Azureが提供するデプロイ機構が本当に素晴らしく強力かつシンプルで、機会があれば今後積極的に導入したいと思うほどよくできています。
この辺り、大企業の提供するPaaS環境*1の強いところですね。

個人的にはとても良かったので、WordPress開発手法のひとつとして参考にしていただけたらと思い、チュートリアルな要素も含めつつ記事化してみようと思います。

今回の記事は、チュートリアルな要素もありつつでちょっと長くなりそうなので、2記事に分割して更新します。

  1. サービスとOS/ミドルウェア
  2. 開発環境 / 運用とデプロイフロー

と展開しました。
この記事では、Azure App Service / WordPress on Linux (preview)そのものについてと、提供されるOS/ミドルウェアの解説まで行きます。

1.サービスとOS/ミドルウェア

Azure App Service / WordPress on Linux (preview)について

MicrosoftのサービスAzureの提供するAzure App ServiceというPaaS環境を提供するサービスの中の、WordPress on Linux (preview) というひとつのパッケージです。
長いですね、、文字にするとすごく長くなってしまい、説明するときに若干言いづらいのです。
一口にAzureといってもサービス全体は膨大ですね。。
全体像に関してはこちらがわかりやすかったです。

App Serviceの他パッケージについて

App Serviceはいくつかのパッケージを提供していて、いくつかカテゴライズされています。
今回利用するWordPress on LinuxWeb Appsカテゴリーに属していて、カテゴリー自体では2017年10月時点で56のサービスを提供していました。
カテゴリー自体は9あるので、サービスのバリエーション豊富さがよくわかるかと思います。
同じCMS系で言うとDrupalがあったり、単純なphp x MySQL環境とかもあったりします。

また、WordPress on Linux と明示していることからわかる様に、on Windows*2が元々存在していて、WordPress on Linuxパッケージが提供され始めたのは2017年3月あたりと、ここ最近の出来事のようです。
WordPress側が推奨環境にWindowsを置かない限り、いずれWindows on Wordpressパッケージは淘汰される運命にありそうな予感がします。

運用を想定する場合気になるpreview印について

あくまで検証から得られた個人的な見解で、正式なリリース情報ではありませんというのを前提に話を進めると、要点としては

  1. App Service on Linux on Wordpressによるプロバイダー側未検証
  2. Azure Database for MySQL preview

があると理解しています。 この部分以外に関しては、既存のpreview印がついていない既存パッケージと同様なためです。
※もし上記以外の理由が考えられる場合は、ご指摘いただきたいです。

App Service on Linux with WordPressによるプロバイダー側未検証

App ServiceはそもそもWindows OS環境からスタートしているっぽく、App Service on LinuxがGA*3されたのは2017年9月と、つい最近の出来事です。
そのリリース環境に対しての、WordPress動作確認/サポート体制がまだ十分に完了仕切っていないのではないかと推測されます。

Azure Database for MySQL preview

WordPress on Linuxでは、データベースに

を選択できます。
Azure Database for MySQL previewとpreviewを選択肢として提供している部分が、上位概念のWordPress on Linuxへ伝播してそれ自体もpreview扱いになるのはわかりやすいですね。
Azure Database for MySQL preview自体のpreview制約はこちらの通りです。
運用パターンによって厳しいところはありそうですが、ゲームのような複雑ユーザアクションが絡んだり、時間によってデータ蓄積の増減性があるようなものではない、静的なサイトではまず問題なさそうかなと思いました。

OS/ミドルウェアについて

データベースはアプリ初期構築時に選んだので、MySQL5.7ですが、それ以外はどうなっているのでしょう。

まず大前提として、App ServiceはDocker imageを基に構築されます。
なので、そのDocker imageを辿ればOS/ミドルウェアに何を利用しているか、独自に何を設定しているのかを確認できます。
それでは追って確認していきます。

Azure App Service / WordPress on Linux (preview) を作成

※Azureへの登録等はすっ飛ばします。

まず、Azure portalへログインして左カラムからApp Serviceを選択してWordPress on Linux (preview) を選択し、必要事項を記入してアプリを作成します。

f:id:itaoyuta:20171020212733p:plain

f:id:itaoyuta:20171020213304p:plain

今回は、Azure Database for MySQL previewを利用してみることにしました。
余談ですが、リージョンは東日本と西日本を比較すると3割ほど料金に差がでてくるそうです
日本限定のサービスで、そこまでレイテンシを気にしないサービスなら西日本がよさそうですね。

f:id:itaoyuta:20171020214215p:plain

デプロイされてます、作成にはまぁ5分くらいかかりますので気長にまちましょう。

紐づいているリソースを調べる

App Service作成が完了して、管理画面に入ると色々項目がでてきます。
ここでまず最初にアプリケーション設定を見て見ると

f:id:itaoyuta:20171020215422p:plain

Linux アプリ用のスタック構成は、コンテナーで定義します。

とあります。クールですね。
検証時に色々調べていたのですが、ドキュメントルート等ここで個別に設定したりするパッケージもあるようです。
ですが、このAzure App Service / WordPress on LinuxではDockerで設定しとけと。
時代はDocker基礎知識必須ですね。
新しいサービスは、コンテナ技術をベースに作られていることがよくわかりました。

そしてDocker コンテナーへ移動してみると

f:id:itaoyuta:20171020215956p:plain

バッチリありますね。

https://hub.docker.com/r/appsvc/apps/tags/
を辿って
https://github.com/Azure-App-Service/apps/blob/master/apache-php-mysql/0.2/Dockerfile
です、見えてきました。

Dockerのイメージって、概念的にはなるべく細切れにして、複数を構成してオーケストレーションするってのが基本かなという知見でした。
が、こういう扱い方というかこうやってひとつにまとめちゃうってパターンも、場合によってはありだなと思いました、面白いです。

構成を抜き出して見る

最終的な結論として、設定されているDocker imageのDockerfileから2017年10月時点でAzure App Service / WordPress on Linux (preview)として提供されているOS/ミドルウェアのデフォルト構成は

ということがわかりました。

WordPressパッケージの参照を確認する

ついでに、同梱されているWordPress環境を調べて見ます。
こちらは非常に簡単で、概要 -> 外部リポジトリプロジェクトで確認できます。

f:id:itaoyuta:20171030150057p:plain

github.com

こちらのリポジトリのmaster最新が上がるたびにwebhookでリソースの更新がかかるようになっています。
このあたりは、「2.開発環境 / 運用とデプロイフロー」で説明するとして、今回はこのリソースが利用されていることだけわかれば問題ありません。

次回は、開発環境について確認していこうと思います。

itaoyuta.hatenablog.com

*1:ソフトウェアを構築および稼動させるための土台となるプラットフォームを、インターネット経由のサービスとして提供する。 Wikipedia

*2:正式にはAzure App Service / WordPressです

*3:General Availabilityの略。GAされる大きな恩恵のひとつにはSLAが保証されることがあります。