ホーム > カテゴリ > サーバー構築・運用・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


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律