複製のようなにおいがするのは知っていますが、今はこのセットアップを5回以上試しましたが、これを機能させることができません。ほとんどの設定はchrootやマルチサーバーなどで複雑ですが、これを可能な限り単純な設定に減らしました。 nginxでfpmが最も簡単な形式でどのように設定されているかを理解したいのですが...ご容赦ください。
現在の設定:
/etc/nginx/conf.d/default.confへの追加
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
/etc/php-fpm.d/www.confへの追加と変更
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
/usr/share/nginx/html/info.phpファイルを追加しました
<?php phpinfo();?>
両方のサービスを開始
systemctl start nginx.service
systemctl start php-fpm.service
そして最後にtail -f /var/log/nginx/error.log
2015/11/09 12:18:01 [エラー] 28638#0:* 1 FastCGIがstderrに送信されました: "Primary script unknown"アップストリームからの応答ヘッダーの読み取り中に、クライアント:xx.xxx.xxx .xxx、サーバー:localhost、リクエスト: "GET /info.php HTTP/1.1"、アップストリーム: "fastcgi:// unix:/var/run/php-fpm/php-fpm.sock:"、ホスト: "xxx .xx.xxx.xx」
したがって、FPMはスクリプトを見つけることができないようです。これだけは理解できましたが、構成によると、スクリプトファイル名はドキュメントルートとスクリプト名です。スクリプト名はinfo.phpで、デフォルトの設定によると、ルートパスは次のとおりです。
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
したがって、これを手動で連結すると、
/usr/share/nginx/html/info.php
そしてこのファイルは存在します
#ls -lah /usr/share/nginx/html/
total 20K
drwxr-xr-x 2 root root 4.0K Nov 9 12:35 .
drwxr-xr-x 3 root root 4.0K Apr 21 2015 ..
-rw-r--r-- 1 root root 537 Apr 21 2015 50x.html
-rw-r--r-- 1 root root 612 Apr 21 2015 index.html
-rw-r--r-- 1 root nginx 20 Nov 9 10:45 info.php
これがうまくいかない理由を誰かが私に説明できますか?
$document_root
は、同じ場所または親コンテナー内のroot
ディレクティブからその値を取得する必要があります。兄弟コンテナでroot
が定義されているようです。 root
をserver
コンテナーに移動します。