LINUX.ORG.RU

4
Всего сообщений: 179

Проблема со связкой Nginx + Php-fpm

Всем доброго времени суток. Есть задача: необходимо реализовать location, чтобы при обращении my.site.ru/php, происходил проксирование на интерпритатор php, а при обращении my.site.ru/<другой ЯП> проксирование на порт, при обращении к корню должна отдаваться стандартная страница nginx’а. Со вторым пунктом проблем нет. А вот с 1-м и 3-м есть затруднения. Встречал тут темы с проблемами с nginx+php-fpm, но опираясь на них не смог решить проблему. Получалось реализовать так, что при запросе на корень сайта и location /php отдавалось одно и тоже. А вот разделить не получается. Сейчас у меня при запросе на корень отдаётся стандартная страница Nginx’а, при запросе на location /ruby запрос проксируется в приложению ruby по порту, а вот при запросе на location /php получаю ошибку 404 Not Found. Я понимаю, что это говорит о том, что файл не найден, но не могу понять причину. На данный момент конфиг Nginx’а выглядит так:


server {
  listen 80;

  server_name my.site.ru;

  root /usr/share/nginx/html;

  location / {
        index index.html index.php;
  }


   location ~ \.php$ {
    fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_intercept_errors on;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
   }

  location = /ruby {
    proxy_pass http://127.0.0.1:8080;
  }
}

 ,

Marmon ()

php fpm убить запрос если клиент отсоединился

Есть связка nginx+php-fpm. Хочу чтобы убивались запросы со стороны php, если клиент отсоединился

Например клиент запрашивает http://host/script.php

wget --read-timeout=1 --no-check-certificate -t 1 https://host/script.php

Через 1 сек. клиент закрывает соединение(--read-timeout=1), но nginx не закрывает соединение с сокетом /run/php-fpm.sock
netstat -nap | grep php | grep CONNECTED | grep -v mast
unix  2      [ ]         STREAM     CONNECTED     51186    21008/php-fpm: pool  /run/php-fpm.sock

и скрипт продолжает работать

Сам script.php засыпает за 10000 сек.
<?php
sleep(10000);


fastcgi_ignore_client_abort on в nginx не помогает

Да, можно поставить в самом php лимиты max_execution_time или request_terminate_timeout, но хотелось бы чтобы nginx закрывал сам соединение c php, если клиент уже отсоединился и не ждет результата работы скрипта

 ,

gobot ()

aerospike php error

есть 2 сервера, на одном все работает, на другом в логах ошибки

2019/08/07 12:59:43 [error] 1247#1247: *818680 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Exception: Failed to connect in /var/www/asp.php:61
Stack trace:
#0 /var/www/asp.php(61): Aerospike->__construct(Array)
#1 {main}
  thrown in /var/www/asp.php on line 61" while reading response header from upstream, client: 1.2.3.4, server: *.example.com, request: "GET /asp/75702373089/.jpg HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "send.example.com", referrer: "https://test.com/firebase.js"

aerospike стоит одинаковой версии

ii  aerospike-server-community       4.2.0.3-1                          amd64        The Aerospike distributed datastore allows fully scalable and reliable data storage with elastic server properties.
ii  aerospike-tools                  3.15.3.8                           amd64        Aerospike server tools.

модуль php был скопирован с работающего сервера, где нет ошибок

cat /etc/php/7.0/fpm/conf.d/aerospike.ini
extension=aerospike.so
aerospike.udf.lua_system_path=/usr/local/aerospike/lua
aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua
aerospike.shm.use = 1

1.2.3.4 - - [07/Aug/2019:12:59:43 +0300] "GET /asp/75702373089/.jpg HTTP/1.1" 500 5 "https://test.com/firebase.js" "Mozilla/5.0 (Linux; Android 9; RMX1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36"
1.2.3.4 - - [07/Aug/2019:12:59:44 +0300] "GET //images/usr.58db988a0ac8c/hahzlxfavmkstudzdwmqcxtl.jpg HTTP/1.1" 200 78076 "https://test.com/firebase.js" "Mozilla/5.0 (Linux; Android 9; RMX1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36"

после 500, сразу отдается 200 код

