Drupal8をAWSにインストール（サーバ初心者向け）

#はじめに

AWSにDrupal（Ver.8）をインストールするまでの手順をご紹介します。
Drupalのインストール部分だけでなく、サーバ環境を構築するところからご紹介しようと思います。
私自身、サーバまわりについては素人レベルなので、同じような立場の方（黒い画面はなんとなくいじれるレベルの方）にも出来るだけ分かりやすくご紹介しようと思います。

#今回構築する環境
- AWS：EC2,RDS
- Webサーバ：Apache
- 言語：PHP
- DB：PostgreSQL
- Drupal（Ver.8）

#AWSのマネージメントコンソール（コンパネ）にログイン

まずは、下記ページを参考にAWSのアカウントを作成。
https://aws.amazon.com/jp/register-flow/

アカウントを作ったら下記URLからログイン。
https://console.aws.amazon.com/console/home
![01.png](https://qiita-image-store.s3.amazonaws.com/0/35148/a834326d-7fcf-dc06-b737-f0c970a1273d.png)

リージョン（データセンターの場所）は特に海外を選ぶ理由はないので「東京」を選択して、「EC2」をクリック。
![02.png](https://qiita-image-store.s3.amazonaws.com/0/35148/2a572e04-0cf4-d887-e1a3-263c14cbf412.png)

#EC2インスタンス（サーバ）を作成

Drupalをインストールするためのインスタンス（サーバ）を作成。
左ナビの「インスタンス」から、「インスタンスの作成」をクリック。

>「インスタンス」とは？
>http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html
>インスタンスとは AWS クラウドにある仮想サーバーです。Amazon マシンイメージ（AMI）からインスタンスを起動します。AMI はインスタンスに対して、オペレーティングシステム、アプリケーションサーバ－、およびアプリケーションを提供します。

![03.png](https://qiita-image-store.s3.amazonaws.com/0/35148/86084f8c-33cd-0429-1378-1800a8541f9d.png)

Amazon マシンイメージ（AMI）を選択。
>Amazon マシンイメージ（AMI）とは？
>http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AMIs.html
>>Amazon マシンイメージ（AMI）は、クラウドの仮想サーバーであるインスタンスの起動に必要な情報を提供します。

今回は、Amazon Linuxを選択。。
>Amazon Linux AMI とは何ですか?
>https://aws.amazon.com/jp/amazon-linux-ami/faqs/
>>Amazon Elastic Compute Cloud（Amazon EC2）で使用するアマゾン ウェブ サービスによって提供される、サポートおよび管理された Linux のイメージです。

AmazonさんがよろしくやってくれているOSのようですね。
せっかくなので使ってみます。

![04.png](https://qiita-image-store.s3.amazonaws.com/0/35148/f93dc43f-7fbf-cd4d-9b16-3ff829cd276d.png)

インスタンスタイプ（仮想サーバのスペック）を選択。
無料枠内のインスタンスを選択。お金は大事。
（この時点では、t2.micro（1vCPU,2.5GHz,1GiB,EBSのみ）となっています）
「確認と作成」をクリック。

![05.png](https://qiita-image-store.s3.amazonaws.com/0/35148/239f4531-ea0e-3753-4c2d-2837ecec78a3.png)

手順3～6はスキップされて、7.確認の画面に行きます。
「セキュリティループが・・・」と注意っぽいの出てきますが、あとで設定するのでひとまず気にしないで先に進みます。

キーペアを作成。
SSHでインスタンスに接続する際に必要です。
「新しいキーペアを作成」を選択。
キーペア名には適当な名前を入力。
キーペアをダウンロード。
「新スタンスの作成」をクリック。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/35148/3921460a-169d-6d25-9687-d50f7cc29a94.png)

「インスタンス」の画面に行くと、インスタンスが追加されています。
しばらくすると、「インスタンスの状態」が「running」（稼働中）となり、利用可能な状態となります。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/35148/ba41bff1-5414-1b76-5a6e-c2cf46ece3a4.png)

#セキュリティグループの設定

「セキュリティグループ」の画面に行くと、「セキュリティグループ」が一つ追加されています。

>Linux インスタンスの Amazon EC2 セキュリティグループとは？
>http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-network-security.html
>>インスタンスのトラフィックを制御する仮想ファイアウォール

AWSではマネジメントコンソール（コンパネ）上でファイアウォール設定ができようです。

インスタンスを作成すると、同時にセキュリティグループも一つ追加されます。
グループ名が「launch-wizard-1」というのが、新たにつくられたもの。
初期の「インバウンド」（インスタンスの中に入ってくるトラフィック）のルールには、「SSH（ポート22）」が設定されていると思います。
のちほどSSHで接続するのでそのままで。
「アウトバウンド」（外に出て行くトラフィック）は「すべてのトラフィック」になっているはずです。これもそのままで。

![08.png](https://qiita-image-store.s3.amazonaws.com/0/35148/ad47554c-4a0b-9490-99bf-ad3b7fd77a70.png)

#IPの設定
EC2インスタンスには、作成された時点ですでにパブリック（グローバル）IPが付与されていますが、そのままだとインスタンスを停止→起動した際にIPが変わってしまいます。（再起動では変わらないようです）
ころころとIPが変わってしまうのは困るので、Elastic IP（EIP）でというものでEC2インスタンスのパブリックIPを固定化します。

##EIPを作成
「Elastic IP」から「新しいアドレスの割り当て」をクリック。
「関連付ける」をクリック。

![09.png](https://qiita-image-store.s3.amazonaws.com/0/35148/2cc778db-a337-3c72-d81d-398322f739d4.png)

EIPが新規で作成されました。
「Elastic IP」という部分が付与されたパブリックIPアドレスです。

![10.png](https://qiita-image-store.s3.amazonaws.com/0/35148/c606c596-cb78-6ca8-59e3-fa23bd841d62.png)

##EIPをEC2インスタンスに割り当てる（関連付ける）
先程作成したEIPのを選択。
「アクション」をクリック。
「アドレスの関連付け」をクリック。

「インスタンス」の入力欄にカーソルあてると、作成したインスタンスが表示されるので、その中からEIPを関連付けさせたいEC2インスタンスを選択。

![11.png](https://qiita-image-store.s3.amazonaws.com/0/35148/153daa82-b37f-acf1-95a8-b39d576717b6.png)

インスタンスを選択すると、自動でプライベートIPアドレス欄も入力されるので、そのまま「関連付け」をクリック。

![12.png](https://qiita-image-store.s3.amazonaws.com/0/35148/eb35f228-c7e9-9808-f9dd-f7823341f139.png)

これで、EIPがインスタンスにちゃんと割り当てられました。
EIPのアドレスが、「インスタンス」の「EIP」に表示されていれば、割当完了。

![13.png](https://qiita-image-store.s3.amazonaws.com/0/35148/c39326f2-1619-d8bf-0f44-091c71e2c409.png)

これでひとまずEC2インスタンス（サーバ）を準備するところまでができました。
次はこのインスタンス内に、Durpalをインストールするための環境を整えていきます。

#Drupal8がインストールできる要件を確認

下記オフィシャルサイトにてDrupal8が動作する要件を確認します。
https://www.drupal.org/requirements

今回は下記環境を作ります。
かっこ内はオフィシャルサイトに記載されている要件です。

|必要なもの|バージョンなど|
|:---|:---|
|ディスク（容量）|インストールするだけなら最小で15MBとのことなので、このあたりはあまり気にしない。 |
|ウェブサーバ|Apache 2.x（Apache, Nginx, Microsoft IIS or any other web server with proper PHP support.）| 
|DB|PostgreSQL 9.x（PostgreSQL 9.1.2 or higher with PDO）| 
|サーバサイドの言語|PHP 5.x（PHP 5.5.9 or higher）| 

#EC2（サーバ）の設定

##EC2インスタンスに接続

SSHでEC2インスタンスに接続して、サーバの環境を整えつつ、Drupal8に必要なものをインストールしていきます。
今回、ターミナルソフトはフリーのRLoginを使います。
http://nanno.dip.jp/softlib/man/rlogin/

下記の通り、新規接続先を作成。

- エントリー/コメント ： 適当な名前を入力。
- プロトコル ： ssh
- Server Address ： EC2インスタンスのパブリックIP
- Socket Port ： ssh
- User Name ： ec2-user（EC2インスタンスとつくると自動的に作られるユーザ）
- Password ： 空欄（初期ではec2-userのパスワードはない。のちほど設定する。）」
- SSH Identity Key ： EC2インスタンスを作成したさいに作ってローカルにダウンロードした鍵ファイル
- デフォルト文字セット ： UTF-8

![14.png](https://qiita-image-store.s3.amazonaws.com/0/35148/f3dab134-a890-a946-e32c-94180f786acf.png)

「OK」をクリックしてインスタンスにログイン。

![15.png](https://qiita-image-store.s3.amazonaws.com/0/35148/ab14d0d6-264d-9a29-7a5b-f2d0d655757c.png)

##ec2-userとrootのパスワードを設定
初期状態だと、

```
$ sudo su -
```

を実行すると、パスワード入力なしでrootに昇格できてしまいます。
またec2-userがsudoコマンドをパスワード無しで実行できてしまいます。
セキュリティ的にこのままではまずいので、各パスワードを設定します。

###rootのパスワードを設定
```
$ sudo su -
Password: ＊＊＊＊＊ ← 先ほど設定したパスワード入力して、rootに昇格。

$ passwd root
Changing password for user root.
New password: ＊＊＊＊＊ ← 新しいrootのパスワードを入力
Retype new password: ＊＊＊＊＊ ← もう一度同じものを入力
passwd: all authentication tokens updated successfully.
```

###ec2-userのパスワードを設定

```
$ sudo passwd ec2-user
Changing password for user ec2-user.
New password: ＊＊＊＊＊ ← 今回新たに設定するパスワードを入力
Retype new password: ＊＊＊＊＊ ← もう一度同じものを入力
passwd: all authentication tokens updated successfully.
```

###ec2-userでsudoコマンドを実行する時にパスワードを求められるようにする

```
$ sudo su -
Password: ＊＊＊＊＊

$ vim /etc/sudoers.d/cloud-init
```

cloud-initを下記の通り変更。
`NOPASSWD: ALL`を`ALL`に。
`#`はコメントアウト。

```text:cloud-init
# ec2-user ALL = NOPASSWD: ALL
ec2-user ALL = ALL

# User rules for ec2-user
# ec2-user ALL=(ALL) NOPASSWD:ALL
ec2-user ALL=(ALL) ALL
```

これでec2-userでsudoコマンドを実行した時にパスワードを求められるようになりました。

##ソフトウェアを最新に

```
$ yum update -y
```

##サーバのタイムゾーンを変更

```
$ vim /etc/sysconfig/clock
```

`UTC`を`Japan`に。

```text:clock
# ZONE="UTC"
ZONE="Japan"
UTC=true
```

タイムゾーンファイルを変更。

```
$ ln -sf /usr/share/zoneinfo/Japan /etc/localtime
```

インスタンスを再起動して設定を反映。

```
$ reboot
```

```
$ date
Mon Jun 20 17:26:05 JST 2016　←　日本時刻になっていればOK。
```

##日本語環境に

```
$ export LANG=ja_JP.UTF-8
$ date
2016年  6月 20日 月曜日 17:31:27 JST　← 日本語になっていればOK。
```

##apache(httpd)をインストール

yumでインストールできるapache（httpd）のバージョンを確認。

```
$ yum list available | grep httpd

httpd.x86_64                          2.2.31-1.7.amzn1              amzn-main   
～略～  
httpd24.x86_64                        2.4.18-1.64.amzn1             amzn-main   
～略～   
```

2.2系と2.4系がインストールできるようなので、新しい2.4系のほうをインストール。

```
$ yum install httpd24
```

###httpdを常時起動するように
このままの状態でインスタンスを再起動すると、httpdが落ちたままになってしまいます。
インスタンスの起動と同時に、httpdも起動するようにします。
2，3，4，5が「on」になればOK。

```
$ chkconfig httpd on
$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
```

httpdを再起動して設定を反映。

```
$ /etc/init.d/httpd restart
```

ブラウザで「http://＊＊＊/」にアクセスして、下記画面が出ればOK。
（「＊＊＊」の部分はインスタンスのパブリックIP）

![16.png](https://qiita-image-store.s3.amazonaws.com/0/35148/93060d2e-f6bb-2649-af2a-7daebaa6eab3.png)

##phpをインストール

yumでインストールできるphpのバージョンを確認。

```
$ yum list available | grep php
```

5.6系がyumで入れられるようなので、こちらをインストール。

```
$ yum install php56
```

インストールしたphpのバージョンをチェック。

```
$ php -v
PHP 5.6.22 (cli) (built: Jun  1 2016 21:46:41) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```

その他、phpまわりで必要そうなものをインストール。

```
$ yum install php56-devel php56-pdo php56-mbstring php56-mysqlnd php56-pgsql php56-gd
```

忘れずに

```
$ /etc/init.d/httpd restart
```

念のためテストページで作成して動作確認。
（``/var/www/html/``はデフォルトのドキュメントルート）

```
$ vim /var/www/html/index.php
```

```php:index.php
<?php
phpinfo();
?>
```

ブラウザでテストページアクセス。
http://＊＊＊/index.php
（＊＊＊はインスタンスのパブリックIP）
下記のようなページが表示されればOK。

![17.png](https://qiita-image-store.s3.amazonaws.com/0/35148/5cb2da3f-0966-6c19-1795-e62e34fcb656.png)

#RDS（DB）の設定

##DB作成

今回は、Amazon RDS（Amazon Relational Database Service）を使います。

>Amaon RDSとは？
>https://aws.amazon.com/jp/rds/
>> クラウドで簡単にリレーショナルデータベースを設定、運用、スケールできます。

EC2インスタンスとは分離したDBをさくっと作れるようですね。
せっかくなので使ってみます。

###RDSでインスタンスを作成

RDSをクリック。

![18.png](https://qiita-image-store.s3.amazonaws.com/0/35148/59e7a03c-9634-4641-17f3-f66c97582710.png)

インスタンスから、「DBインスタンスの起動」をクリック。

![19.png](https://qiita-image-store.s3.amazonaws.com/0/35148/ddfa2db3-26e4-1e78-86cb-1d0772764f7c.png)

###DBの種類を選択
今回はPostgreSQLを選択。

![20.png](https://qiita-image-store.s3.amazonaws.com/0/35148/6e84867a-ca88-35fc-9213-c4d88d3ec438.png)

###本番用 or テスト の選択
今回は本番稼働用を選択。
「次のステップへ」をクリック。

![21.png](https://qiita-image-store.s3.amazonaws.com/0/35148/b3e5292b-4ace-bff9-e222-ea9cec4cd8ef.png)

###DB詳細の指定

■インスタンスの仕様

- DBエンジン：postgres
- ライセンスモデル：postgresql-license
- DBエンジンのバージョン：9.5.2（この時点で最新の9.5.2を選択）
- DBインスタンスのクラス：db.t2.micro（今回は一番下のクラス（スペック）を選択）
- マルチAZ配置：いいえ
- ストレージタイプ：汎用（SSD）
- ストレージ割当：5GB

■設定（DBに接続する際に必要な情報）

- DBインスタンス識別子：（任意の値を入力）
- マスターユーザーの名前：（任意の値を入力）
- マスターパスワード：（任意の値を入力）

![22.png](https://qiita-image-store.s3.amazonaws.com/0/35148/36b10353-f1aa-9615-ef29-4a8d15c4646d.png)

###[詳細設定]の設定

（設定の設定ってなんだ・・・）

■ネットワーク＆セキュリティ

- VPS：デフォルト
- サブネットグループ：default
- パブリックアクセス可能：いいえ
- アベイラビリティーゾーン：（EC2インスタンスと同じものを選択）
- VPCセキュリティグループ：（EC2インスタンスと同じものを選択）

■データベースの設定

- データベースの名前：（任意の名前を入力）
- データベースのポート：（デフォルトだと5432。必要に応じて変更。）
- DBパラメータグループ：（デフォルトのままで）
- オプションフループ：（デフォルトのままで）
- たぐをスナップショットへコピー：チェックなし
- 暗号を有効化：いいえ

■バックアップ

- バックアップの保存期間：7日
- バックアップウィンドウ：指定なし

■モニタリング

- 拡張モニタリングを有効にする：いいえ

■メンテナンス

- マイナーバージョン自動アップグレード：いいえ
- メンテナンスウィンドウ：指定なし

![23.png](https://qiita-image-store.s3.amazonaws.com/0/35148/5d48221f-23f3-ad3b-d091-509740946ab9.png)

###インスタンスの確認

![24.png](https://qiita-image-store.s3.amazonaws.com/0/35148/74280934-882e-d719-fc0d-ea1e61af4d4c.png)


インスタンスが追加されています。
ただ「インバウンド許可はありません」となっていて、まだEC2インスタンスとは接続できない状態です。

![25.png](https://qiita-image-store.s3.amazonaws.com/0/35148/e8269996-dea3-844c-1e41-a7959da6e4fd.png)

#EC2とRDSを接続する

セキュリティグループを編集します。
対象のEC2インスタンスとRDSインスタンスが所属しているセキュリティグープを選択し、「編集」をクリック。
下記の通りRDSインスタンス接続用のルールを追加。

- タイプ：PostgreSQL
- ポート：RDSインスタンス作成時に指定したポート
- 送信元：カスタムと、RDSインスタンスが所属しているセキュリティグループのグループID（今回は現在編集中のセキュリティグループのグループID）を選択・入力。

![26.png](https://qiita-image-store.s3.amazonaws.com/0/35148/d2f2283f-39b9-f8d9-521b-32ffe1c2d489.png)

##EC2インスタンスとRDSインスタンスが接続できる状態となったか確認

RDSのインスタンス画面で、対象のRDSインスタンスが「承認」となっていればOK。

![27.png](https://qiita-image-store.s3.amazonaws.com/0/35148/d09e36db-a156-50b2-5812-9b38cc89a65a.png)

#Drupal8をインストール

これでやっとインストールする準備が整ったので、いざDrupal8をインストール。

ここから最新のものを確認。（あっ、Ver.9のdevがでていますね）
今回は8の最新版（現時点では8.1.3）を使います。
https://www.drupal.org/download
https://www.drupal.org/project/drupal/releases/8.1.3


Drupalのファイル一式（Download tar.gz）のリンクをコピー。

![28.png](https://qiita-image-store.s3.amazonaws.com/0/35148/87237846-6173-18b5-1290-62826cfad3a8.png)

先ほどコピーしたリンク先のファイルをwgetでダウンロードして、解凍。
今回はデフォルトのドキュメントルートの下に置きました。

```
$ cd /var/www/html/
$ wget https://ftp.drupal.org/files/projects/drupal-8.1.3.tar.gz
$ tar -xzvf drupal-8.1.3.tar.gz
```

設定ファイルを少し編集します。
インストール前にDrupalの設定ファイルのファイル名と、パーミッションを変更しておく必要があります。

参考）
https://api.drupal.org/api/drupal/core%21INSTALL.txt/8.1.x
https://drupal.studio-umi.jp/blog/Drupal-8-tutorial-installation

設定ファイル（default.settings.php）のファイル名を変更。
（今回はコピーでリネームしたことに）

```
$ cd /var/www/html/drupal-8.1.3/sites/default
$ cp -pr default.settings.php settings.php
```

設定ファイルパーミッションを確認。
初期ではおそらく644（rw-r--r--）になっていると思います。

```
$ ll
-rw-r--r-- 1 root root 29105 Jun 16 05:08 settings.php
```

これを、666（rw-rw-rw-）に変更。

```
$ chmod a+w settings.php

$ ll
-rw-rw-rw- 1 root root 29105 Jun 16 05:08 settings.php
```

次に、Drupalで生成する静的ファイルの置き場所となるディレクトリを作成。
ディレクトリ名は「files」とします。

```
$ pwd
$ mkdir /var/www/html/drupal/drupal-8.1.3/sites/default/files
```

ディレクトリのパーミッションも666に。

```
$ chmod a+w files
```

ブラウザでインストール画面を表示。
http://＊＊＊/drupal-8.1.3/
（「＊＊＊」の部分はEC2インスタンスのパブリックIP）

インストールウィザードが表示されます。
言語の選択画面で「日本語」を選択。

![29.png](https://qiita-image-store.s3.amazonaws.com/0/35148/23689795-5dc2-4623-ce97-7802a1aa3a50.png)

プロフィールの選択画面で「標準」を選択。

![30.png](https://qiita-image-store.s3.amazonaws.com/0/35148/ed762d8f-326e-e183-a747-7a6ea1397494.png)

必要条件の検証画面で、インストールに必要な条件が整っているかをチェック。
2つほど注意が出ました・・・

![31.png](https://qiita-image-store.s3.amazonaws.com/0/35148/88e3c91e-ec37-77f0-8c37-df6ce148818e.png)

##一つ目の注意「クリーンURL」
phpのmod_rewriteモジュールが必要みたいです。

```
$ apachectl -M | grep rewrite
rewrite_module (shared)
```

```
$ ll /etc/httpd/modules/ | grep rewrite
-rwxr-xr-x 1 root root   67568 Mar  8 07:32 mod_rewrite.so
```

モジュールはすでにあるみたいですね。

```text:/etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf
```

モジュールの管理は「conf.modules.d」でやっているみたいです。

```text:/etc/httpd/conf.modules.d
LoadModule rewrite_module modules/mod_rewrite.so
```

httpd.confを編集。

```text:/etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> ・・・ ドキュメントルートのDirectoryディレクティブのところに
AllowOverride All ・・・ これを追記
```

httpdを再起動して、設定を反映。

```
$ /etc/init.d/httpd restart
```

##二つ目の注意「PHP OPcode caching」

注意の文章を見ると、「パフォーマンスを劇的に改善する」とのこと。
これは入れておいたほうがよさそうですね。

yumで入れられるか確認。

```
$ yum list available | grep opcache
php-pecl-zendopcache.x86_64            7.0.5-1.el6                  epel        
php55-opcache.x86_64                   5.5.36-1.115.amzn1           amzn-updates
php56-opcache.x86_64                   5.6.22-1.125.amzn1           amzn-updates
```

入れられるようですね。
入れます。

```
$ yum install php56-opcache.x86_64
```

phpのバージョン情報のところで確認。

```
$ php -v
PHP 5.6.22 (cli) (built: Jun  1 2016 21:46:41) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
```

OPcacheが追加されたので、これで大丈夫そうです。

念のためもう一度httpdを再起動。

```
$ /etc/init.d/httpd restart
```

再びインストールウィザードで、必要条件の検証を再表示したときに注意が出ていなければOK。


##データベースの設定画面

- PostgreSQLを選択。
- データベース名：RDSインスタンスを作った時の「データベースの名前」を入力
- データベースのユーザ名：RDSインスタンスを作った時の「マスターユーザーの名前」を入力
- データベースのパスワード：RDSインスタンスを作った時の「マスターパスワード」を入力

それと、下記画像には表示されていませんが、「高度なオプション」を展開して、下記を入力。

- ホスト：RDSインスタンスのエンドポイントを入力。（エンドポイントは「AWSのマネジメントコンソール ＞ RDS ＞対象のインスタンス」から確認できます。
＊＊＊.＊＊＊.＊＊＊.rds.amazonaws.com:＊＊＊
といった表記となっていますが、最後の「:＊＊＊」の部分（ポート番号が記載されている部分）は省きます。
- ポート：PostgreSQLで使っているポート番号を入力。

![32.png](https://qiita-image-store.s3.amazonaws.com/0/35148/c144a3e9-a57b-0f46-0fe1-60216b6ec5db.png)

「保存して次へ」をクリック・・・・そしてエラー・・・
EC2インスタンスに、RDSインスタンスのPostgreSQLに接続するためのPostgreSQLクライアントなるものを入れなければいけないようです。

yumで入れられるか確認。

```
$ yum search postgresql

postgresql94.x86_64 : PostgreSQL client programs
postgresql94-libs.x86_64 : The shared libraries required for any PostgreSQL clients
```

いろいろ出てきますが、「client」と記載があるものをインストール・・・でも、今回は94（9.4系）ではなく、RDS（DB）側が9.5系なので、念ため9.5系をインストールします。

PostgreSQLのサイトから「PostgreSQL 9.5」の中の「Amazon Linux AMI 2015.03 - x86_64」のリンクをコピーします。
http://yum.postgresql.org/repopackages.php

wgetコマンドにさきほどコピーしたリンクを貼り付けて実行。
ファイルをダウンロード。

```
$ wget https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-ami201503-95-9.5-2.noarch.rpm
```

yumでインストールできるようにします。

```
$ yum localinstall pgdg-ami201503-95-9.5-2.noarch.rpm
```

これで、9.5系がyumでインストールできるようになりました。

```
$ yum list | grep postgres

postgresql95.x86_64 : PostgreSQL client programs and libraries
postgresql95-libs.x86_64 : The shared libraries required for any PostgreSQL clients
```

インストールします。
（依存関係で同時に「postgresql95-libs 」も入るようです。）

```
$ yum install postgresql95.x86_64
```

RDS（DB)への接続を確認します。

- [1]：RDSインスタンスのエンドポイント
- [2]：ポート番号
- [3]：ユーザ名
- [4]：データベース名
- [5]：データベースのパスワード

```
# psql --[1] --port=[2] --username=[3] --password --dbname=[4]
Password for user ●●●: [5]
psql (9.5.3, server 9.5.2)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
```

接続の確認が取れました。

接続の確認ができたので、下記コマンドでpsqlを終了します。

```
\q
```

というわけでもう一度インストールをやり直し・・・
上記手順にそってインストールウィザードをもう一度やりなおします。

やっと、インストール開始です。

![33.png](https://qiita-image-store.s3.amazonaws.com/0/35148/3e726f2f-11b2-ba05-be5d-424ad6cf6576.png)

そして・・・警告！＆注意！ orz

![34.png](https://qiita-image-store.s3.amazonaws.com/0/35148/66c0c95b-c3d3-693d-5dd0-6c5fd2c45967.png)

でもこれはphpのタイムゾーンと、先に設定したDrupalの設定ファイルのパーミッションに関する警告＆注意のようなので、この段階では無視します。
もちろん、あとでちゃんと設定します。

その他の情報を入力します。

■サイト情報

- サイト名：ひとまず適当なものを入力（あとで変更できます）
- サイトのメールアドレス：まだドメインが決まっていないので、ここも適当なものを入力

■サイトメンテナンスのアカウント

- ユーザ名：Drupalの管理画面にログインするためのユーザ名です。任意の値を入力。
- パスワード：ログイン時のパスワードです。任意の値を入力。
- メールアドレス：このユーザで使うメアドを入力。

■地域の設定

- デフォルトの国：日本
- デフォルトのタイムゾーン：Asia/Tokyo

■アップデート通知
両方ともチェックをいれておきます。

![35.png](https://qiita-image-store.s3.amazonaws.com/0/35148/4a12cbab-3bb2-5179-946e-7fb9064cbe16.png)

これでインストールは完了です。

##ブラウザでサイトを表示

ブラウザで、「http://＊＊＊/」にアクセスして、下記の通り表示されれればOKです。
（＊＊＊はパブリックIP）

![36.png](https://qiita-image-store.s3.amazonaws.com/0/35148/9e92b1a3-dce0-257b-7027-ce80777f044e.png)

#インストール時の警告への対処

インストール時に出た警告と注意について対応します。

Drupalの管理画面で
「レポート」＞「サイトの状態」
に行くと下記の通り警告（☓印）が出ています。
http://52.68.129.138/drupal/admin/reports/status

![37.png](https://qiita-image-store.s3.amazonaws.com/0/35148/3b789c9e-684c-8feb-629f-19c2174c42f9.png)

##「信頼のおけるホストの設定：無効」について

これはドメインを取得してからのようなので・・・ひとまず放置。

参考）
http://qiita.com/nkawa/items/3bb10d8ed3683e296caf

##「構成ファイル：保護されていません」について

下記の通り設定ファイルのパーミッションを変更。

```
$ cd /var/www/html/sites/default
$ chmod 644 settings.php 
```

「サイトの状態」のページの「構成ファイル」の部分が「保護されています」となればOK。

##phpのタイムゾーンも変更

インストール時に出た注意への対処です。
php-5.6.iniのタイムゾーンを"Asia/Tokyo"に変更。

```text:/etc/php-5.6.ini 
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"
```

#最後に

Drupalのインストールにたどり着くまでが長かった・・・
でもとりえずインストールまで完了。一段落。
あとはAWSの無料枠内を超えないようにアラートを設定しておこうかな。

初めての部分も多々あるので、間違いや、間違ってはいないが適切ではない、などあればなんなりとご指摘ください。