[AWS] Amazon Linux に Apache(2.4系) + PHP(7.4系) + phpMyAdmin(5.2系) をインストール 


**■ 前提条件**
EC2インスタンス(Amazon Linux)、RDSインスタンス(Mysql)が起動状態であること

##Apacheのインストールと設定

```
・Apacheインストール
$sudo yum install -y httpd

・Apache起動
$sudo systemctl start httpd

・自動起動設定
$sudo systemctl enable httpd
 
・自動起動になっているか確認 
$sudo systemctl is-enabled httpd
→ "enable"が返ってくればOK

・apacheのVer確認
$httpd -v
→　Server version: Apache/2.4.48 ()

・apache に ec2-user グループを追加
$sudo gpasswd -a apache ec2-user
→　Adding user apache to group ec2-user

・ec2-userグループに追加されたことを確認
$id apache

・ドキュメントルートを変更 
(※htmlというディレクトリ名が嫌で変えてるだけなので気にしない方はそのままでOK)
$sudo vi /etc/httpd/conf/httpd.conf

<変更前> DocumentRoot "/var/www/html"
<変更後> DocumentRoot "/var/www/httpdocs/"

・権限変更
$sudo chown -R ec2-user:ec2-user /var/www/

・ドキュメントルートディレクトリ名を変更
$mv /var/www/html /var/www/httpdocs

・パーミッション変更
$sudo chmod 755 /var/log/httpd

・Apacheを再起動し、Apacheの定義ファイルを読み込み直す
$systemctl restart httpd
```

EC2インスタンスのIPアドレスを叩いて、Apacheのページが表示されればOK
![2021-08-20_11h51_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1897847/9e47aadc-e56f-cb59-1048-a7a7da58d6dc.png)

##PHPのインストールと設定

####remiリポジトリ、EPELリポジトリをインストール

yumパッケージに入っているPHPのVerが5.4と古いので、新しいバージョンをremi リポジトリ,EPELリポジトリからインストールします。
※5系だとWordPressとかも動かない

```
・古いVerのPHPがインストールされている場合はアンインストール
$sudo yum remove php* -y

・remiリポジトリと依存関係にあるEPELリポジトリを有効にしとく
$sudo amazon-linux-extras enable epel

・メタデータを削除
$sudo yum clean metadata

・EPELリポジトリをインストール
$sudo yum install -y epel-release

・remiリポジトリをインストール
$sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

```
#### PHP7.4をインストール

```
・インストール可能な7系パッケージがあるか確認
$sudo yum list | grep php7

・PHPインストール (必要なパッケージも一緒に)
$sudo yum install -y --enablerepo=remi,remi-php74 php74-php php74-php-common php74-php-devel php74-php-mbstring php74-php-pdo php74-php-gd php74-php-xml php74-php-mysqlnd php74-php-bcmath php74-php-fpm php74-php-json

・問題なくインストールされたか確認
$sudo yum list installed | grep php

・PHP7.4 モジュールがインストールされたか確認
$ls /etc/httpd/modules/ | grep php

・コマンドラインからPHPで呼び出せるようにシンボリックリンク作成
$sudo ln -s /usr/bin/php74 /usr/bin/php

・コマンドラインからPHPの呼び出し＆Verの確認
$php -v
 ↓ ↓
PHP 7.4.22 (cli) (built: Jul 27 2021 18:08:31) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

・phpのログ出力先を作成
$sudo mkdir /var/log/php

・Apacheに権限を変更する
$sudo chown apache:apache /var/log/php

・定義ファイル(php.ini)を更新
※ファイルの場所が分からない時 → $php -r "echo phpinfo();" | grep "php.ini"
$sudo vi /etc/opt/remi/php74/php.ini

↓ 変更内容 ↓
mbstring.language = Japanese
mbstring.detect_order = auto
date.timezone = Asia/Tokyo
expose_php = Off
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M
register_argc_argv = On
error_reporting = E_ALL
error_log = /var/log/php/error.log

・Apache 再起動
$sudo systemctl restart httpd

・確認用にphpファイルをドキュメントルートに置く
sudo vi /var/www/httpdocs/index.php
<?php phpinfo(); ?>

```
EC2インスタンスのIPアドレスをブラウザで叩いて、phpinfoが表示されればOK

![2021-08-20_13h24_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1897847/8bd47334-3a54-5dca-4208-963998d16b44.png)


##phpMyAdminをインストール

```
・ドキュメントルートに移動
$cd /var/www/httpdocs

・phpMyAdminをダウンロード
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

・展開先のディレクトリを作成
$sudo mkdir phpMyAdmin

・/phpMyAdminにパッケージを展開する
$sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1

・パッケージを削除
$sudo rm phpMyAdmin-latest-all-languages.tar.gz
```
ブラウザにて http://インスタンスIP/phpMyAdmin 叩いてコンソールが表示されることを確認

![2021-08-20_15h00_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1897847/2dc63344-441c-a704-7853-8620ab1aee66.png)

```
・定義ファイルのコピー
$sudo cp /var/www/httpdocs/phpMyAdmin/config.sample.inc.php /var/www/httpdocs/phpMyAdmin/config.inc.php

・定義ファイルのパーミッション変更
$sudo chmod 755 /var/www/httpdocs/phpMyAdmin/config.inc.php

・定義ファイル内容変更
$sudo vi /var/www/httpdocs/phpMyAdmin/config.inc.php

[変更前]
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! 


[変更後]
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'RDSのエンドポイント'
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = '32文字以上の文字列を定義'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! 
```

>RDSのエンドポイントは
AWS マネジメントコンソール：サービス > RDS > データベース　で確認できます

![2021-08-20_16h05_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1897847/6f41e417-c1e0-29e3-bd9f-33f1a13714aa.png)


ブラウザにて http://インスタンスIP/phpMyAdmin に再度アクセスし、
RDSを作成時に設定した*`マスタユーザー名とパスワード`*を入力しログインできればOK！
あとは適宜データベースを作成してください！

>注意
現状のままだと、誰でもhttp://インスタンスIP/phpMyAdminを叩くことできて、セキュリティー的にアウトなので.htaccessでベーシック認証、IPアドレス制御等でセキュアにしてください！