Debian 8のNginx開発設定。 PHP FPM経由のPHPが正しく機能しません。

Debian 8のNginx開発設定。 PHP FPM経由のPHPが正しく機能しません。

アップデート:さて、私は以下のようなものがうまく機能する自動化されたPHPとNginxの開発設定(自動ドメインを含む)のためのレシピであり、私が経験したすべての問題が今解決されていると嬉しく思います。

sudo apt-get nginx php5 php5-fpm dnsmasqDebian 8、Jessieに以下をインストールしました。開発サイトに名前を付けたドメインを持つようにdnsmasqをインストールしました。私は以下を含む.confファイルを作成しました。/etc/dnsmasq.d

address=/dev/127.0.0.1

そして設定のこの部分はうまくいきます。すべての.devドメインは、Nginxが提供するローカルホストとして解決されます。

それでは、開発環境のサーバー部分とこれまでに試したことを見てみましょう(サーバーブロックはマニフェストの下にあります)。更新:すべてが大丈夫です!今、すべてがうまくいきます!

これまでに私が達成したことのリスト:

  • これでジョブ設定が完了しました(この投稿は最近編集したものです)。 Sitepointの記事でいくつかの便利なヒントを見つけました。だから私の開発サイトフォルダの親フォルダ(例:chgrp -R www-data /var/www )にいくつかの権限を与えました。行いました。最後のchmodは次のようになります。最高のもの! SGID(g + s)を追加することは、/ var / wwwに追加されたすべての新しい開発ディレクトリが自動的にwww-dataの所有になり、この開発設定がさらに自動化されることを意味します。
  • 設定を変更するたびにphp5-fpmとNginxを再ロードすると、両方がうまく動作します。
  • 直す。これで、新しい設定がcgiをすばやく実行しています。これで完了しました。 sudo apt-get php5-cgi generate-fcgi
  • www-dataというグループに、ユーザーjosh(私のデフォルトユーザー)、root、およびユーザーwww-data(Nginx)を追加しました。
  • php5-fpmの場合、/etc/php5/fpm/pool.d/www.confを確認したところ、デフォルトのインストールではuser=www-data group=www-dataというユーザー属性が提供され、リスニング属性はlisteningであることが確認されました。所有者=www-データ Listen.group=www-データ
  • 私は次のようなシンボリックリンクを作成しました。ln -s /etc/nginx/sites-available/local_dev.conf /etc/nginx/sites-enabled/

私はPHPを使用していないgoodrobot.comのNginx開発設定チュートリアルに従いました。したがって、このチュートリアルの主要部分をscaleyourcode.comにあるChristopheのPHP非開発環境チュートリアルの一部と組み合わせました。

これは私がconfファイルのサーバーブロックについて考えたものです/etc/nginx/sites-available(2つのチュートリアルのアイデアを組み合わせます)。繰り返しますが、問題は私のindex.phpページが提供されていないことです。 (サーバーブロックの下のインデックスにindex.htmlファイルを追加してからindex.htmlファイルを指定すると正常に動作します。)修正します。私が作成したFrankenconfigファイルをゴミ箱に捨て、新しいファイルを作成しました。詳細は以下に示す。今、すべてが大丈夫です!

更新中です。私は、ユーザーdenji(Github)がGithubに投稿した「dnsmasq」というタイトルのわずかに変更されたバージョンである新しい設定ファイルを公開しました。このバージョンにはPHPmyadminブロックもありますが、必要ありません。また、 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; を location~.php ブロックに追加しました。また、〜.php(ここではドル記号、良くない)場所の前にあるドル記号を削除して、実際のWebサーバーで次のいずれかを使用するときに$記号がハッカーの自由通行にならないようにしました。

  server {
  index index.php;
  set $basepath "/var/www";

  set $domain $host;

  # check one name domain for simple application
  if ($domain ~ "^(.[^.]*)\.dev$") {
    set $domain $1;
    set $rootpath "${domain}";
    set $servername "${domain}.dev";
  }

  # check multi name domain to multi application
  if ($domain ~ "^(.*)\.(.[^.]*)\.dev$") {
    set $subdomain $1;
    set $domain $2;
    set $rootpath "${domain}/${subdomain}/www/";
    set $servername "${subdomain}.${domain}.dev";
  }

  server_name $servername;

  access_log "/var/log/nginx/server.${servername}.access.log";
  error_log "/var/log/nginx/server.dev.error.log";

  root $basepath/$rootpath;

  # check file exist and send request sting to index.php 
  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  # allow php only in root index.php
  #location ~ "^/index\.php" {
  # allow execute all php files
  location ~ \.php {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;   
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
  }

    location ~ /\.ht {
    deny all;
  }

  # disallow access to git configs path
    location ~ /\.git {
    deny all;
  }

  }

関連情報