さくら VPS (nginx + php7) に phpMyAdmin をインストールする
はじめに
さくらの VPS (nginx + php7) に、phpMyAdmin をインストールして動かします。
目次
環境
- VPS : さくらVPS 1G SSD
- OS : CentOS 7.3
- その他 : nginx/1.10.2, PHP 7.1.0
phpMyAdmin をインストールする
yum を使用して、phpMyAdmin をインストールします。まずは利用可能なパッケージを確認します。
1# yum --enablerepo=remi list available | grep phpMyAdmin 2phpMyAdmin.noarch
以下のコマンドを実行してインストール。
1# yum --enablerepo=remi install phpMyAdmin
エラーが表示されインストールできない場合
以下のようなエラーが発生する場合は、サーバに libtidy パッケージが入っていません。
1Error: Package: php-tidy-5.4.45-12.el7.remi.x86_64 (remi) 2 Requires: libtidy-0.99.so.0()(64bit)
libtidy を EPEL からインストールします。
1# yum --enablerepo=epel install libtidy-devel
再度インストールを実行して、エラーがでなければインストールは成功です。
nginx の設定ファイルを変更する
nginx の設定ファイルを変更し、phpMyAdmin へのアクセスを追加します。
/etc/nginx/nginx.conf1server { 2 ...... 3 location /pma { 4 alias /usr/share/phpMyAdmin/; 5 index index.php; 6 7 location ~ ^/pma/.+\.php$ { 8 fastcgi_pass 127.0.0.1:9000; 9 fastcgi_index index.php; 10 fastcgi_split_path_info ^/pma/(.+\.php)(.*)$; 11 fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name; 12 include /etc/nginx/fastcgi_params; 13 } 14 } 15}
- pma の部分は、適当な名称で OK です。
/usr/share/phpMyAdmin/
に phpMyAdmin がインストールされているものとします。
ブラウザから http://ドメイン/pma/
にアクセスして、phpMyAdmin のログイン画面が表示されれば成功です。
パーミンションエラーが発生する場合
以下のようなメッセージが表示される場合、/var/lib/php/session
フォルダへのアクセス権がないためエラーとなっています。
1phpMyAdmin - Error 2Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser. 3session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13) 4session_start(): Failed to read session data: files (path: /var/lib/php/session)
session フォルダのパーミンションを確認します。
1# cd /var/lib/php 2# ls -l 3 4drwxrwx--- 2 root apache 6 Dec 1 12:00 session
上記の例では、session フォルダのグループが apache となっているため、nginx へ変更します。
1# chown root:nginx session 2# ls -l 3 4drwxrwx--- 2 root nginx 6 Dec 1 12:00 session
nginx を再起動します。
1# systemctl restart nginx
ブラウザからアクセスしてログイン画面が表示されれば成功です。
アクセス制限を設定する
phpMyAdmin のログイン画面へのブルートフォースアタックなどにより、パスワード破られるのを防ぐため、サーバ側でアクセス制限を設定します。
Basic 認証
サーバに Basic 認証を設定します。Basic 認証では、ブルートフォースアタックを完全に防ぐことはできませんが、手間をかけさせ時間をかせぐことができます。
まず /etc/nginx
フォルダに .htpasswd ファイルを作成します。
1# htpasswd -c /etc/nginx/.htpasswd <ユーザー名> 2New password: <新しいパスワード> 3Re-type new password: <新しいパスワード>
htpasswd コマンドが実行できないときは、httpd-tools をインストールします。
1# yum install httpd-tools
nginx の設定ファイルを以下のように修正します。
/etc/nginx/nginx.conf1server { 2 ...... 3 location /pma { 4 alias /usr/share/phpMyAdmin/; 5 index index.php; 6 7 auth_basic "Restricted"; 8 auth_basic_user_file /etc/nginx/.htpasswd; 9 10 location ~ ^/pma/.+\.php$ { 11 fastcgi_pass 127.0.0.1:9000; 12 fastcgi_index index.php; 13 fastcgi_split_path_info ^/pma/(.+\.php)(.*)$; 14 fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name; 15 include /etc/nginx/fastcgi_params; 16 } 17 } 18}
- auth_basic : 表示されるメッセージ
- auth_basic_user_file : パスワードファイルのパス
nginx を再起動し、basic 認証が表示されれば成功です。
IP アドレス制限
IP アドレスを指定してアクセスを制限します。nginx の設定ファイルを以下のように修正します。
/etc/nginx/nginx.conf1server { 2 ...... 3 location /pma { 4 alias /usr/share/phpMyAdmin/; 5 index index.php; 6 7 allow xxx.xxx.xxx.xxx; 8 deny all; 9 10 location ~ ^/pma/.+\.php$ { 11 fastcgi_pass 127.0.0.1:9000; 12 fastcgi_index index.php; 13 fastcgi_split_path_info ^/pma/(.+\.php)(.*)$; 14 fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name; 15 include /etc/nginx/fastcgi_params; 16 } 17 } 18}
xxx.xxx.xxx.xxx の部分には、自分の IP を設定してください。