WordPressをAppService on Linux上にデプロイする

AzureのApp Service on Linux(プレビュー)上にWordPressを構築する機会がありましたので、概要と手順を紹介します。
結論としては、Github連動などのApp Service付加機能を使うことで、Windows版とほぼ変わらない手順でLinux環境にもWordPressを構築できることを確認できました。

事前準備

ローカル環境でWordPressを構築しておく

WordPressは、Azureポータルから直接出来上がりのサイトを作成することができますが、いきなりサーバ上から開発を始めるのは気持ちが悪いので、私はいつも、ローカル環境でWordPressを構築 -> Githubリポジトリにプッシュ -> Azure App Serviceにデプロイという手順を踏むようにしています。

なお、ローカルでのWordPress構築手順自体は、本題から外れるのでここでは説明しません。
ちなみにローカルでのWordPress構築ではだいたい以下の環境を使っています。

  • PHP + MySQL環境: MAMP
  • WordPress: WP CLIでインストール
  • ソース管理: Github or Bitbucket

※ 最近は、Docker for Mac環境にもだいぶ慣れてきたので、MAMPからDockerベースに移行するかもしれません。

MySQLのDBをAzure環境に準備しておく

Azure上のMySQL環境構築は、現状以下3つの選択肢があります。ただし、App Service on LinuxではまだMySQL in appが使えないので、現時点ではClearDBあたりが無難でしょう。

ローカルで構築したWordPressのデータベース構造とデータをそのまま使いたい場合は、ローカルのMySQLを上記のどれかにエクスポートします。

App Service on Linuxについて

App Service on Linuxは執筆時点でプレビューなので、主に以下のような制約があります。

  • デプロイできるリージョン: West US, West Europe, Southeast Asia
  • Windows版App ServiceがデプロイされているResource Groupにはデプロイできない
  • CD: ローカルGitかGithubのみ利用可能
  • スロットリングは利用できない 等々

これら制約事項に注意しながら環境を構築していきます。

App Service on Linuxインスタンスの作成

ポータルの新規作成で「Web App On Linux(プレビュー)」を選択します。Dockerコンテナーの種類を選択するようになっているところが、手順的にもアーキテクチャ的にも最大の違いです。

WordPressは一般的なPHPスタックで動くので、Dockerイメージは「ビルトイン」からPHPのランタイムスタックを選択すればOKです。この設定画面でDocker Hubを選択できるようになっていたりするあたりは、非常に将来性を感じますね。

WordPressソースコードのデプロイ

ここまでの手順でPHPアプリが実行できるLinuxコンテナが起動しているので、あとは従来通りにWordPressのコードをドキュメントルートに配置するだけです。

この記事では、Githubリポジトリにローカルで作ったWordPressのソースコードがコミットされているという前提なので、App Service側でGithubとのリポジトリ連動設定をします。

数分も待てば、デプロイが完了するでしょう。なお、デプロイの仕組みはWindows版と基本的には同じエンジンKuduが動いているようです。なので、kuduの機能も一通り使えるようになると期待しておきましょう。

WordPressの起動

作成されたWebAppのURL(xxx.azurewebsites.net)にアクセスすると、WordPressのデータベース接続設定画面が表示されるはずです。Azure上のMySQLデータベースの接続先情報を設定します。

正しく接続設定ができれば、WordPressがローカル環境と同じように起動します。なお、ローカルからDBのデータを移行した場合、WordPress管理画面に接続するには、データベース内のwp_optionsにあるホスト名(2箇所あります)をAzure WebAppのURLに変更しましょう(これは今回に限った話ではありません)。

.htaccessの追加

ついにApp Serviceでも.htaccessを設定できる日が来ました!(そして当然ですが、web.configは不要になります)。この件は、App ServiceにLinux版が求められていた理由のTOPクラスにあげられるのではないでしょうか。

通常、.htaccessのような設定ファイルはソース管理には入れないはずなので、kuduのコンソールからbashで作成していきたいと思います(Linuxなので、もちろんbashが使えますよ)。

と、viで作成したかったところですが、vi自体は存在するもののコンソールが対応していないようです。残念。当面はFTP等でアップロードしましょう。
いずれにせよ、これでようやくWordPressがLinux環境のPaaSで動かせるようになります。GAがとても楽しみですね!

お知らせ

来る2017年1月16日に開催される「OSS on Azure 非公式コミュニティ 第2回ミートアップ」にて「現実的なWordPress on Azure App Serviceクイックスタート」と題したLTをやります。今回はApp Service on Linuxを紹介しましたが、LTではWindows版のApp Serviceベースで、明日から本番でも使えるノウハウを紹介する予定です。