KUSANAGI+nginxでphpMyAdminを使いたいです!

Nia-TN-SDF-A2

こんにちはー!ニアです。

Webサーバーをnginxに変えてから、本サイトは元気です。(サーバーぐらし!

今回はKUSANAGI+nginxにphpMyAdminを導入し、動かすための設定方法を紹介します。

1. 本サイトを動かしているサーバーの環境

パブリッククラウド KUSANAGI for ConoHa
OS CentOS 7
Webサーバー nginx 1.9.12
PHP 7.0.5
データベース MariaDB 10.0

2. phpMyAdminをインストール

まず、phpMyAdminをインストールします。wgetコマンドで、phpMyAdminのzipファイルをダウンロードします。

# ここではバージョン4.4.15を扱います。お使いの環境に合わせてバージョン番号を変更してください。

wget https://files.phpmyadmin.net/phpMyAdmin/4.4.15/phpMyAdmin-4.4.15-all-languages.zip

ダウンロードしたzipファイルを、unzipコマンドで解凍します。

unzip phpMyAdmin-4.4.15-all-languages.zip

そのままではフォルダー名が長いので、mvコマンドでphpMyAdminに変更します。

mv phpMyAdmin-4.4.15-all-languages phpMyAdmin

phpMyAdminを任意の場所に配置します。ここでは「/usr/share」ディレクトリの中に配置しています。

mv phpMyAdmin /usr/share/phpMyAdmin

3. nginxの設定ファイルの編集

次にnginxの設定ファイルを編集します。

KUSANAGIの場合、「/etc/nginx/conf.d」ディレクトリにある「[PROFILE]_http.conf」ファイルを開きます。

[PROFILE]には、KUSANAGIでプロビジョニングした時に設定したプロファイル名が入ります。

vi /etc/nginx/conf.d/[PROFILE]_http.conf
#=======================================
# [ホスト名]
#---------------------------------------

server {

	listen 80;
	server_name [ホスト名];
	access_log  /home/kusanagi/[PROFILE]/log/nginx/access.log main;
	error_log   /home/kusanagi/[PROFILE]/log/nginx/error.log warn;

	charset UTF-8;
	client_max_body_size 16M;
	root  /home/kusanagi/[PROFILE]/DocumentRoot;
	index index.php index.html index.htm;		 

	# ...

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	# ...

	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		if (!-f $document_root$fastcgi_script_name) {
				return 404;
		}
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		fastcgi_buffers 256 128k;
		fastcgi_buffer_size 128k;
		fastcgi_intercept_errors on;
		fastcgi_read_timeout 120s;

		# ...
	}

	# ...
}

「location ~ [^/]\.php(/|$)」の前あたりに、以下のコードを追加します。

# http://[ホスト名]/phpMyAdmin/ 内のファイルに対する処理を行います。
location ^~ /phpMyAdmin/ {
	# aliasには、インストールしたphpMyAdminのディレクトリを指定します。
	alias /usr/share/phpMyAdmin/;
	try_files $uri $uri/ /index.php;
	# 接続できるIPアドレスを制限します。
	allow 127.0.0.1;
	# 自分のPCのネットワーからアクセスできるように、IPアドレスを指定します。
	allow xxx.xxx.xxx.xxx;
	deny all;

	# http://[ホスト名]/phpMyAdmin/ 内のphpファイルに対する処理を行います。
	location ~ /phpMyAdmin(.+\.php)$ {
		fastcgi_pass    127.0.0.1:9000;
		fastcgi_index   index.php;
		# fastcgi_paramのSCRIPT_FILENAMEには、インストールしたphpMyAdminのディレクトリを指定します。
		fastcgi_param   SCRIPT_FILENAME  /usr/share/phpMyAdmin$1;
		include         fastcgi_params;
		fastcgi_buffers 256 128k;
		fastcgi_buffer_size 128k;
		fastcgi_intercept_errors on;
		fastcgi_read_timeout 120s;
	}
}

phpMyAdmin用のlocationディレクティブを作成し、先ほどインストールしたphpMyAdminのディレクトリをaliasに指定します。その中に、PHPファイル用のlocationディレクティブを作成し、phpMyAdminのディレクトリをfastcgi_paramのSCRIPT_FILENAMEに指定します。

こうすることで、URLに「http://[ホスト名]/phpMyAdmin/」(末尾のスラッシュまで必要)と入力した時にphpMyAdminにアクセスすることができました。

locationディレクティブに指定しているphpMyAdminを任意の名前にすることで、phpMyAdminにアクセスするURLを変えることができます。例えば、

location ^~ /pma/ {

とすると、「http://[ホスト名]/pma/」でアクセスすることができます。

また、自分のネットワークのIPアドレスのみアクセスできるように制限をかけておくとよいです。

403

※サイトがSSLに対応している場合、「[PROFILE]_ssl.conf」ファイルにも同様の方法で設定します。というのも、phpMyAdminにはSSLを有効にしてアクセスするのがセキュリティの観点上、望ましいです。

4. おわりに

今回はKUSANAGI+nginxにphpMyAdminを導入し、動かすための設定方法を紹介しました。phpMyAdmin本体をドキュメントルート上ではなく、別の所に置いた時は、aliasを使ってディレクトリを指定してあげれば、ブラウザからアクセスできるのですね。

nginxを使うのは今回が初めてで、Apacheとは異なる設定方法で少々戸惑いましたが、インターネット上の情報を参考にして試行錯誤し、何とか接続できるようになりました。

それでは、See you next!

参考サイト

コメント

タイトルとURLをコピーしました