こつこつエンジニア

あわてないあわてない、でも休まずこつこつと。。

Drupal9をAWSにインストールしよう!

f:id:madai21:20210706213345j:plain

はじめに

皆さん、Drupal(ドルーパル)をご存じでしょうか?
オープンソースソフトウェアのコンテンツ管理システム:CMS(Contents Management System)の一つです。
聞いたことない方も多いかもしれません、私も仕事で聞くまで知りませんでした^^;
CMSで有名なのはWordPressですが、株式会社DataSignのデータによりますと1位 WordPress(3003件)、4位 Drupal(92件)みたいです。

datasign.jp

今回はこのDrupalの最新版(2021/7/6現在)であるDrupal9.2.0をAWSにインストールし、ブラウザからDrupalのTopページを表示させるところまでしたいと思います。

AWSは無料枠の範疇でしようと思ってますので固定IPアドレス化などはしませんw

事前準備

 以下の項目が必要となりますので事前に準備お願いします。

  • AWSのアカウントを用意

aws.amazon.com

  • TeraTermを用意(こちらで使用するバージョンは4.105です)

ja.osdn.net

完成図

 

f:id:madai21:20210706230306p:plain

こんな感じで構築をイメージしています(雑な絵ですみませんw)

LAMPですね^^

手順

以下の流れで順に対応していきたいと思います。

  1. EC2インスタンス(Linuxサーバー)の作成
  2. ApachePHPなどをインストールしWEBサーバーの機能構築
  3. WEBブラウザからEC2のホームページを確認
  4. RDSインスタンス(DB(MySQL)サーバー)の作成
  5. EC2にMySQLクライアントをインストールしEC2からRDSへのアクセス確認
  6. EC2にDrupalダウンロード(インストーラーをWEBブラウザから実行できるように配置)
  7. WEBブラウザからDrupalインストール
  8. WEBブラウザからDrupalのTopページを表示することを確認

1. EC2インスタンス(Linuxサーバー)の作成

AWSログイン後にサービスからEC2を選択します。

f:id:madai21:20210707013704p:plain

EC2からインスタンスを選びインスタンスの作成を行います。

f:id:madai21:20210706235029p:plain

マシンイメージには無料枠のAmazon Linux 2AMIを選択します。

f:id:madai21:20210706235132p:plain

インスタンスタイプも無料枠のt2.microを選択していることを確認し確認と作成ボタンを押します。

f:id:madai21:20210706235250p:plain

このページでは特に何もせずに起動ボタンを押します。

f:id:madai21:20210706235430p:plain

すると以下の画面のようにキーペアを作成する画面になるので、キーペア名にキーペア名を何か適当に(今回はkeyとします)入力し、キーペアのダウンロードボタンを押してPCのどこかにキーペアファイル(key.pem)を保存しておきます。

保存したらインスタンスの作成ボタンを押します。

※これは後ほどTera Termからの遠隔操作で使用しますので無くさないようにしましょう。無くなったらアクセスできなくなりますのでご注意を。

f:id:madai21:20210706235510p:plain

以下の画面が表示されたら赤丸の個所をクリックします。

f:id:madai21:20210706235851p:plain

生成したインスタンスの情報が確認できるので、パブリックIPアドレス(今回は54.65.61.202)とプライベートIPアドレス(172.31.38.68)を忘れないようにどこかにメモしておきます。

f:id:madai21:20210706235932p:plain

2. ApachePHPなどをインストールしWEBサーバーの機能構築

Tera Termを起動し、生成したインスタンスのパブリックIPアドレスを入力しSSHで接続するためOKボタンを押します。

f:id:madai21:20210707001144p:plain

初回接続時のみ以下の画面出ますので続行ボタンを押します。

f:id:madai21:20210707001259p:plain

ユーザー名は「ec2-user」、パスワードはなし、認証方式にRSAを使うインスタンス生成の時に保存したキーペアファイル(key.pem)を選択した後にOKボタンを押します。

f:id:madai21:20210707001346p:plain

以下の画面が表示されたら接続成功しています。

f:id:madai21:20210707001619p:plain

以下のコマンドを上から順に入力しLinuxを更新しておきます(途中の選択肢はすべてyで)

sudo su -
amazon-linux-extras -yinstall epel
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum update -y

以下のコマンドを上から順に入力しApacheをインストールしサービスを開始します。

yum -y install httpd
service httpd start

以下のコマンドを上から順に入力しPHP8.0をインストールします。

※なぜPHP8.0かというとDrupal9の要件でPHPが8以上必須のためです^^;

https://www.drupal.org/docs/system-requirements/php-requirements

yum -y install php80 php80-php php80-php-mbstring php80-php-pdo php80-php-xml php80-php-fpm php80-php-mysqlnd php80-php-gd php80-php-opcache
alternatives --install /usr/bin/php php /usr/bin/php80 1

以下のコマンドでhttpd.confを編集開始し、AllowOverrideをNoneからAllに変更しておきます。

vim /etc/httpd/conf/httpd.conf

f:id:madai21:20210707005403p:plain

f:id:madai21:20210707005413p:plain

以下のコマンドでTopページをPHPで作成しておきます(中身は何でもいいですが、今回はPHPの情報を表示させるページにしています)

vim /var/www/html/index.php

f:id:madai21:20210707010647p:plain

以下のコマンドでApahceのサービスを再起動します。

service httpd restart

3. WEBブラウザからEC2のホームページを確認

AWSに戻りEC2インスタンスのセキュリティグループのインバウンドルールにHTTPを許可するようにします。

f:id:madai21:20210707003646p:plain

f:id:madai21:20210707003703p:plain

f:id:madai21:20210707003719p:plain

f:id:madai21:20210707003735p:plain

タイプをHTTP、ソースに0.0.0.0/0を選択し、ルールを保存ボタンを押します。

f:id:madai21:20210707003818p:plain

ブラウザ上でhttp://インスタンスのパブリックIPアドレス(今回の場合はhttp://54.65.61.202)を入力してみます。

以下のような画面が表示されていたらEC2でApache+PHPが無事動作しています。

f:id:madai21:20210707011300p:plain

4. RDSインスタンス(DB(MySQL)サーバー)の作成

AWSのサービスからRDSを選択します。

f:id:madai21:20210707013740p:plain

データベースからデータベースの作成を押します。

f:id:madai21:20210707015017p:plain

エンジンのオプションはMySQLを選択します。

f:id:madai21:20210707015051p:plain

テンプレートは無料利用枠、DBインスタンス識別子はdrupalを入力します。

f:id:madai21:20210707015130p:plain

パスワードを設定しておきます。

※後ほどDrupalのインストール時に必要になりますので忘れないようにして下さい。

f:id:madai21:20210707015547p:plain

ストレージの自動スケーリングを有効にするのチェックを外しておきます。

f:id:madai21:20210707015426p:plain

データベース用に新しいセキュリティグループを割り当てておきます。

今回はDatabaseSecGroupとしておきました。

アベイラビリティゾーンにap-northeast-1aを選択しておきます。

f:id:madai21:20210707015734p:plain

追加設定を開いて、最初のデータベース名にdrupalを入力しておきます。

f:id:madai21:20210707020801p:plain

データベースの作成を押します。

f:id:madai21:20210707020922p:plain

ステータスが利用可能になるまで待ち(数分かかると思います)、利用可能になったらDB識別子の個所をクリックします。

f:id:madai21:20210707020956p:plain

VPCセキュリティグループのインバウンドを設定するべく、赤丸の個所を順次クリックしていきます。

f:id:madai21:20210707021101p:plain

f:id:madai21:20210707021141p:plain

f:id:madai21:20210707021155p:plain

ルールを追加ボタンを押します。

f:id:madai21:20210707031859p:plain

タイプをMYSQL/Aurora、ソースにEC2のプライベートIPアドレスを選択し、ルールを保存ボタンを押します。

f:id:madai21:20210707021303p:plain

5. EC2にMySQLクライアントをインストールしEC2からRDSへのアクセス確認

Tera Term上で以下のコマンドを入力しMySQLクライアントをインストールします。

yum -y install mysql

以下のコマンドを入力しEC2からRDSにアクセスできることを確認します。

mysql -h drupal.cyy0bgoeffbi.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p

以下のような表示であればRDSにアクセスできています。

quitを入力してmysqlを終了します。

f:id:madai21:20210707022831p:plain

6. EC2にDrupalダウンロード(インストーラーをWEBブラウザから実行できるように配置)

以下のコマンドを上から順に入力しDrupalをダウンロードし展開します。

cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-9.2.0.tar.gz
tar -xzvf drupal-9.2.0.tar.gz
cd /var/www/html/drupal-9.2.0/sites/default
cp -pr default.settings.php settings.php
chmod a+w settings.php
mkdir files
chmod a+w files

以下のコマンドでApahceのサービスを再起動します。

service httpd restart

7. WEBブラウザからDrupalインストール

ブラウザ上でhttp://インスタンスのパブリックIPアドレス/drupal-9.2.0(今回の場合はhttp://54.65.61.202/drupal-9.2.0)を入力してみます。

以下のような画面が表示されていたらEC2でDrupalインストーラーが無事動作しています。

f:id:madai21:20210707023808p:plain

Choose languageをEnglishに変更し、Save and Continueボタンを押します。

f:id:madai21:20210707024938p:plain

Save and Continueボタンを押します。

f:id:madai21:20210707025132p:plain

Database nameをdrupal、Database usernameをadmin、Database passwordをRDSのインスタンス作成時に設定したものに設定します。

ADVANCED OPTIONSを開いて、Hostにdrupal.cyy0bgoeffbi.ap-northeast-1.rds.amazonaws.comを設定し、Save and Continueボタンを押します。

f:id:madai21:20210707025159p:plain

インストール中の画面に切り替わるのでしばらく待ちます。

f:id:madai21:20210707025506p:plain

しばらくすると以下の画面が表示されますので。

Site nameとSite email addressに適当な内容を入力します(内容はなんでもいいです)

UsernamePasswordに管理用情報を入力します(Drupalの管理で必要になります)

f:id:madai21:20210707025600p:plain

赤丸をすべて入力したら、Save and Continueボタンを押します。

f:id:madai21:20210707025443p:plain

以下の画面が表示されたらDrupalのインストールが成功です。

f:id:madai21:20210707030013p:plain

8. WEBブラウザからDrupalのTopページを表示することを確認

ブラウザ上でhttp://インスタンスのパブリックIPアドレス/drupal-9.2.0(今回の場合はhttp://54.65.61.202/drupal-9.2.0)を再度入力してみます。

f:id:madai21:20210707030232p:plain

今度はDrupalのTop画面が表示されましたね^^

おわりに

お疲れさまでした、結構やることあって長かったですね^^;

今回導入したのはDrupalのCoreの部分だけですが、拡張モジュールもいろいろありそうで面白そうですね。

時間があれば今度はDrupalの機能について触れてみたいと思います。

最後に今回参考にさせていただいたURLを記載させて頂きます。

qiita.com

qiita.com