世界第3位オープンソースCMSのDrupal構成一式をAWSで30分で作ってみた
世界シェア第3位のオープンソースCMSであるDrupal。皆さん、ご存知でしょうか。その歴史は長く、ホワイトハウスのWebサイトにも採用されていた(今はWordpressに変わったけど)、非常に強力なCMSです。
この度、Drupal構成をAWSのベストプラクティスに基づき超カンタンに導入できるQuickStartが公開されましたので、早速試してみた様子を報告します。
はっきり言って構築簡単すぎて衝撃でした。
踏み台サーバがあったりとか、Drupalサーバも冗長化されていて可用性が考慮されていたりとか、AutoScalingも設定済みだったりとか、Auroraもついていたりとか、即運用環境で使えそうな構成が30分ほど(ほぼ待ってるだけ)で作れてしまうので、Drupalに興味がある人は、是非一度試してみることをオススメいたします。
__ (祭) ∧ ∧ Y ( ゚Д゚) Φ[_ソ__y_l〉 Drupalダワッショイ |_|_| し'´J
Drupalとは?
Drupal - Open Source CMS | Drupal.org
オープンソースのCMSです。この界隈の王者Wordpressと同ジャンルの存在ですね。最新の世界シェアは、Wordpress、Joomlaにつづいて第3位とのこと。
Popular CMS & Market Share (2018) - WebsiteSetup.org
プロダクトの概要は、ANNAIさんの私たちがDrupalを使う4つの理由が、よく分かるかと思います。
自分も一つ前のメジャーバージョンDrupal7の頃に、Drupalを利用して家庭菜園系SNSを開発・運用していたのですが、その時からWordpressにはない非常に柔軟でパワフルな設計思想に圧倒された覚えがあります。
今回公開されたドキュメントとソース
Quick Startのメインページはこちら。こちらのページで、Drupal自体の概要と、クイックスタートで構築される構成のアーキテクチャが紹介されています。
- Drupal on the AWS Cloud Quick Start Reference Deployment
- PDF文書。今回公開されたテンプレートの概要と、実際のセットアップ手順が全てまとめられています。
- aws-quickstart/quickstart-drupal: AWS Quick Start Team
- 構築で利用するCluodFromationテンプレート
今回の記事では、PDFドキュメントのセットアップガイドにそって、構成を作っていきます。
構築されるDrupal環境の概要
構成要素の概要を記します。この構成が30分でできてしまいます。
- 2つのAZで構成されたVPC。AWSのベストプラクティスに基づきパブリックサブネットとプライベートサブネットで構成
-
パブリックサブネットに、オートスケーリング設定された踏み台サーバを配置
-
パブリックサブネットにNAT ゲートウェイを配置。プライベートサブネットのアウトバウンド通信で利用
-
各AWSリソースセットアップのためのIAMロールを作成
-
プライベートサブネットにDrupalサーバーとAmazon Auroraを配置
-
Drupalをクラスター構成とするため、Auto Scalingグループを設定
-
Amazon Elastic File System(Amazon EFS)を利用
ここまで書いときながら、構成要素としてEFSがあるため、この構成は東京リージョンでは使えません。うぅーん、残念!
なので北バージニアリージョンで試してみます。
クイック・スタート・ガイドに則り、一通り作ってみた
Quick Start Reference Deployment
この文書の、Deployment Stepsに則りながら、一通り作っていきます。AWSアカウントの用意から懇切丁寧に書かれているので、むっちゃ親切ですなぁ。以下に、簡単に自分が実施したときのメモも貼っておきます。
リージョン選択とキーペアの作成
最初にリージョンを選択します。今回、EFSが構成要素となっているので、EFS対応していないリージョンだと、途中でエラーとなるかと思います(参考:製品およびサービス一覧(リージョン別))
自分は、安定の「バージニア北部」を選択しました。
次に、EC2で利用するキーペアを作成します。名前は「drupal-key」としておきます。
CloudFormationテンプレートの起動
環境一式を作成するためのCloudFormationを起動します。今回は、新規のVPCに作成していくため、「Option1 Deploy Drupal into a new VPC)」を選択します。
CloudFormationのテンプレート選択画面が表示されるので「次へ」をクリックします。
詳細の指定画面が表示されます。ここで、今回作成するリソースに対する全てのパラメータが表示されています。必須入力の項目がいくらかあるので、これらについては、自分が作成したい環境に応じて設定していきましょう。
特段難しいところは無いかと思います。踏み台サーバにアクセスするためIPアドレスは、各環境に応じてAllowed Bastion External Access CIDRに設定します。
<必須入力項目>
- Availability Zones
- Bastion Host KeyPairName
- Allowed Bastion External Access CIDR
- Database Admin Password
- Drupal Site Admin Email
- Drupal Site Admin Password
- Drupal Database Password
- Autoscaling Notification Email
とりあえず作るだけなら上記パラメータを入れれば動きますが、その他Drupal関連でも非常に重要なパラメータ(Drupalバージョン7 or 8)とか、PHPのバージョンなども指定できるので、そのあたりはインストールガイドを参照してみてください。管理者ユーザー名もデフォルトから変えたほうが良いでしょう。
次に、CloudFormationで作成されるリソースに付与するタグを設定できます。このテンプレートの起動で関連リソースががっさり作られるので、区別をつけるために、Nameタグは付けておきましょう。
ここでは、Nameキーに、drupal-quickstartをつけておきます。
次へいき、その他値は必要に応じて設定し、AWS CloudFormationによるIAMリソース作成について承認のチェックを押した後、「作成」ボタンをクリック。
構成がそれなりにてんこ盛りなので、正座で待機します。チッチッチッちーん。30分ぐらいかかるので、お茶でもしばきましょう。スタックが全てCompleteになればOK。こんな感じです。
作成したDrupalサイトの動作確認
メインスタックの出力に、作成されたサイトのELBに付与されたURLが記載されているので、そこにアクセスしましょう。
無事、いつものDupalサイトが表示されました!!
管理者ログインして、Moduleの導入とかもすぐできます。あぁ、この画面懐かしい・・・
あとは、ドメイン取得して、このELBに対してCNAME貼れば、立派なDruplaサイトとして運用始めることができるかと思います。凄い時代になったもんですね。
関連リソースの削除はCloudFromationのスタックの削除から
一度作った環境を、全て関連リソース含めて削除する場合は、CloudFormationのスタックの削除から実施しましょう。
綺麗さっぱり消えてくれます。ここらへんはCloudForamiton使っているからこそですね。非常にお手軽に消すことができます。
まとめ「AWSにおけるDrupal構成のデファクトスタンダードとして利用できる」
「この構成が30分で手に入るとか、はっきり言って簡単すぎ。あの頃に戻りたい」
以前から、Acquiaや、その他様々なベンダーで、PaaSとしてのDrupalは種々提供されていましたが、AWSのQuickStartとして、Drupalが提供されたのは初めてだと思います。
最初のCloudFormationのパラメーターに、Drupalのパラメーターも含まれていて、AWSインフラだけではなく、Drupalのセットアップまで全てできるのは驚きでした。通常インフラ用意したとしても、その後、Drupal関連ソースダウンロードして、設定ファイル書き換えてDBセットアップして、Drupalのインストールという作業があるのですが、そこまでこれ一発でできてしまいます。楽すぎワロタですよ。ほんと。
更に、今回の構成の一番素晴らしいところは、DrupalサーバーがEFSにより冗長化されていること。Wordpressの冗長化でも常に問題になる複数台構成時のローカルリソースの同期ですが、EFSセットアップ済みで即使えるようになっています。さらに、AutoScaling設定されていて、自動的にスケールアウトしてくるとか親切すぎるでしょ。
事前の動作テストはもちろん必要ですが、Drupal周辺の適切な設定をしておけば、即運用環境で利用できそうな完成度の高さだと思います。
残念で仕方ないのが、EFSが東京リージョンで提供されていないことですね。バージニア北部でEFSが提供され始めてから随分たちますが、今しばらくの辛抱!待ちましょう!
AWSにおけるDrupal環境構築の非常に有用なQuick Startだと思いますので、気になる方はぜひ一度お試しいただければと思います。
それでは、今日はこのへんで。濱田(@hamako9999)でした。