php -v
PHP 7.0.33-0+deb9u3 (cli) (built: Mar  8 2019 10:01:24) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.33-0+deb9u3, Copyright (c) 1999-2017, by Zend Technologies

подскажите куда еще посмотреть, какие библиотеки надо сравнить?

 ,

Garcia ()

PHP-FPM и количество обработанных запросов в секунду

Всем доброго времени суток.

Подскажите, хочу посчитать производительность php-fpm на сервере.

Есть статистика, которую можно получить от самого php-fpm:

{
    "pool":"www",
    "process manager":"ondemand",
    "start time":1563956404,
    "start since":364330,
    "accepted conn":61204,
    "listen queue":0,
    "max listen queue":0,
    "listen queue len":0,
    "idle processes":2,
    "active processes":1,
    "total processes":3,
    "max active processes":85,
    "max children reached":0,
    "slow requests":510
}

Я правильно понимаю, что если accepted conn поделить на start since, то собственно и получу количество обработанных запросов в секунду?

И, возможно кто-то подскажет, можно ли от php-fpm получить время ответа в ms?

 ,

hanharr ()

PHP-FPM Работа с разных Lan interface

Подскажите! можно ли конкретному домену на сервере присвоить исходящий интерфейс. что-бы скрипты php типа file_get_content и.т.д работали с заданного интерфейса. задача каждому сайту выдать исходящий свой айпи

CURL proxy не в счет.

 

shrmvl ()

CMS Magento 2 Centos 7 + nginx + php-fpm

Здравствуйте, уже который день играюсь с серваком Centos 7 и мне могу разобраться до конца. Опишу проблему вкратце: 1. Хочу использовать Centos 7 с панелью управления. 2. Выбрал VESTA, установка nginx + php-fpm 3. После установки vesta под домен автоматически создаеться директория /var/www/html которую домен почему-то по умолчанию подхватывает. 4. Когда сервер свежий я первым делом запускаю yum update и обновляю все пакеты 5. После установки php (7.2), php-fpm, ngix и прочих модулей почему-то в системе оказываеться httpd, я не могу просто понять почему! Откуда оно береться? Я мониторил все команды которые я запускаю, ну нет там запроса yum install httpd и т.д. Я хочу использовать просто nginx + php-fpm, «не нужон» мне этот apache, для движка использую совсем другую директорию, не хочу я привязываться к дефолтной /var/www/html

Самый главный вопрос, возможно ли работа nginx + php-fpm без httpd ? И будет ли работать панель управления VESTA без httpd ? Пожалуйста, помогите.

Пока продолжил тестировать наконец-то я понял что httpd подитягиваеться VESTA... Как мне избавить от httpd и дать понять серверу чтобы он работал только через nginx и php-fpm?

 , , ,

Codov ()

php-fpm core dump

добавил

cat /proc/sys/kernel/core_pattern
/tmp/core.%e.%p.%t

в конфиг php-fpm.conf

rlimit_core = unlimited

ulimit -c unlimite

все перезапустил

в логах

WARNING: [pool www] child 9193 exited on signal 11 (SIGSEGV - core dumped) after 40.309703 seconds from start
NOTICE: [pool www] child 10337 started

но в /tmp/ пусто

попробовал еще добавить в /etc/sysctl.conf

kernel.core_pattern = /tmp/core.%e.%p.%h.%t
fs.suid_dumpable = 1
kernel.core_uses_pid = 1

в /etc/security/limits.conf

*       -       core    unlimited
root    -       core    unlimited

попробовал через тестовый файл сделать core файл, все создается в /tmp, но от php-fpm нет coredump, почему он не создается?

 , ,

Garcia ()

centos7 php-fpm webp

есть centos7+centos-webpanel.com +php-fpm
как подключить webp https://php5.kiev.ua/php7/function.imagewebp.html
вроде в mod_php для апача по умолчанию есть webp

 , ,

kommersant ()

nginx редирект любого каталога на index.php

есть рабочий конфиг

location ~ ^/ajax/not/ {
   fastcgi_index  index.php;
   try_files $uri $uri/ /ajax/not/index.php?$query_string;
   fastcgi_pass   unix:/var/run/php-fpm.sock;
   fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
   include        fastcgi_params;
}
можно как-то это правило модифицировать, если добавятся еще несколько каталогов в ajax, что бы в конфиге не добавлять похожие правила, например

