NginxでphpMyAdminを使用する [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