addictionwhite’s diary

考え中のことを整理と忘備録のために綴ります。ここに書かれている考えは翌日には変わる可能性があります

Vagrantd(CentOS7)でnginx 2

先日は静的ファイル(index.html)を表示させたので、phpを動かそうと思ったが思いの外はまった。
今回は勉強用に試しているだけだったので適当なバージョンのPHPをインストール

sudo yum -y install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -ivh ./remi-release-7.rpm
sudo yum install --enablerepo=epel,remi-php70 php php-mcrypt php-mbstring php-fpm php-mysqlnd php-opcache php-apcu

nginxの設定修正
sudo vim /etc/nginx/conf.d/default.conf

location ~ \.php$ {
    #root html;
    root /var/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
}

phpfpmの設定修正
sudo vim /etc/php-fpm.d/www.conf

;user = apache
user = nginx
;group = apache
group = nginx
# nginx と php-fpmを再起動し、設定を反映
sudo systemctl restart nginx
sudo systemctl restart php-fpm

/var/www/配下にindex.phpを作成

 <?php 
phpinfo(); 

http://192.168.33.10/index.php を叩くとphpinfoの画面でなく、index.phpファイルがダウンロードされる。
ここで原因がわからずはまる
実施したこと
* nginxのログファイルの権限を変える
* index.phpの権限を変える
* selinuxのチェック
* /etc/nginx/conf.d/default.conf , /etc/php-fpm.d/www.confの設定ファイルのチェック
(設定の誤り以外にもシンタックスエラーに一度気づかなかったのでチェックしておくこと
sudo systemctl status php-fpm.service (sudoをつけると詳細にエラーをだしくてれるっぽい)
nginx -t (こちらはsudo つけると正しく動くのにつけないとエラー出るケースが有ったのでつけないほうがいいかもしれない*権限系のエラー?よくわかっていない)
シンタックスエラーの状態で起動しようとすると結構分かりづらいエラーが表示されるので気をつけていたほうがよさそう

  • choromeで見ていた場合キャッシュで反映されない場合があるようなので別のブラウザなどで試す
  • nginxのerror.logを見る

    原因としては先日書いた
    /etc/nginx/nginx.confの設定のserverディレクティブが悪さをしていた(こいつをコメントアウトすればindex.phpが表示された)。
#       server {
#           listen        80;
#           server_name   test.example.com;
#           root          /var/www/;
#
#           location / {
#           }
#
#       }

無意識にあとから書いたディレクティブが上書きするものと思っていた。
nginx.confが最初に読み込まれる設定ファイル。これが他の設定ファイルを読み込む

include /etc/nginx/conf.d/*.conf;

新しい設定追記するときは
conf.d/default.confに追記するのが正しい。

以下のコマンドを叩くとincludeされたファイルを展開して設定ファイルの内容を1本の設定ファイルとして表示できる

 sudo nginx -T

参考

PHP - nginxサーバへphpファイルにアクセスするとダウンロードされてしまう|teratail

Vagrant + CentOS7 + nginx + PHP7 + php-fpm でFuelPHP1.8の仮想開発環境を構築する | 空想ブログ

[Sy] 【解決した】HomebrewでNginx + php-fpmの環境を作ろうとしたらPHPファイルがダウンロードされる | Syntax Error.