2013-04-19 7:05 by 仁伯爵

今まで作ってきたVirtualBoxで作るCentOS+nginxの検証Webサーバーでいろいろとhtmlやらphpやらを動かして遊んでいると、拡張子がphp以外のファイルではphpが動かない事に気が付いた。そういえば、そのあたりの設定は何もしていなかった。Apacheならば、htaccessファイルで”AddType application/x-httpd-php .php .html”とか、”AddHandler application/x-httpd-php .php .html”とかすればOKだが、nginxではどうすればいいのだろうか。nginx設定と、php-fpmの設定をいじくりまわせばよさそうだ。ついでに、fastcgiのソケットをTCPからUNIXソケットに変えてみる。そっちの方が高速な動作が期待できそうだからだ。

1.php-fpmの設定変更

まずはphp-fpmの設定をいじくる。php-fpmの設定ファイルは/etc/php-fpm.confだが、デフォルトの設定では/etc/php-fpm.d/ディレクトリは以下のconfファイルも読み込むようになっている。今回は/etc/php-fpm.d/www.confを編集する。


# vi /etc/php-fpm.d/www.conf

~ 省略 ~

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

~ 省略 ~

; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5
security.limit_extensions = .php .html


~ 省略 ~


拡張子phpに加えて、htmlも扱う設定と、ソケットをTCPでlocalhostのIPのポート9000番でリッスンする設定から、unixソケットを使うように変更した。

2.nginxの設定変更

次にnginxの設定ファイルをいじくる。/etc/nginx.confに記述してもいいけど、デフォルト設定で/etc/nginx.confから/etc/nginx/conf.dディレクトリのconfファイルもインクルードするように設定されているので、そちらに置いた個々のconfファイルで設定する。今回は例として/etc/nginx/home.confを編集する。


# vi /etc/nginx/conf.d/home.conf

~ 省略 ~
      # location ~ \.php$ {
        location ~ \.(php|html)$ {
          # fastcgi_pass   127.0.0.1:9000;
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /home/download/$fastcgi_script_name;
           include        fastcgi_params;
        }
~ 省略 ~

Serverディレクティブは以下に追加されているfastcgi関連のlcationディレクティブを編集している。 最初の行でphpだけだったところに、htmlの条件も付けくわえた。fastcgi_passも、localhostのIPのポート9000番を使用していたのを、/var/run/php-fpm/php-fpm.sockというソケットを使用するように変えてみた。

3.設定の反映!

設定ファイルを読み込ませるためphp-fpmプロセスは再起動し、nginxには設定ファイルを読み込ませる。


# /etc/init.d/php-fpm restart
php-fpm を停止中:                                          [  OK  ]
php-fpm を起動中:                                          [  OK  ]
#
#
# nginx -s
nginx: option "-s" requires parameter

# nginx -s reload             
#

これで、htmlファイルでも<?php ?>で囲めばphpがfastcgiで動くようになった。こういうこまごましたところで躓きつつ、ちょっとづつ前へ進んでいくのである。

2 件のコメント!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


*


*

投げ銭はこちらへ
bitcoin : 1AFU37YroGt8ohmFz8nG1N2ockL56Z4hfQ

ADA Coin: DdzFFzCqrhskq33AqGL8XkJZ3bb1hpxJYTd2UrJFKVpXphWG8d1RuhQrKymmKU1zzjvGi7oU69PaJ7nXECRG4Kpvg27Pghf3hpRNhRMy
2024年10月
 123456
78910111213
14151617181920
21222324252627
28293031  
カテゴリー