location ~ ^/ajax/set/ {
   fastcgi_index  index.php;
   try_files $uri $uri/ /ajax/set/index.php?$query_string;
   fastcgi_pass   unix:/var/run/php-fpm.sock;
   fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
   include        fastcgi_params;
}

а сделать одно общее правило для таких случаев?

 , ,

Garcia ()

Через 332 дня аптайма затупил NGinx. В чем может быть причина?

Сайт на Nginx + PHP5.6, в последние пару месяцев было ~5000 уникумов в день, ~7000 страниц.

# uptime
 10:31:36 up 332 days, 21:49,  1 user,  load average: 2.12, 2.12, 2.09


Сегодня Nginx выдал ошибку:

504 Gateway Time-out nginx/1.6.2


По htop вижу, что память выжрал php-fpm. Всего на сервере 1Gb, использовано:

# free -h
             total       used       free     shared    buffers     cached
Mem:          1.0G       923M        83M        68M        65M       713M
-/+ buffers/cache:       145M       862M
Swap:           0B         0B         0B


У php-fpm вижу 1 процесс со статусом D. Процесс, имеющий статус S может получить статус D спустя некоторое время. Пример с процессом 23265:

# ps aux | grep php-fpm
root       460  0.0  1.3 105288 14024 ?        Ss    2018  33:25 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 23232  0.6  3.3 116828 34536 ?        S    09:20   0:33 php-fpm: pool www                                 
www-data 23237  0.6  3.3 116860 34648 ?        S    09:21   0:29 php-fpm: pool www                                 
www-data 23240  0.7  3.2 116780 33752 ?        S    09:22   0:32 php-fpm: pool www                                 
www-data 23264  0.5  3.3 116568 34312 ?        D    09:27   0:23 php-fpm: pool www                                 
www-data 23265  0.6  3.3 116816 34748 ?        S    09:27   0:26 php-fpm: pool www                                 
root     23992  0.0  0.2   4556  2108 pts/0    S+   10:39   0:00 grep php-fpm

# ps aux | grep php-fpm
root       460  0.0  1.3 105288 14024 ?        Ss    2018  33:25 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 23232  0.7  3.3 116828 34536 ?        S    09:20   0:35 php-fpm: pool www                                 
www-data 23237  0.6  3.3 116676 34464 ?        S    09:21   0:31 php-fpm: pool www                                 
www-data 23240  0.7  3.2 116700 33816 ?        S    09:22   0:35 php-fpm: pool www                                 
www-data 23264  0.5  3.3 116568 34396 ?        S    09:27   0:26 php-fpm: pool www                                 
www-data 23265  0.6  3.3 116816 34748 ?        D    09:27   0:29 php-fpm: pool www                                 
root     24029  0.0  0.2   4556  2152 pts/0    S+   10:44   0:00 grep php-fpm


Вот. Что все это значит? Перед тем как я сделаю ребут, хотел бы понять что произошло, чего серверу не хватило.

Хотя, перед ребутом я попробую перезапустить php-fpm, может и ребутиться ненадо. Но хотелось бы понять в чем причина 504-й ошибки.



Перемещено leave из web-development

 ,

Xintrea ()

SSMTP + PHP-FPM (Docker) Имя отправителя

Здравствуйте.

В docker-compose установлены сервисы - это nginx, php-fpm (7.1), и др. это не важно.

Сам NGINX помимо проксирования, так же обслуживает веб-сайты с разными доменами и php-fpm сервис выполняет соответственно скрипты PHP.

Надо было, чтобы полетела почта по средствам функции mail(), решил поставить ssmtp, а так же добавил разные конфигурации ssmtp для доменов, типа: ssmtp-example1.com.conf ssmtp-example2.com.conf ssmtp-example3.com.conf

Завел это дело при помощи NGINX указав в fastcgi_param значение sendmail_path для каждого виртуального хоста (домена) свой конфиг ssmtp.

И почта полетела, от разных доменов с именем www-data@домен-сайта.ru!

