【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へのアクセスを行う為、インバウンドの設定を行い、アクセス可能な状態にしておく

これで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
/* 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
/**
 * 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

実行結果
[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.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

参考サイト