HaneCa

独り立ちへ向けた長い道

AzureのPaaSにWordPressを設置する手順

投稿日: 2020年8月14日

今回は、AzureのPaaS上にWordpressを設置する方法を紹介します。これまで、WordpressをIaaS上で運用してきましたが、そろそろIaaSを卒業して、PaaSでサービスを運用していこうと思い、PaaS上に設置することにしました。 Azureのマーケットプレイスには、このようにAzure App Service用にWordpressのテンプレート が用意されていますが、実際に運用するにあたっては、不十分な点も多く、今回はゼロから環境構築をすることにしました。   簡単に今回の手順を紹介すると次のようになります。

  1. App Service (Windows)を作成
  2. Azure Database for MySQLを作成
  3. Azure Database for MySQLを構成
  4. App Serviceへカスタムドメインを設定
  5. App ServiceのカスタムドメインにLet’s Encryptを使って証明書を設置 (HTTPS通信設定)
  6. WordPressをApp Serviceへアップロード
  7. WordPressをAzure Database for MySQLに接続するよう設定

それぞれの手順について、紹介します。

設置にあたって注意すること

今回は、AzureのPaaS上にWordpressを設置する方法を紹介します。なぜ、Windows 上に設置設置したかというと、今回はサーバ証明書をLet’s Encryptと呼ばれる無料の証明書を使う予定ですが、3ヶ月で証明書が有効期限が切れてしまうため、自動的に更新するように設定できるようにします。 Azure App ServiceではコンテナのWindows / LinuxとOSを選択することができます。しかし、WindowsコンテナとLinuxコンテナでは、利用できる機能が異なるため注意が必要です。

App Service (Windows) を作成する手順

まず、Wordpressを設置するApp Serviceを作成します。azure portalへアクセスし、「リソースの作成 > Webアプリ」と選択します。そして、次の図のように、リソースグループ、インスタンス名、ランタイムスタック、オペレーティングシステム、地域、App Serviceプランを入力します。ここで、インスタンス名は、重複することができないので、独自の名前をつけてください。また、オペレーティングシステムは、この後の手順でWindowsでしか行えない作業を含むため、必ずWindowsを選択してください。 必要な項目を入力したら、「確認および作成」ボタンを押して、作成を完了してください。

Azure Database for MySQLを作成する手順

次に、Wordpressのデータベースとして、Azure Database for MySQLを作成します。azure portalへアクセスし、「リソース作成 > データベース > Azure Database for MySQL」と選択します。そして、リソースグループ、サーバー名、データソース、場所、バージョン、管理者ユーザー名、パスワードを次のように入力します。サーバー名は、重複することができないので、独自の名前をつけてください。 必要な項目を入力したら、「確認および作成」ボタンを押して、作成してください。

Azure Database for MySQLの設定

次に作成したAzure Database for MySQLを設定します。ここでは、App Serviceからデータベースへのアクセスを許可すること、また、現在、作業しているPCからアクセスしてデータベースを作成できるようアクセスを許可します。 まず、azure portal上で作成したAzure Database for MySQLへ移動し、サイドバー のメニューにある「接続のセキュリティ」を選択します。次に、「Azureサービスへのアクセスを許可」を「はい」にし、その下にある「現在のクライアントIPアドレスを追加する」を押して、現在の作業PCのIPアドレスが追加されるのを確認して、「保存」ボタンを押します。

App Serviceにカスタムドメインを設定する手順

次にApp Serviceにカスタムドメインを設定して、独自ドメインでアクセスできるようにします。まず、事前にドメインを管理するサイトでApp Serviceへルーティングするように設定します。例えば、Azure DNSで管理している場合、まず、azure portalのDNSゾーンから適切なドメインを選択します。次に、「レコードセット」ボタンを押して、レコードセットを追加します。名前にはカスタムドメインに設定したいFQDNを入力し、種類はCNAMEを選択してください。次にエイリアスのレコードセットは「いいえ」を選択し、エイリアスはApp ServiceのFQDNを入力します。そして、「OK」ボタンを押して作成を完了します。

次にApp Service側で設定をします。まず、azure portal上で作成したApp Serviceに移動します。次にサイドバー にある「カスタムドメイン」メニューを選択し、「カスタムドメインの追加」ボタンを押します。そして、カスタムドメインに、先ほど設定したCNAMEの名前を入力し、「検証」ボタンを押します。適切に設定できている場合、検証結果の項目が表示されるので、「カスタムドメインの追加」ボタンを押して追加を完了させます。

適切に追加できた場合、下の図のように状態フィルターに設定したカスタムドメインが表示されるようになります。

 

カスタムドメインにHTTPSアクセスできるようにする手順

次に設定したカスタムドメインにHTTPSでアクセスできるようサーバ証明書を設定します。今回はLet’s Encryptという無料でサーバ証明書を発行・利用できるサービスの証明書を利用します。 この設定には、アクセス権限をリソースグループに追加し、App Service上でLet’s Encryptの設定をする必要があります。まず、アクセス権限の設定方法について紹介します。

