⚠️ 記事内に広告を含みます。

nginxでphpMyAdminを利用する設定方法

nginxでphpMyAdmin.001

phhMyAdminはMySQLのデーターベースを操作するためのアプリケーションです。

phpMyAdminを利用すればコマンドラインを使用せずにDBが操作できます。

phpMyAdminをインストールする

phpMyAdminはPHPが動作する環境でドキュメントルートに設置するだけで大体使えるようにできます。

phpMyAdminの運用方法はいくつかあります。

  1. サーバのドキュメントルートに設置する
    1. 例 /var/www/website/phpMyAdmin
  2. phpMyAdmin専用のサブドメインを用意する
  3. ドキュメントルート外に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/';

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です