ホーム > カテゴリ > サーバー構築・運用・Linux >

NginxでphpMyAdminを使用する [CentOS]

CentOSで各種サーバー構築(目次)

CentOSにphpMyAdminをインストールしてNginx + PHPで動作させます。SSL(HTTPS)による暗号化の対応やIPアドレスによるIP制限も行います。

前提条件

NginxでPHP7(PHP-FPM)を動作させる
Let’s EncryptでサイトをSSL(https)にする

1. インストール

sudo yum install --enablerepo=remi,remi-php73 phpMyAdmin

2. /var/lib/php/sessionの権限の変更

// /var/lib/php/sessionの権限の確認
ls /var/lib/php -l

    // 結果
    drwxrwx--- 2 root apache 4096 Aug 28 19:01 opcache
    drwxrwx--- 2 root apache 4096 Aug 28 19:01 session
    drwxrwx--- 2 root apache 4096 Aug 28 19:01 wsdlcache

// /var/lib/php/sessionの権限の変更
sudo chown -R root.ユーザー名 /var/lib/php/session
※ユーザー名はNginxのnginx.confファイル先頭にあるuser名と同じにする 

3. PHP.iniの編集

sudo vi /etc/php.ini

   // 次の行を変更します。
   // phpMyAdminが利用するセッションを保存するディレクトリです。
   session.save_path = "/var/lib/php/session"

// PHP-FPMの再起動
sudo systemctl restart php-fpm

4. /etc/nginx/conf.d/*.confの編集

IP制限を行わない場合はセキュリティ対策で「phpMyAdmin」の部分を「dIeldiwk34Mdg3dehrtl」のように意味不明で長い文字のディレクトリを設定してください。

location /phpMyAdmin {
    root /usr/share/;
    index index.php index.html index.htm;
    
    # IP制限 ---
    allow アクセスを許可するIPアドレス;
    deny  all; 
    # ----------
          
    location ~ ^/phpMyAdmin/(.+\.php)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~* ^/phpMyAdmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
    }
}

*.confで既にHTTPSに対応していれば、そのまま通信が暗号化されます。

次のような設定を行うと、phpMyAdminのログイン/ログアウト後にwww.example.com/phpMyAdmin/からwww.example.com/index.php?db=mysql&target=db_structure.phpにURLが暗黙的に変更されて「404」のエラーが表示されますのでご注意ください。

// ダメな例です。
location /phpMyAdmin {
  alias /usr/share/phpMyAdmin;
  index index.php;        
          
  location ~ ^/phpMyAdmin.+\.php$ {             
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index   index.php;
    fastcgi_split_path_info ^/phpMyAdmin(.+\.php)(.*)$;
    fastcgi_param   SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name;
    include         fastcgi_params;
  }    
}

5. Nginxのリスタート

再起動後、www.example.com/phpMyAdmin/でアクセス可能です。

sudo systemctl restart nginx

6. ユーザーとデータベースを作成する

利便性からユーザー名とデータベース名は同一にすると良いです。 ※1人のユーザーは1つのデータベースのみを推奨。

// rootでログインする
mysql -u root -p

// データベースの作成
CREATE DATABASE データベース名;

// ユーザーを作成する 
CREATE USER 'ユーザー名' IDENTIFIED BY 'パスワード';

// ユーザーにデータベースの全ての権限を付与する 
GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名';


// --- 関連するコマンド
// データベースの一覧
SHOW DATABASES;
// ユーザーの一覧を表示する
SELECT host, user, password FROM mysql.user;
// ユーザーの削除
DROP USER ユーザー名;
// データベースの削除
DROP DATABASE データベース名; 

7. ファイルのインポート

データベースのバックアップの「大きなファイル」をインポートする際はPHP.iniの次の項目を大きくします。次の例では全て32Mなので、最大32MBまでアップロードしてインポート可能となります。

memory_limit = 32M
post_max_size = 32M
upload_max_filesize = 32M





関連記事



公開日:2019年09月19日 最終更新日:2019年11月30日
記事NO:02775