アクセス権限の設定

まず、アクセス権の設定に必要なクライアントID / クライアントシークレットを作成します。Azure Active Directoryにアクセスし、サイドメニューにある「アプリの登録」を選択します。次に「新規登録」ボタンを押し、次のように入力します。名前は任意の値で、アクセス範囲は一番上の「この組織ディレクトリのみに含まれるアカウント」を選択し、リダイレクトURIには先ほど設定したカスタムドメインを設定します。

次にリソースグループに作成したアプリ登録の情報を付与し、アクセス権を追加します。まず、リソースグループのリスト画面でApp Service が含まれるリソースグループを選択します。次にサイドバー にあるアクセス制御(IAM)を選択し、「追加」ボタンを押すと現れる「ロールの割り当ての追加」を選択します。そして、現れた右サイドのウインドウに役割を「共同作成者」、選択で先ほど作成したアプリの名前を選択します。

WebJobs用のストレージアカウントの作成

次に、App Serviceが定期的に証明書の有効期限を更新して、期限切れにならないようにするためのバッチ処理をApp Serivce内で運用できるWebJobsという機能がApp Serviceには備わっています。その機能を用いて、WebJobsが動作するための作業空間として、ストレージアカウントが必要になります。 まず、メニューの「リソースの作成」を選択して、ストレージアカウントを選択します。そして、次のように必要な項目を入力して、「作成」ボタンを押し、ストレージアカウントを作成します。

App ServiceでLet’s Encryptの設定手順

まず、azure portalで証明書を設定するApp Serviceにアクセスし、左のメニューから「拡張機能」を選択します。そして、「拡張機能の選択」で「Azure Let’s Encrypt」を選択し、「法律条項」を「Accepted」にし、「OK」ボタンを押します。

次に、拡張機能のインストールが完了したら、同じ「拡張機能」メニューの中で「Azure Let’s Encrypt」という項目が見えるようになるので、それを選択します。そして、「参照」ボタンを押すと、設定画面がポップアップします。 そして、次のように必要な項目を入力します。

まず、「Tenant」については、onmicrosoft.comで終わるApp Serviceが含まれるActive Directory名を入力します。次に、「SubscriptionId」については、Azureの課金オブジェクトであるサブスクリプションのIDを入力します。次に「ClientId」は、Active Directoryの作成したアプリを選択したときに表示されるクライアントIDを入力し、ClientSecretについては同じ画面のサイドメニューにあるを選択して、シークレットを作成して入力してください。次に、ResourceGroupNameについては、App Serviceが所属するリソースグループの名前を入力し、ServicePlanResourceGroupNameにはApp Service Planが所属するリソースグループ名を入力します。そして、UseIPBasedSSLはチェックしないまま、SiteSlotNameも空のままにします。そして、DashboardConnectionStringとStorageConnectionStringには、先ほど作成したストレージアカウントの画面で、サイドメニューの「アクセスキー」を選択し、接続文字列にある値を入力してください。そして、Update Application Settings and Virtual Directory (If needed)はチェックしないままにしてください。 そして、「Next」ボタンを押して登録を完了させます。

 

WordPressをApp Serviceへアップロードする手順

次に、WordpressをApp Serviceへアップロードします。App Serviceではオンラインストレージから同期、Git、FTPでアップロードすることができます。どのような方法に対応しているかは、サイドメニューの「デプロイメント > デプロイセンター」を選択すると利用可能なサービス一覧が見られます。

その中で、今回は、FTPでアップロードする方法を選択しました。「FTP」を選択し、「ダッシュボード」ボタンを押します。すると、下の図のようにFTPエンドポイントのURL、ユーザ情報(ユーザ名、パスワード)が表示されるため、その情報を使って、FTPクライアントでアクセスし、wordpressのサイトからダウンロードした最新のソースコードを解凍して、アップロードしてください。

私の場合、普段のコーディングにVisual Studio Codeを利用しているので、一番簡単にアップロードできる方法は、Azure App Service 用のプラグインを利用する方法で、Wordpressをアップロードしました。

このプラグインをインストール後に、Azureのアイコンをクリックすると、App Serviceのリストが表示されます。ここで、赤枠で囲った上向の矢印を押すとメニューが現れ、ディレクトリごとWordpress一式をアップロードできます。

WordPressをAzure Database for MySQLに接続する手順

Azure Database for MySQL は、デフォルトでSSL接続するようになっていますが、WordPressは同じマシンに設置されたMySQLサーバへ接続することを想定しているため、SSLに対応していません。そのため、いくつかの手順をふむ必要があります。今回は、こちらのサイトを参考にしながら、証明書をApp Serviceへアップロード、App Serviceの環境変数に証明書のパスを追加し、wp-config.phpにその情報を書き込むという作業を行いました。

そして、ブラウザでApp Serviceにアクセスし、Azure Database for MySQLの情報を登録すると、無事に接続できるようになります。

参考サイト

 

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください