Azure Web App で WordPress を手っ取り早く用意する

今日はビッグ・ボス から Azure に WordPress を用意してほしいとの要望があったので、折角なので IaaS ではなく PaaS を利用してみようと思います。

Azure Marketplace から検索、デプロイまで

「wordpress」で検索すると、いくつかヒットします。今回はこちらの Publisher が WordPress の Linux 版を利用します。この時点で概要をみると Azure Web App であることがわかりますが、それ以外に何もわからないところが少々残念なところ。

先に言ってしまうと Azure Web App for Container に WordPress のコンテナーがデプロイされます。ARMテンプレート、Docker イメージは下記が利用されていました。という意味では PaaS とゆうよりは CaaS なのでしょう。

  • https://github.com/azureappserviceoss/wordpress-azure
  • https://hub.docker.com/r/appsvcorg/wordpress-alpine-php

では早速 WordPress を用意してみましょう。

1

適当にパラメーター設定していき、次にサービスプランを選択します。
アプリケーションを動作させるインフラのグレードのようなものです。
ここでは B1 Basic を選択します。
App name はそのままURLとして利用されます。 カスタムドメインを利用することも可能で、ここで取得する (app name).azurewebsite.net に対する CNAME レコードを登録し、ポータル上から アプリに対してカスタムドメインを登録すればカスタムドメインが利用できます。

2

MySQLの設定をします。プランはミニマムなものを選択し、後々必要に応じてスケールアウトします。
ちなみにこの時点でランニングコストの概算は 月々10,000円強 (サービスプラン 6,000円、MySQL 4,000円程度) 仮にAzure 仮想マシンで同等のモノをつくろうとすると 可用性セットを組んだりするので仮想マシンが複数必要だということを考慮すると、Web App のほうがよいかもしれません。ただ、可用性セットを組む必要がなかったり、こまめにシャットダウンしてコストを抑止するのであれば Azure 仮想マシンのほうがコストも利便性も良いかもしれません。

3

早速、デプロイしてみましたがエラーになってしまいました。

4

Conflict と表示されていますね。詳細をみてみます。

5

WEBSITES_ENABLE_APP_SERVICE_STORAGE というパラメータが重複しているようです。
ARM テンプレートを確認してみると、確かに重複しています。なんだがバグっぽいですね。

6

WEBSITES_ENABLE_APP_SERVICE_STORAGE True が正解のようなので修正します。
パラメータについては ここに書かれています。
https://docs.microsoft.com/ja-jp/azure/app-service/containers/app-service-linux-faq

7

再デプロイをしますが、いくつかのパラメータがリセットされてしまっているので、再度入力して 「Purchase (購入)」します。これで再デプロイが実行されます。

8

今度はデプロイが成功しました。

9

Overview から確認できる URL にアクセスします。

10

初回セットアップで、これはどんどん次に進めます。

10

再度URLにアクセスすると、出来上がってます。

11

MySQLのアクセス制御

出来上がったリソースの中に DBaaS である MySQLがあります。気づいたかもしれませんが一切ネットワークを構築していません。バックエンドである MySQL への通信はグローバル越しにアクセスされています。MySQLの Inbound の通信を フロントエンドのIPのみに制限しましょう。

12

Azure CLI から Web App の IPアドレスを取得します。私は WSL (Windows Subsystem for Linux) の Ubuntu から実行しました。 IPアドレスは複数あり、これらの IP アドレスを MySQL の アクセス制限に使います。 この辺に書いてあります。
https://docs.microsoft.com/ja-jp/azure/app-service/app-service-ip-addresses

13

先程のIPアドレスを FWルールに追加します。デフォルトの AllowAll ルールは削除しました。

14

メールサーバーの用意 (SendGrid)

パスワードを失念した時などにメール配送するので、メールサーバーを用意します。といっても Azure では IaaS でメールサーバーを用意することは推奨されておらず、SendGridを利用します。

15

ポチポチ先に進めます。リソース名を決めるのが一番悩むのは私だけじゃないハズ。ちなみに Free プランは 月 25,000 通までは無料っぽいです。

16

WordPress に WP Mail SMTP by WPForms プラグインをインストールし、設定からSendGrid を選択します。 Crate API key から APIキーを発行できるので貼り付けるだけです。

17

一度これでデザイン担当に引き渡しますが、最小構成なので性能に懸念あり。暫くは様子見です。

18

おわり。

ご覧いただきありがとうございます! この投稿は役に立ちましたか? 役に立った 役に立たなかった

Be the first to comment

コメント投稿

Your email address will not be published.


*