さくらVPS(nginx+php7)にphpMyAdminをインストールする

スポンサーリンク

はじめに

さくらのVPS(nginx+php7)にphpMyAdminをインストールして動かすまでのまとめです。

注意事項

  • コマンドはすべてroot権限での操作です。

環境

今回の作業環境は以下の通りです。

VPS さくらVPS 1G SSD
OS CentOS 7.3
Webサーバ nginx/1.10.2
その他 PHP 7.1.0

1.phpMyAdminをインストールする

yumを使用してphpMyAdminをインストールします。まずは利用可能なパッケージを確認します。

# yum --enablerepo=remi list available | grep phpMyAdmin
phpMyAdmin.noarch

コマンドを実行してインストール。

# yum --enablerepo=remi install phpMyAdmin

エラーが表示されインストールできない場合

以下のようなエラーが発生する場合はサーバにlibtidyパッケージが入っていません。

Error: Package: php-tidy-5.4.45-12.el7.remi.x86_64 (remi)
           Requires: libtidy-0.99.so.0()(64bit)

libtidyをEPELからインストールします。

# yum --enablerepo=epel install libtidy-devel

再度インストールを実行してエラーがでなければインストールは成功です。

2.nginxの設定ファイルを変更する

nginxの設定ファイルを変更しphpMyAdminへのアクセスを追加します。

# vi /etc/nginx/nginx.conf

server {
    略
    location /pma {
        alias  /usr/share/phpMyAdmin/;
        index  index.php;

        location ~ ^/pma/.+\.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^/pma/(.+\.php)(.*)$;
            fastcgi_param  SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
            include        /etc/nginx/fastcgi_params;
        }
    }
}
  • pmaの部分は適当な名称でOKです。
  • /usr/share/phpMyAdmin/ にphpMyAdminがインストールされているものとします。

ブラウザから http://ドメイン/pma/ にアクセスしてphpMyAdminのログイン画面が表示されれば成功です。

パーミンションエラーが発生する場合

以下のようなメッセージが表示される場合/var/lib/php/sessionフォルダへのアクセス権がないためエラーとなっています。

phpMyAdmin - Error
Error 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.
session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)
session_start(): Failed to read session data: files (path: /var/lib/php/session)

sessionフォルダのパーミンションを確認します。

# cd /var/lib/php
# ls -l

drwxrwx--- 2 root apache 6 Dec  1 12:00 session

上記の例ではsessionフォルダのグループがapacheとなっているためnginxへ変更します。

# chown root:nginx session
# ls -l

drwxrwx--- 2 root nginx 6 Dec  1 12:00 session

nginxを再起動します。

# systemctl restart nginx

ブラウザからアクセスしてログイン画面が表示されれば成功です。

アクセス制限を設定する

phpMyAdminのログイン画面へのブルートフォースアタックなどによりパスワード破られるのを防ぐためサーバ側でアクセス制限を設定します。

Basic認証

サーバにBasic認証を設定します。Basic認証ではブルートフォースアタックを完全に防ぐことはできませんが手間をかけさせ時間をかせぐことができます。
まず /etc/nginx フォルダに .htpasswd ファイルを作成します。

# htpasswd -c /etc/nginx/.htpasswd <ユーザー名>
New password: <新しいパスワード>
Re-type new password: <新しいパスワード>

htpasswdコマンドが実行できないときはhttpd-toolsをインストールします。

# yum install httpd-tools

nginxの設定ファイルを以下のように修正します。

# vi /etc/nginx/nginx.conf

  server {
      略
      location /pma {
          alias  /usr/share/phpMyAdmin/;
          index  index.php;

+         auth_basic "Restricted";
+         auth_basic_user_file /etc/nginx/.htpasswd;

          location ~ ^/pma/.+\.php$ {
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_split_path_info ^/pma/(.+\.php)(.*)$;
              fastcgi_param  SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
              include        /etc/nginx/fastcgi_params;
          }
      }
  }
auth_basic
表示されるメッセージ
auth_basic_user_file
パスワードファイルのパス

nginxを再起動しbasic認証が表示されれば成功です。

IPアドレス制限

IPアドレスを指定してアクセスを制限します。nginxの設定ファイルを以下のように修正します。

# vi /etc/nginx/nginx.conf

  server {
      略
      location /pma {
          alias  /usr/share/phpMyAdmin/;
          index  index.php;

+         allow xxx.xxx.xxx.xxx;
+         deny all;

          location ~ ^/pma/.+\.php$ {
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_split_path_info ^/pma/(.+\.php)(.*)$;
              fastcgi_param  SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
              include        /etc/nginx/fastcgi_params;
          }
      }
  }

xxx.xxx.xxx.xxxの部分には自分のIPを設定してください。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする