【AWS EC2】amazon linux2 AMIにLAMP環境を構築する 

【環境】
・Windows10
・PHP7.2
・MySQL5.7
・Apache2.4
・Amazon Linux 2 AMI (HVM)

<h2>目次</h2>
<a href=#instance>インスタンス作成</a>
<a href=#php>phpのインストール</a>
<a href=#apache>apacheのインストール</a>
<a href=#mysql>mysqlのインストール</a>
<a href=#myAdmin>phpMyAdminのインストール</a>


<h2 id="instance">インスタンス作成</h2>
インスタンス・・・仮想マシンのこと

1.AWSにログイン

2.AWSマネジメントコンソールのすべてのサービスからEC2を選択する

<img width="889" alt="aws1.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/1d8f422c-ff36-f972-a8e2-8eb3bba8f643.png">

3.インスタンスの作成を押下

<img width="941" alt="aws2.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/f4e78fdc-05a3-0f6f-f814-72469604963f.png">

4.一番上のAmazon Linux2 AMI(HVM)の選択ボタンを押下

<img width="929" alt="aws3.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/62f5953c-b78f-eb5e-53c0-7d35e23bec80.png">

5.無料利用枠のtc2.microを選択し、確認と作成を押下

<img width="942" alt="aws4.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/22ce7112-104b-99fa-dabe-76699226ff0e.png">

6.起動を押下

<img width="944" alt="aws5.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/85f7b012-afd4-201b-6a65-e910c5cd3daa.png">

7.秘密鍵を作成するために、新しいキーペアの作成を選択し、
　好きなキーペア名を入力した後、キーペアのダウンロードを押下

<img width="560" alt="aws6.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/2d5ca972-2024-28a2-1dac-163ac5639036.png">

8.ダウンロード後、インスタンスの作成ボタンが押下できるようになるため、それを押下（画像は7を参照）

9.作成ステータスが表示されるので、インスタンスの表示を押下
<img width="560" alt="aws6.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/757a7f62-1049-7eca-008c-d5cbe8266054.png">

