phhMyAdminはMySQLのデーターベースを操作するためのアプリケーションです。
phpMyAdminを利用すればコマンドラインを使用せずにDBが操作できます。
phpMyAdminをインストールする
phpMyAdminはPHPが動作する環境でドキュメントルートに設置するだけで大体使えるようにできます。
phpMyAdminの運用方法はいくつかあります。
- サーバのドキュメントルートに設置する
- 例 /var/www/website/phpMyAdmin
- phpMyAdmin専用のサブドメインを用意する
- ドキュメントルート外にphpMyAdminを設置してaliasでアクセス
phpMyAdminのオフィシャルドキュメントはこちら
phpmyadminを用意する
phpMyAdminはaptやyumからでもインストールできますが最新版を利用するためにダウンロードして設置します。
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
phpMyAdminは/var/www/phpMyAdminに設置することにします。
1. ドキュメントルートに設置する
ドキュメントルートにそのまま設置するパターンです。特定のバーチャルホストのドキュメントルートになるため複数のバーチャルホストでも使用したいと言う場合には向いていないです。
ここでは/admin/phpMyAdminを設置しています。
erver {
listen 443;
server_name phptest.example.com;
root /var/www/phptest;
access_log /var/log/nginx/phptest.example.com/access.log main;
error_log /var/log/nginx/phptest.example.com/error.log;
location / {
root /var/www/phptest;
try_files $uri $uri/ error.html;
}
location /admin/phpMyAdmin {
# try_files $uri $uri/ index.php error.html;
index index.php;
}
location ~* \.php(/|$) {
include fastcgi_params;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
## ssl setting
ssl_certificate /etc/letsencrypt/live/phptest.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/phptest.example.com/privkey.pem;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+AES128:+DHE;
}
2. サブドメインに設置
phpMyAdmin専用のドメインを用意して設置します。
既存のバーチャルホストの設定に影響を与えたり、調整する必要がないので楽です。
複数のバーチャルホスト毎にphpMyAdminのURLを分けたいと言うような場合以外はこれがおすすめです。
#簡略化のために80のみの設定(443が好ましい)
server {
listen 80;
server_name phpmyadmin.example.com;
root /var/www/phpMyAdmin;
access_log /var/log/nginx/phpmyadmin.example.com/access.log main;
error_log /var/log/nginx/phptest.example.com/error.log;
location / {
root /var/www/phpMyAdmin;
index index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}
3. aliasを設定する
ドキュメントルート外のディレクトリに設置したphpMyAdminにアクセスするにはaliasを利用します。
phptest.example.comのドキュメントルートは/var/www/phptestに対して、/phpMyAdminへのアクセスは/var/www/phpMyAdminのディレクトリを参照してほしいため、location /phpMyAdmin/にはaliasで/var/www/phpMyAdminを指定しています。
server {
listen 80;
server_name phptest.example.com;
root /var/www/phptest;
return 301 https://phptest.example.com$request_uri;
}
server {
listen 443;
server_name phptest.example.com;
root /var/www/phptest;
access_log /var/log/nginx/phptest.example.com/access.log main;
error_log /var/log/nginx/phptest.example.com/error.log;
location / {
root /var/www/phptest;
try_files $uri $uri/ error.html;
}
location /phpMyAdmin {
alias /var/www/phpMyAdmin/;
index index.php;
auth_basic "Basic Authenticatiooon";
auth_basic_user_file /etc/nginx/.htpasswd;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^/phpMyAdmin(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location ~* \.php(/|$) {
include fastcgi_params;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
# ssl setting
ssl_certificate /etc/letsencrypt/live/phptest.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/phptest.example.com/privkey.pem;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+AES128:+DHE;
}
phpMyAdminの設定ファイル(/var/www/phpMyAdmin/config.inc.php)には下記の設定を追記します。この設定がないとログイン後にhttps://phptest.example.com/に飛んでしまうので毎度戻るボタンを押さなければならなくなります。
$cfg['PmaAbsoluteUri'] = 'https://phptest.example.com/phpMyAdmin/';