Но теперь проблема, как не пытаюсь изменить Имя отправителя (Sender) при помощи PHP, ничего не получается! Т.е. письмо приходит ОТ: www-data@домен-сайта.ru Хочется, чтобы было красиво, типо ОТ: ООО Рога и Копыта <www-data@домен-сайта.ru>

я так понимаю ssmtp затирает значение sender-а?

Как можно сделать?

 , , , ,

dirsex ()

kubernetes fpm nginx

Добрый день. Пытаюсь объединить два контейнера в поде.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: app
  name: app-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: app
    spec:
      volumes:
        - name: shared-files
          emptyDir: {}
        - name: shared-log
          hostPath:
            path: /env/var/log/nginx
        - name: nginx-config-default
          configMap:
            name: nginx-default
        - name: php-fpm
          configMap:
            name: php-fpm
        - name: php-fpm-xdebug
          configMap:
            name: php-fpm-xdebug
      containers:
        - image: nginx:1.15.9
          name: nginx
          ports:
          - containerPort: 80
          volumeMounts:
            - name: shared-files
              mountPath: /var/www/
            - name: shared-log
              mountPath: /var/log/nginx
            - name: nginx-config-default
              mountPath: /etc/nginx/conf.d/default.conf
              subPath: default.conf
        - image: app
          imagePullPolicy: Never
          name: app
          ports:
          - containerPort: 11080
          volumeMounts:
            - name: shared-files
              mountPath: /var/www
            - name: php-fpm
              mountPath: /etc/php/7.1/fpm/pool.d/www.conf
              subPath: www.conf
            - name: php-fpm-xdebug
              mountPath: /usr/local/etc/php/conf.d/xdebug-dev.ini
              subPath: xdebug-dev.ini
     status: {}

Почему папка var/www в поде пуста, хотя в контейнере app в папке есть файлы

 , , ,

letema88 ()

php fpm socket не создается

вопрос больше для экстрасенсов
есть центос7+ панель cwp7 http://centos-webpanel.com/
при установке php-fpm любой версии не создается сокет
ls /opt/alt/php-fpm70/usr/var/sockets/ пусто
без сокета не хочет работать fpm
пишет ошибку

[proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /opt/alt/php-fpm73/usr/var/sockets/niuniu.sock (*) failed
[proxy_fcgi:error] AH01079: failed to make connection to backend: httpd-UDS

в других панелях на других серверах сокеты создаются и все работает
гугл не помог
куда копать?

 ,

kommersant ()

Как правильно выставить приоритет процесса, чтобы он не ложил сайт

Есть сервер на нем сайт с двумя физическими дисками. На одном диске сайт, на другом периодически создается резервная копия сайта. Использую nginx+php-fpm

Сайт довольно увесистый, много десятков тысяч файлов. При любом копировании файлов сайта, пока идет процесс копирования - сайт лежит. Полное копирование длится минут 15-20.

504 Gateway Time-out

В логе: upstream: «fastcgi://unix:/run/php/php7.0-socket.sock:»

Это значит nginx работает нормально, а вот php отваливается. Пробовал писать:

nice -n 20 rsync ****

или

nice -n 20 cp ****

Ничего не помогает. Процесс копирования или синхронизации забирает на себя все мощности сервера и пока он не закончится сайт будет лежать. Причем угнетает оно только php. Например всякие вебинтерфейсы и вебпанели управления сервером вполне себе работают без тормозов. Тот же nginx 504 ошибку отдает. Так же через консоль можно заходить по ssh и даже выполнять копирование других файлов. А вот php падает наглухо.

 , ,

Maksimko ()

Nginx + Php-fpm - работают только в  usr

Доброго времени суток! Имеется ВМ с Centos 7 minimal, установил nginx, php-fpm, MariaDB. В /etc/php.ini отредактировал cgi.fix_pathinfo=1 на 0. В etc/php-fpm.d/www.conf user и group поменял на nginx. Конфиг nginx -

server {
listen 80;
server_name example.com;
root /mnt/test;

location / {
}

error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}


location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}


С такой конфигурацией отдает статику, для php пишет - "No input file specified."
Если указываю в root стандартную папку nginx - /usr/share/nginx/html или например какую нибудь тестовую папку в /usr-/usr/test скрипт работает. 
php скрипт - 
<?php phpinfo(); ?>

