【nginx】 PHP7(php-fpm)+nginxを動かすまでの設定
さて時間があったので早速nginxの設定を軽く見ていこうということでインストール後すぐの設定が以下の通りになります。
前回のnginxにおけるインストールの記事はこちら
さっそくインストール後からのnginx.confから見ていきましょう
/etc/nginx/nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
どうやらserverの設定についてはconf.dの中でやってるみたいですね。 ということで次は/etc/nginx/conf.d/default.confあたりを見てみることに。
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
なるほど。今回はphp-fpmを動かしたいので少しずついじっていきましょう。
まずはphp-fpm.confをいじります。 今回はphpenvとphp-buildを使ってインストールしたので 自分の環境では ~/.phpenv/versions/7.0.0RC8/etc/php-fpm.d/www.conf 上記のPathになります。 間の7.0.0RC8は今使っているバージョンです。
ここで変えたのは以下の通り
user = nobody group = nobody ↓ user = nginx group = nginx pm = dynamic ↓ pm = static pm.max_children = 5 ↓ pm.max_children = 3 [追加] php_admin_flag[expose_php] = off
実行ユーザ及び実行グループをnginxに指定
pmでプロセス生成方法を指定します。 動的にプロセス数を増減するならdinamicに(デフォルトdynamicです)、設定したプロセス数に固定するならstaticを指定します。
次に生成するプロセス数をpm.max_childrenで設定します。 今回は3としました。
pmについてはローカルで作る場合はdynamicで良いかと思います。 今回はstatic使ったことなかったのでいじっていますが笑
staticについては固定値でメモリを確保するので処理速度が早いです。 dynamicの場合は動的にメモリを制御するので、低負荷であればメモリ使用量を抑えることができます。 pm.max_childrenで設定している値はstaticについては設定した数値分Processが立ち上がり、dynamicであれば最大数となります。
最後にexpose_phpをoffを追加しました。 これはphp.iniでもいいのですが、こちらで指定しちゃいました。 HPPTレスポンスヘッダに含まれるPHPバージョン情報を出力しないようにする設定です。
次にnginxの設定です。 /etc/nginx/conf.d/default.conf をいじっていきます。
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} ↓ # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
コメントアウトしている部分を以下のように変更しました。 ここでハマりやすいのはfastcgi_paramの部分でしょうか。
デフォルトの設定だと以下のようになっている部分を変更してあげないと、phpinfoの出力とかしても真っ白のままになります。
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; ↓ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
この設定が終わったらnginxを再起動させればlocationのPathに設定されたindexが表示されるはずです。