LINUX.ORG.RU

Nginx 1.14 + php7.3-fpm

 , ,


0

1

На Ubuntu 18.04 поставил Nginx 1.14.2, по инструкции с официального сайта. Поставил php7.3-fpm из репы ondrej/php. В /etc/php/7.3/fpm/pool.d/www.conf изменил listen = /run/php/php7.3-fpm.sock на listen = 127.0.0.1:9000, в nginx.conf изменил пользователя на www-data (как у php-fpm). Изменил default.conf на:

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    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;
    }
}
root@abcde:/# netstat -anp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      11868/php-fpm: mast 
root@abcde:/# ps -aux | grep php
root     11868  0.0 10.9 384300 25752 ?        Ss   14:05   0:00 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data 11869  0.0  5.0 386600 11920 ?        S    14:05   0:00 php-fpm: pool www
www-data 11870  0.0  5.7 386732 13528 ?        S    14:05   0:00 php-fpm: pool www
root     11875  0.0  0.4  14428  1104 pts/1    S+   14:08   0:00 grep --color=auto php
root@abcde:/# ps -aux | grep nginx
root     11862  0.0  0.3  33308   896 ?        Ss   14:05   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www-data 11864  0.0  1.8  38108  4248 ?        S    14:05   0:00 nginx: worker process
root     11877  0.0  0.4  14428  1084 pts/1    S+   14:08   0:00 grep --color=auto nginx
В index.html добавил строку
<?php
  echo "Hello World!";
?>
и создал в одной директории с index.html test.php
<?php var_export($_SERVER)?>
Но, при попытке исполнить(открыть в браузере) test.php получаю пустую страницу, а в логах nginx:
2018/12/29 13:56:16 [error] 11838#11838: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 100.100.1.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "111.111.222.222"
а при открытии index.html вместо Hello, World! получаю Hello, World!"; ?>

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;


Ты просто скопипастил эту строку со всеми прочими из какого-то примера? Ты уверен что этот конфиг — рекомендуемый конфиг для общего случая?

Прочти документацию к nginx. Она вроде даже на русском. Не только инструкцию, но и описание всех использованных директив. И не только про fastcgi, но и вообще про то как nginx обрабатывает запросы.

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Ты просто скопипастил эту строку со всеми прочими из какого-то примера? Ты уверен что этот конфиг — рекомендуемый конфиг для общего случая?

Он был в дефолтном конфиге nginx закомментирован, я просто раскомментировал.

Прочти документацию к nginx. Она вроде даже на русском.

Я по документации с nginx и настраивал php7.0-fpm + nginx 1.10. Но на новых версиях многое изменилось (7.3 и 1.14). Тупая копипаста старых конфигов или действий согласно https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/ выдают ту-же ошибку.

evybwf ()
Ответ на: комментарий от BaBL

Проблема тут:

Пробовал такой вариант

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
}
}
html страница аналогично выдаёт Hello, World!"; ?>, а открытие test.php оборачивается «404 Not Found» и в логах ничего нету.

Файл /etc/nginx/fastcgi_params есть и заполнен.

А вот это тоже зря сделал:

Дефолтный конфиг + https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/ предлагают слушать порт, поэтому я так и сделал.

evybwf ()
Ответ на: комментарий от evybwf

Я по документации с nginx и настраивал

В документации nginx сказано «возьмите дефолтный конфиг от мейтейнеров вашего дистрибутива и раскоментируйте в нём какую-нибудь строчку не вдаваясь в её значение»?

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

В документации nginx сказано «возьмите дефолтный конфиг от мейтейнеров вашего дистрибутива и раскоментируйте в нём какую-нибудь строчку не вдаваясь в её значение»?

1. Я не одним способом пытался его заставить работать. Привёл тот, который в лог хот что-то пишет.

2. Я выше привёл ссылку на мануал по которому настраивал.

evybwf ()

На Ubuntu 18.04 поставил Nginx 1.14.2, по инструкции с официального сайта. Поставил php7.3-fpm из репы ondrej/php.

nginx надо было из его же соседней ppa ставить.

anonymous ()
Ответ на: комментарий от evybwf

Нет, просто тогда с конфигами проблем нет и php-fpm цепляется из коробки двумя строчками

include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
Мне лень было возиться, поставил так на 18.04 как раз на днях.

anonymous ()