【AWS】EC2でphpMyAdminを利用し、RDSへアクセス

# phpMyAdminをインストールする

## ①必要な依存ファイルをインストール

```
sudo yum update
sudo yum install httpd
sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 -y
```
### phpの最新バージョン（7.2）をインストール
最新のphpやPythonは下記のコマンドでインストールする必要が有る
インストールできるモジュール一覧とインストールするphp7.2についての情報を確認する。

```
amazon-linux-extras
amazon-linux-extras info php7.2
```

php7.2をインストールする

```
sudo amazon-linux-extras install php7.2
```

### インストールされたバージョンを確認する。
```
sudo yum list installed | grep httpd
sudo yum list installed | grep php
```

## ②apacheの再起動

```
sudo service httpd restart
```

## ③`/var/www/html`に移動

```
cd /var/www/html
```

## ④このドキュメントルートにphpMyAdminのパッケージをダウンロードします

```
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
```

## ⑤phpMyAdminファイルを作ってそこにパッケージを展開します

```
sudo mkdir phpMyAdmin
sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
```
## ⑥`phpMyAdmin-latest-all-languages.tar.gz`を削除します

```
sudo rm phpMyAdmin-latest-all-languages.tar.gz
```

## ⑦ブラウザで`phpMyAdmin`が開くか確認する

`インスタンスのIPアドレス/phpMyAdmin`にアクセス
EC2へのアクセスを行う為、インバウンドの設定を行い、アクセス可能な状態にしておく

![スクリーンショット (72)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508788/f712d797-5b47-214d-a220-61af88f94aa7.jpeg)

これでphpMyAdminを入れられました

### RDSへのアクセス設定
現状のままだとLocalHostのデータベースにアクセスするように設定されているので、データベースのアクセスを変更していく。
#### 設定ファイルの更新
サンプルの設定ファイルをコピーする 

```
cd /var/www/html/phpMyAdmin/
sudo cp config.sample.inc.php config.inc.php
```
パーミッションを変更し、設定ファイルの情報を更新する。

```
sudo chmod 660 config.inc.php ★これを実行すると起動できなくなるので不要
sudo vim config.inc.php
```
下記の箇所を編集し、`ESC`を押してから`:wq`で保存して終了してください。

```php:設定ファイル.php
/* Server parameters */
$cfg['Servers'][$i]['host'] = '自分のRDSのエンドポイント'
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
```
自分のエンドポイントが分からない場合は、RDSの画面から確認する事が可能です。

# 各種追加設定

## Cookie用のパスフレーズの設定
`config.inc.php`ファイル内のCookie用のパスフレーズを設定します。

```
sudo vim config.inc.php
```
```php:設定ファイル.php
/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = 'Cookie用の32文字以上の文字列を定義する'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
(例)
$cfg['blowfish_secret'] = 'kcBuC08452nW0qTCVFXEQV0HO7KhrCYAAACCCCV';

```



## mbstringのインストール

下記のコマンドでインストール可能なphpの拡張機能を検索します。

`sudo yum list php-* | grep amzn2extra-php7.2`

```sh:実行結果
[ec2-user@ip-10-0-10-165 phpMyAdmin]$ sudo yum list php-* | grep amzn2extra-php7.2
php-cli.x86_64                      7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php-common.x86_64                   7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php-fpm.x86_64                      7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php-json.x86_64                     7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php-mysqlnd.x86_64                  7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php-pdo.x86_64                      7.2.24-1.amzn2.0.1        @amzn2extra-php7.2
php.x86_64                          7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-bcmath.x86_64                   7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-dba.x86_64                      7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-dbg.x86_64                      7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-devel.x86_64                    7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-embedded.x86_64                 7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-enchant.x86_64                  7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-gd.x86_64                       7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-gmp.x86_64                      7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-intl.x86_64                     7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-ldap.x86_64                     7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-mbstring.x86_64                 7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-odbc.x86_64                     7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-opcache.x86_64                  7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
php-pecl-apcu.x86_64                5.1.12-3.amzn2.0.1        amzn2extra-php7.2 
php-pecl-apcu-devel.noarch          5.1.12-3.amzn2.0.1        amzn2extra-php7.2 
php-pecl-igbinary.x86_64            2.0.7-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-igbinary-devel.noarch      2.0.7-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-imagick.x86_64             3.4.4-1.amzn2.0.1         amzn2extra-php7.2 
php-pecl-imagick-devel.noarch       3.4.4-1.amzn2.0.1         amzn2extra-php7.2 
php-pecl-libsodium.x86_64           2.0.21-1.amzn2.0.1        amzn2extra-php7.2 
php-pecl-mcrypt.x86_64              1.0.1-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-memcached.x86_64           3.0.4-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-msgpack.x86_64             2.0.2-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-msgpack-devel.noarch       2.0.2-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-oauth.x86_64               2.0.2-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-redis.x86_64               4.3.0-1.amzn2             amzn2extra-php7.2 
php-pecl-ssh2.x86_64                1.1.2-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-uuid.x86_64                1.0.4-3.amzn2.0.1         amzn2extra-php7.2 
php-pecl-zip.x86_64                 1.15.2-3.amzn2.0.1        amzn2extra-php7.2 
php-pgsql.x86_64                    7.2.24-1.amzn2.0.1        amzn2extra-php7.2 
```
@amzn2extra-php7.2と表示されている物がインストールされているパッケージです。

今回は、必要なパッケージを導入します。

```
sudo yum install php-mbstring
```

## `php.ini`の設定

失敗した時のためにバックアップを取っておく
`sudo cp /etc/php.ini /etc/php.ini.default`

viでファイルを開いて編集（保存は同じく:wq）
`sudo vi /etc/php.ini`


```php:php.ini
# HTTPヘッダにPHPのバージョンを記載しない
- expose_php = On
+ expose_php = Off

# メモリ上限を引き上げる
- memory_limit = 128M
+ memory_limit = 512M

# エラーログのパスを変更
- error_log = php_errors.log
+ error_log = /var/log/php_errors.log

# POST送信の許容サイズを引き上げる
- post_max_size = 8M
+ post_max_size = 16M

# アップロードファイルの許容サイズを引き上げる
- upload_max_filesize = 2M
+ upload_max_filesize = 8M

# timezoneの設定
- date.timezone =
+ date.timezone = Asia/Tokyo

# デフォルト言語を日本語に設定
- mbstring.language = Japanese
+ mbstring.language = Japanese

# 文字コード検出のデフォルト値を定義
- mbstring.detect_order = auto
+ mbstring.detect_order = auto


```

### 設定を反映
記述ミスが無いかを確認
`sudo service httpd configtest`

設定を反映
`sudo service httpd restart`

※設定が反映されない場合は、サーバーを再起動すると直ることが有ります。

## Tempフォルダの作成

```
$cfg['TempDir'] (/var/www/html/phpMyAdmin/tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。
```
というエラーの対処を行います。

「phpMyAdmin」フォルダに移動し、下記のコマンドでフォルダを作成し、パーミッションを更新します。
```
sudo mkdir tmp
sudo chmod 777 tmp
```



# 参考サイト
https://miyabi-lab.space/blog/16