Смотрел всякие разные HOWTO по установке nginx + php-fpm,  по их примеру впринципе и делал. 
Прошу тыкнуть носом, где я должен что должен дописать или где не правильно пишу.

 ,

kovalev_94 ()

PHP-FPM: не создает IPC-сокет после ребута

Привет!

Такая заморочка, есть 2 идентичные VPS-ки (1Гб RAM, 1.5 гига swap+zram одно ядро CPU, KVM-виртуализация, Ubuntu 16.04.5) на них установлена VestaCP + сайтики. Заморочка в том, что на одной впске после перезагрузки php-fpm не создает сокета на /var/run/php/site.com.sock . Т.е., чтобы запустить пул я должен ручками делать

systemctl restart php7.2-fpm
На второй — все ок. Это притом, что на обоих серверах конфигурация абсолютно одинакова. Мой вопрос в том, как это дебажить, и чего бы накостылять в юните systemd, чтобы обойти эту проблему? Городить костыли в юните с перезапуском последнее дело, но если не разберусь,что за НЕХ, придётся.

 , , ,

Twissel ()

Не могу найти ошибку в конфигурации NGINX

Приветствую. Прошу вашей помощи в исправлении допущенной ошибки. При использовании данного конфигурационного файла, NGINX пытается найти несуществующий php сценарий. (В логе ниже генеруется двойной путь к файлу)

2019/03/01 09:07:02 [error] 4302#4302: *1 "/usr/share/webapps/phpMyAdmin/phpMyAdmin/index.php" is not found (2: No such file or directory), client: ::1, server: deimos.localdomain, request: "GET /phpMyAdmin/ HTTP/1.1", host: "deimos.localdomain"

Ссылка на конфигурацию: https://pastebin.com/VetiUtxj

 , ,

RRR1993 ()

Доступ к GPIO с веба (nginx+php-fpm)

Приветствую.

Есть скрипт, включающий свет в комнате. Только не ржите.

#!/usr/bin/python  
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.LOW)

Все работает норм. Как под рутом, так и в консоли под другим юзером (pi на Raspbian, если точнее).

Теперь он должен выполняться с ПоХаПе через функцию system или exec или чо-то там pass - не суть важно.

<?php
system("python /home/pi/wattmeter/room_on.py");
?>

с консоли работает. С веба нет. Подозреваю потому что php-fpm работает под юзером www-data, а этот юзер не имеет права в GPIO.

Чем это можно пофиксить?

Заранее спасибо!

 ,

windows10 ()

Настройка nginx + php-fpm

ДОбрый день. У меня вопрос по настройке nginx. После установки добавляю один сайт, но при перезапуске nginx не запускается. systemctl status nginx пишет

[root@ds121 ~]# systemctl status nginx
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2019-02-13 13:58:54 MSK; 9s ago
     Docs: http://nginx.org/en/docs/
  Process: 9094 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

 systemd[1]: Starting nginx - high performance web server...
 nginx[9094]: nginx: [emerg] open() "/home/www/site.ru/log/site.ru_access" failed (13: Permission denied)
 systemd[1]: nginx.service: control process exited, code=exited status=1
 systemd[1]: Failed to start nginx - high performance web server.
 systemd[1]: Unit nginx.service entered failed state.
 systemd[1]: nginx.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

Здесь я подумал что проблема с правами, пробовал поставить права только на папку www 0777 nginx:nginx, пробовал на весь путь, но ничего не помогает. Что ещё можно сделать?

site.conf

server {
	listen 185.25.200.98:80;
    server_name site.ru;
	root /home/www/site/www;
	access_log /home/www/site.ru/log/site.ru_access;
	error_log /home/www/site.ru/log/site.ru_error;
	index index.php index.html index.htm;
	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/opt/remi/php56/root/var/run/php-fpm/www33.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		fastcgi_read_timeout 300;
    }
}

 ,

dsfgjkhs ()

nginx отдельный ip для сайта. php обрабатывает с другого хоста

Сам косяк... Сейчас заведу и вернусь

 , , , ,

nixbeast ()