10.しばらく待っていると、インスタンスの状態がrunnningに変わる。もし変わらなかった場合は、右上の更新ボタンを押下する
(後に必要となるのでIPv4パブリックIPをコピーしておく。）

<img width="960" alt="aws8.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/1e53970c-87fa-b6ca-92ba-7d7204f95961.png">


11.デスクトップを右クリックし、Git Bash hereを押下し、Gitコマンドプロンプトを開く
<img width="960" alt="aws9.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/c5993d3f-809d-fcc0-7e91-0b3db4a518e7.png">

12.sshに接続する

```

ssh -i '{キーを保存した場所のパス}' ec2-user@{10でコピーしたIP_Address}

```

13.メッセージが表示されるのでyesと入力する

<h4>セキュリティルールの編集</h4>

1.HTTP接続をインスタンスに許可するセキュリティルールを追加する

2.実行中のインスタンスを表示する画面を開き、インスタンスを選択

3.セキュリティグループを選択し、編集を押下

<img width="936" alt="aws11.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/ef2838ea-ea00-1562-e45d-3e13b99a00cb.png">

4.ルールの追加を押し、HTTPの設定を次の写真と同様に設定する
<img width="869" alt="aws11.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/cab0c6f0-f496-3876-47cc-28ad22dcc2c4.png">

マイIPを選択することで自分が使用しているパブリックIPのみを許可することができます。
<h2 id=php>phpのインストール</h2>

1.すべてのソフトウェアを更新した後、Amazon Linux2のExtras Libraryを利用し、php7.2をインストールする

```

[ec2-user ~]$ sudo yum update -y

[ec2-user ~]$ sudo amazon-linux-extras install php7.2

[ec2-user ~]$ sudo yum install php php-mbstring

```

<h4>php動作確認</h4>
1.ファイルの許可設定

```
[ec2-user ~]$ sudo usermod -a -G apache ec2-user

```

2.一度ログアウトし、再度ログインする

```

[ec2-user ~]$ exit

[ec2-user ~]$ ssh -i '{キーを保存した場所のパス}' ec2-user@{10でコピーしたIP_Address}

```
3.グループを確認し、グループ所有権を変更する

```
[ec2-user ~]$ sudo chown -R ec2-user:apache /var/www

```

4.サブディレクトリ・ファイルにグループの書き込み許可を追加する

```
[ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d | xargs sudo chmod 2775

[ec2-user ~]$ find /var/www -type f | xargs sudo chmod 0664

```

5.phpファイルの作成

```

[ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

```

6.ブラウザで
http://{SSH接続時のIPアドレス もしくはパブリック DNS (IPv4)｝/phpinfo.phpに接続する

PHP情報ページが表示されればOKです

<h2 id=apache>Apacheのインストール</h2>

```
[ec2-user ~]$ sudo yum install -y httpd

#apacheを再起動する
[ec2-user ~]$ sudo systemctl start httpd

#起動時にapacheが起動するよう設定する
[ec2-user ~]$ sudo systemctl enable httpd

```

<h4>Apache動作確認</h4>
ブラウザで
http://{SSH接続時のIPアドレス もしくはパブリック DNS (IPv4)｝に接続する（インスタンスの作成項目10の画像を確認してください）

以下の画面が表示されればOKです
<img width="940" alt="aws10.png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/b9fd93f2-aae7-ecef-3a52-5a1ca1555098.png">

<h2 id=mysql>Mysqlのインストール</h2>

```

#mysql8.0リポジトリの追加（このリポジトリに5.7も含まれています）
[ec2-user ~] $ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

#mysql8.0リポジトリの無効化
[ec2-user ~] $ sudo yum-config-manager --disable mysql80-community

#mysql5.7リポジトリの有効化
[ec2-user ~] $ sudo yum-config-manager --enable mysql57-community

#mysql5.7がインストールできるか確認
[ec2-user ~] $ yum info mysql-community-server

#mysqlインストール
[ec2-user ~] $ sudo yum install mysql-community-server -y

#mysqlバージョン確認
[ec2-user ~] $ mysqld --version


#自動起動設定
[ec2-user ~] $ sudo systemctl start mysqld.service
[ec2-user ~] $ sudo systemctl enable mysqld.service
[ec2-user ~] $ systemctl status mysqld.service


```

<h4>Mysql初期設定</h4>

```

#rootパスワードを確認
[ec2-user ~] $ cat /var/log/mysqld.log | grep password
A temporary password is generated for root@localhost: ★ココに初期パスワードが表示されます

#初期設定
[ec2-user ~] $ mysql_secure_installation

初期パスワードを入力後、新規パスワードを設定します。

#mysqlにログイン
[ec2-user ~] $ mysql -u root -p


#文字コードの確認
mysql> show global variables like 'character%';
 
mysql> exit

#文字コードの変更（[mysqld]と[client]セクションと設定を追加）
[ec2-user ~] $ sudo vi /etc/my.cnf

以下の文を追加

[mysqld] （既に記述されている場合は省略）
character_set_server=utf8mb4

[client]
default-character-set=utf8mb4

#mysql再起動
[ec2-user ~] $ sudo systemctl restart mysqld.service

#mysqlにログイン
[ec2-user ~] $ mysql -u root -p

#文字コードの確認
mysql> show global variables like 'character%';

```

<h2 id=myAdmin>phpMyAdminのインストール</h2>

```

#必要な依存ファイルをインストールする
[ec2-user ~]$ sudo yum install php-mbstring -y

#Apacheを再起動する
[ec2-user ~]$ sudo systemctl restart httpd

#php-fpmを再起動する
[ec2-user ~]$ sudo systemctl restart php-fpm

#/var/www/htmlに移動する
[ec2-user ~]$ cd /var/www/html

#phpMyAdminの最新のパッケージリンクをwgetコマンドに張り付ける
[ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

#phpMyAdminフォルダを作成し、パッケージを展開する
[ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1

#展開したため、もとのパッケージは削除する
[ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz

#mysqlを起動する
[ec2-user ~] $ sudo systemctl start mysqld.service

```

<h4>動作確認</h4>
ブラウザで
http://{SSH接続時のIPアドレス もしくはパブリック DNS (IPv4)｝//phpMyAdminを開く

phpMyAdminログインページが表示されればOKです

<h2>参考資料</h2>
・<a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html">awsチュートリアル</a>
・<a href="https://qiita.com/owlbeck/items/20f3e5402cb782f6291e">Qiita@owlbeckさん記事</a>
・<a href="https://qiita.com/2no553/items/952dbb8df9a228195189">Qiita@2no553さん記事</a>