Nginx на Debian 8 dev setup. PHP через PHP FPM не работает

UPDATE: Хорошо, теперь я могу с радостью сказать, что то, что вы видите ниже, – это рецепт для счастливой работы автоматизированной установки PHP и Nginx dev (с автоматическими доменами), и все проблемы, которые у меня были, теперь решены.

Я установил следующее: sudo apt-get nginx php5 php5-fpm dnsmasq на Debian 8, Jessie. Я установил dnsmasq, чтобы иметь домены, названные в честь моих сайтов-разработчиков. Я создал файл .conf файле /etc/dnsmasq.d содержащий

 address=/dev/127.0.0.1 

и эта часть настройки работает хорошо, любые .dev-домены разрешаются на localhost, который обслуживается Nginx.

Теперь на серверную часть среды dev и то, что я пробовал до сих пор (серверные блоки находятся ниже контрольного списка). Обновление: все хорошо! Все работает сейчас!

Вещи-я-сделал-так-далеко контрольный список:

  • Теперь у меня есть рабочая настройка (это мое последнее редактирование на этот пост). Я нашел полезные советы в статье Sitepoint (веб-сайт). Таким образом, я дал некоторые разрешения родительским папкам моего dev-сайта, являющимся chgrp -R www-data / var / www, и я сделал chmod -R g + rw / var / www, а также chmod g + s / var / www Этот последний chmod – лучший бит! Добавление SGID (g + s) означает, что любые новые каталоги dev, добавленные в / var / www, автоматически станут собственностью www-data, добавив больше автоматизации в эту настройку dev
  • Я перезагружал php5-fpm и Nginx каждый раз, когда я вносил изменения в настройку, и обе работают нормально.
  • Обновить. Теперь, когда новая настройка работает быстро cgi, я также сделал это, sudo apt-get php5-cgi spawn-fcgi
  • Я добавил пользователей josh (мой главный пользователь), root и пользовательские www-данные (Nginx) в группу с именем www-data
  • Для php5-fpm я проверил /etc/php5/fpm/pool.d/www.conf и увидел, что установка по умолчанию дала мне эти пользовательские атрибуты, user = www-data group = www-data, и эти прослушивающие атрибуты прослушиваются. owner = www-data listen.group = www-data
  • Я сделал следующую символическую ссылку: ln -s /etc/nginx/sites-available/local_dev.conf /etc/nginx/sites-enabled/

Я следил за учебником по настройке Devino для разработчиков Nginx, который не использовал PHP; поэтому я объединил основные части этого учебника вместе с частью учебника по окружающей среде PHP, отличного от Dev, от Christophe на scaleyourcode.com

Это то, что я придумал для блоков сервера в файле conf в /etc/nginx/sites-available (из сочетания идей из двух учебников). Опять же, проблема в том, что моя страница index.php не обслуживается. (Если я добавлю файл index.html в индекс ниже в блоке сервера, а затем откройте файл index.html, он будет работать нормально) .Update. Я отказался от этого файла Frankenconfig, который я сделал, и у вас есть новый, и детали чуть ниже. Все в порядке!

ОБНОВЛЕНИЕ, РАБОТА! Я опубликовал новый конфигурационный файл, слегка модифицированный вариант того, что пользователь denji (на Github) надел Github под названием «dnsmasq». У этой версии также есть блоки для PHPmyadmin, которые мне не нужны. Я также добавил fastcgi_param SCRIPT_FILENAME $ document_root / $ fastcgi_script_name; на место ~ .php, потому что до этого он не будет работать на моей настройке. Я также удалил знак доллара, который находился напротив места ~ .php (знак доллара был здесь, а не хороший), так что, когда я использую любой из нижеперечисленных на реальном сетевом сервере, знак $ не станет бесплатным пропуском для хакеров.

  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; } } 

Linux и Unix - лучшая ОС в мире.