Linux restart php fpm

Как перезапустить php-fpm?

Мне нужно перезагрузить мой php.ini, и в диалоговом окне справки нет ничего о перезапуске.

15 ответов

Примечание : prepend sudo , если не root

Сценарии SysV Init напрямую:

Использование сценария оболочки службы

Использование Upstart (например, ubuntu):

Использование systemd (более новые серверы):

Или любой эквивалент в вашей системе.

Для Mac OS X это то, что я делаю:

Сделайте сценарий /usr /local /etc /php /fpm-restart :

убедитесь, что /usr /local /sbin находится в $ PATH

, то просто вызовите его с терминала fpm-restart и BOOM !!

Обычно, service php5-fpm restart будет работать нормально, в актуальном дистрибутиве.

Но иногда он терпит неудачу, сообщая вам о перезагрузке : Неизвестный экземпляр: (или такой).

Теперь, если вам не нравится перезагружать ваш сервер, просто запустите процессы и начните новый (отредактированный здесь):

Это должно работать:

Для Mac OSX для меня работала перезагрузка службы поддержки php56 .

php-fpm перезапустится, если вы отправляете сигнал USR2 в основной процесс:

Поэтому нам просто нужно указать php-fpm для записи своего pid где-нибудь. В этом примере я предположим, что вы хотите сохранить его в /etc/private/php-fpm.pid , а php-fpm работает как пользователь _php. Сначала добавьте эту строку в файл конфигурации:

Затем создайте файл /etc/php-fpm.pid и убедитесь, что у php-fpm есть разрешение на его изменение:

Теперь, в следующий раз, когда начнется php-fpm, вы сможете получить его pid и перезапустить его следующим образом:

Или вы можете объединить их в одну команду:

У меня возникла проблема с перезапуском php7-fpm, потому что я не знал, как именно была названа услуга. Эта функция дала мне ответ:

Служба php7-fpm в моем Ubuntu была вызвана php7.0-fpm , поэтому я сделал:

служба php7.0-fpm restart

Для меня я только что обновил apt, и перезапуск службы не работал. Мне пришлось убить существующие процессы до того, как они сработали, используя: killall php5-fpm

Источник

How to reload/restart php7.0-fpm / php5.0-fpm service

How do I edit php.ini or www.conf file?

To edit php.ini type:
$ sudo vi /etc/php5/php.ini
OR
$ sudo vi /etc/php/7.0/fpm/php.ini
To edit php-fpm config file:
$ sudo vi /etc/php/7.0/fpm/php-fpm.conf
$ sudo vi /etc/php/7.0/fpm/pool.d/www.conf
Once edited, save and close the file. Now you need to run command as per your Linux/Unix distro version after editing the file.

Start php-fpm on CentOS/RHEL 7

$ sudo systemctl start php-fpm

Stop php-fpm CentOS/RHEL 7

$ sudo systemctl stop php-fpm

Reload php-fpm CentOS/RHEL 7

$ sudo systemctl reload php-fpm

Restart php-fpm CentOS/RHEL 7

$ sudo systemctl restart php-fpm

Start/stop/restart/reload php-fpm on CentOS/RHEL 6.x or older

Type the following command:
$ sudo service php-fpm start #
$ sudo service php-fpm stop #
$ sudo service php-fpm restart #
$ sudo service php-fpm reload #

How to start/stop/restart/reload php5-fpm (php version 5.x) on Ubuntu/Debian Linux

$ sudo service php5-fpm start
$ sudo service php5-fpm stop
$ sudo service php5-fpm restart #
$ sudo service php5-fpm reload #
OR if you are using systemd based distro such as Ubuntu Linux 16.04+ LTS or Debian Linux 8.x+:
$ sudo systemctl start php7.0-fpm.service
$ sudo systemctl stop php5-fpm.service
$ sudo systemctl restart php5-fpm.service #
$ sudo systemctl reload php5-fpm.service #

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard
Читайте также:  Windows 10 сетевое подключение без пароля

Join Patreon

How to start/stop/restart/reload php7.0-fpm (php version 7.x) on Ubuntu/Debian Linux

$ sudo service php7.0-fpmstart
$ sudo service php7.0-fpm stop
$ sudo service php7.0-fpm restart #
$ sudo service php7.0-fpm reload #
OR if you are using systemd based distro such as Ubuntu Linux 16.04+ LTS or Debian Linux 8.x+:
$ sudo systemctl start php7.0-fpm.service
$ sudo systemctl stop php7.0-fpm.service
$ sudo systemctl restart php7.0-fpm.service #
$ sudo systemctl reload php7.0-fpm.service #

How do you restart/reload php-fpm on Alpine Linux ?

The syntax is:
# /etc/init.d/php-fpm start
# /etc/init.d/php-fpm stop
# /etc/init.d/php-fpm restart #

How do you restart/reload php-fpm on FreeBSD unix ?

The syntax is
# /usr/local/etc/rc.d/php-fpm start
# /usr/local/etc/rc.d/php-fpm stop
# /usr/local/etc/rc.d/php-fpm reload #
# /usr/local/etc/rc.d/php-fpm restart #
OR use the service command:
# service php-fpm start
# service php-fpm stop
# service php-fpm restart
# service php-fpm reload

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

Linux / Unix: Restart PHP Service Command

Restart PHP by restarting your web-server

Type the following command as per your web-server.

Restart Apache for php service

If you are using Apache web server type the following command to restart the php:
# /etc/init.d/apache2 restart
OR
# apache2ctl restart

Restart Nginx for php service

If you are using Nginx web-server type the following command to restart nginx:
# /etc/init.d/nginx restart
OR
# service nginx restart
OR
# nginx -s reload

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Restart Lighttpd for php service

If you are using Lighttpd web-server type the following command to restart lightpd:
# /etc/init.d/lighttpd restart
OR
# service lighttpd restart

Restart PHP-FAM Fastcgi for PHP service

If you are running php via PHP-FAM fastcgi manager, use any one of the following as per your version of Linux/Unix:
# /etc/init.d/php-fpm restart
OR php 5 fpm:
# /etc/init.d/php5-fpm restart
OR php 7 fpm:
# /etc/init.d/php7.0-fpm restart
OR
# service php-fpm restart
OR
# service php5-fpm restart
OR
# service php7.0-fpm restart
OR
# restart php-fpm
OR
# service php-fpm restart

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

Как вы перезапустите php-fpm?

Мне нужно перезагрузить мой php.ini, и в диалоге помощи нет ничего о его перезапуске.

Примечание : добавьте, sudo если не root

Использование сценариев SysV Init напрямую:

Использование скрипта сервисной обертки

Использование Upstart (например, Ubuntu):

Использование systemd (более новые серверы):

Или любой другой эквивалент в вашей системе.

Для Mac OS X это то, что я делаю:

Сделайте скрипт /usr/local/etc/php/fpm-restart :

убедитесь, что / usr / local / sbin находится в вашем $ PATH

тогда просто вызовите его из терминала fpm-restart и BOOM !!

Как правило, все service php5-fpm restart будет в порядке, на современном распространении.

Но иногда это терпит неудачу, говоря вам restart: Unknown instance: (или тому подобное).

Теперь, если вы не любите перезагружать свой сервер, просто убейте процессы и начните все сначала (отредактировано здесь):

Это должно работать:

Для Mac OSX brew services restart php56 работал для меня.

У меня была проблема с перезапуском php7-fpm, потому что я не знал, как именно была названа служба. Эта функция дала мне ответ:

Служба php7-fpm в моем Ubuntu была вызвана php7.0-fpm , поэтому я сделал:

service php7.0-fpm restart

php-fpm перезапустится, если вы отправите сигнал USR2 основному процессу:

Так что нам просто нужно дать php-fpm команду записать свой pid. В этом примере я предполагаю, что вы хотите сохранить его в /etc/private/php-fpm.pid , а php-fpm работает как пользователь _php. Сначала добавьте эту строку в файл конфигурации:

Затем создайте файл /etc/php-fpm.pid и убедитесь, что php-fpm имеет разрешение на его изменение:

Теперь, когда в следующий раз запустится php-fpm, вы сможете получить его pid и перезапустить его так:

Или вы можете объединить их в одну команду:

Для меня я только что обновился через apt, и перезапуск службы не работал. Мне пришлось убить существующие процессы, прежде чем он работал, используя: killall php5-fpm

Источник

Настройка PHP-FPM

Интерпретатор языка программирования PHP может работать в нескольких режимах. Он может быть интегрирован в веб-сервер в виде специального модуля или использоваться как отдельный сервис php-fpm. Аббревиатура FPM расшифровывается как Fastcgi Process Manager. Это сервис, который запускает несколько процессов, которые могут выполнять PHP скрипты. Процессы могут получить скрипты, которые надо выполнить по TCP или Unix сокетам.

Читайте также:  Установка яндекс браузер астра линукс

Обычно php-fpm используется вместе с веб-сервером Nginx. В этой статье мы рассмотрим как выполняется настройка PHP-FPM для максимально эффективной работы на вашем сервере.

Настройка PHP-FPM

Менеджер процессов PHP-FPM может запускать несколько процессов обработчиков. Обычно для каждого отдельного сайта принято использовать отдельный обработчик, это позволяет распределить нагрузку и отслеживать статистику по каждому сайту. Поэтому есть общий конфигурационный файл php-fpm и конфигурационный файл для каждого обработчика, который обычно называется конфигурационным файлом пула. Обработчик принято называть пулом потому что на самом деле обработкой занимается не один процесс, а целая группа процессов, у каждого из которых есть несколько потоков. Всё это обеспечивает быстрое выполнение скриптов.

1. Установка компонентов

Сервис php-fpm поставляется вместе с интерпретатором php. Установка php-fpm Ubuntu выполняется такой командой:

sudo apt install php-fpm

Кроме того нам понадобится веб-сервер Nginx, потому что php-fpm чаще всего используется вместе с этим веб-сервером:

sudo apt install nginx

2. Конфигурационные файлы

В этой инструкции мы будем рассматривать настройку PHP-FPM на примере Ubuntu. Основной конфигурационный файл находится в такому пути:

Обратите внимание, что это не php.ini файл, а файл настройки именно FPM процессов. Файл php.ini находится в этой же папке:

А вот файлы конфигурации пулов находятся в каталоге /etc/php/7.4/fpm/pool.d/. По умолчанию там находится файл пула по умолчанию www.conf:

Вы можете использовать его в своей конфигурации или копировать для создания новых пулов.

3. Создание пула

Скопируйте файл пула, например losst.conf в папке /etc/php/7.4/fpm/pool.d/ скопируйте в него содержимое файла www.conf. В конце статьи я приведу полностью рабочий конфигурационный файл, но лучше всё же использовать конфигурацию вашей версии PHP:

cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/losst.conf

Теперь откройте этот файл в текстовом редакторе, например в vim:

sudo vi /etc/php/7.4/fpm/pool.d/losst.conf

Первым делом вам нужно выбрать имя пула в квадратных скобках в самой верхней части файла, например, losst, это имя можно использовать в конфигурации с помощью переменной $pool, а ещё оно будет отображаться в менеджере процессов:

Далее надо изменить группу и пользователя, от имени которых будут запускаться процессы пула. Это важно, поскольку у процесса должен быть доступ к файлам PHP, которые надо выполнить. Обычно в Ubuntu для таких целей используется пользователь и группа www-data. От имени этого же пользователя обычно запускается веб-сервер:

Обычно, если вы получаете ошибку permission denied при интерпретации php файлов в php-fpm, означает, что процесс php-fpm запущен от имени не того пользователя или включена строгая политика SELinux.

4. Настройка сокета

Дальше нужно настроить каким образом Nginx или другой веб-сервер будет обращаться к PHP-FPM. Как я уже говорил выше, можно настроить ожидание соединений на TCP порту. Обычно используются порты 9000, 9001, 9002 и так далее. В данном случае надо передать IP адрес на котором следует слушать и порт. Лучше использовать локальный IP адрес 127.0.0.1, чтобы к сервису никто не мог подключится из интернета. Второй вариант — использовать файловый Unix сокет, тогда надо просто передать путь к файлу сокета. В данном примере используется сетевой сокет 127.0.0.1:9000. Вид сокета не имеет значения, но сетевой использовать удобнее:

Если вы используйте файловый сокет, к нему должен быть доступ у веб-сервера, поэтому надо сделать владельцами файла того пользователя и группу, от имени которых запущен веб-сервер, в данном случае www-data и дать им все права на него:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Если сокет сетевой, то в этом нет необходимости. Для сетевого сокета можно дополнительно указать с каких адресов можно к нему подключаться. Например, только от 127.0.0.1:

5. Настройка процессов

С помощью параметра pm можно настроить сколько дочерних процессов будет запускаться для этого пула и когда. Есть три режима работы:

  • dynamic — процессы создаются в зависимости от нагрузки и настроек, если нагрузки нет, всё равно работает определённое количество процессов;
  • ondemand — процессы создаются как только возникает нагрузка;
  • static — количество процессов всегда одинаковое, указанное в настройках.

Режим static не выгоден, потому что вне зависимости от нагрузки потребляется много памяти и процессорного времени на поддержание работы процессов. Более интересны режимы ondemand и dynamic. Давайте будем использовать режим dynamic. Этот режим имеет три настройки:

  • pm.max_children — очень важный параметр, который работает для всех трёх режимов, означает максимально возможное количество дочерних процессов, если значение будет слишком маленьким, то при возрастании нагрузки, лимит исчерпается и ваш сайт начнёт тупить, если слишком большим — исчерпается оперативная память и что-то упадёт;
  • pm.start_servers — указывает сколько процессов запускать при старте сервиса;
  • pm.min_spare_servers — минимальное количество процессов в режиме ожидания (ничего не обрабатывающих), если количество процессов меньше, будет создан ещё один;
  • pm.max_spare_server — максимальное количество процессов в режиме ожидания, если количество процессов будет больше, лишние будут завершены;
Читайте также:  Установка node js npm linux

Для режима static надо указать только pm.max_children. Для режима ondemand кроме pm.max_children надо указать pm.process_idle_timeout этот параметр означает через какой промежуток времени простоя процесс будет завершен.

Давайте разберемся с режимом dynamic. Запускать много дочерних процессов при старте не надо, в большинстве случаев 2-3 будет достаточно:

Минимальное количество процессов в режиме ожидания тоже большое не нужно, это запас, чтобы php-fpm смог быстро обработать новые запросы не тратя время на запуск новых процессов. Однако это значение должно быть не меньше pm.start_servers, иначе ничего не заработает:

Максимальное количество процессов определяет как быстро процессы будут завершаться при падении нагрузки, можно оставить 10 процессов:

Параметр pm.max_children настройте под себя, обычно достаточно 20-30 процессов, но всё зависит от нагрузки и количества оперативной памяти, если памяти мало лучше пожертвовать производительностью и установить меньшее значение:

Почти готово. Но есть ещё одна проблема. Если дочерние процессы работают слишком долго, в них накапливаются утечки памяти, и рано или поздно на сервере память закончится. Чтобы этого избежать можно настроить автоматическое завершение процесса после выполнения определённого количества запросов, например, 1000:

6. Настройка статистики

Для подбора оптимального значения pm.max_children вам может понадобиться посмотреть статистику в реальном времени сколько процессов запущено, сколько из них находится в ожидании, а также какая длина очереди ожидающих выполнения запросов. Для включения вывода статистики просто добавьте такую строчку:

7. Настройка php.ini

Несмотря на то, что есть общий файл php.ini для всех пулов, вы можете менять настройки прямо в файле пула, для этого используются директивы php_admin_value и php_admin_flag. Первая используется для установки строковых значений, а вторая — для флагов. У директив есть альтернативы: php_value и php_flag, они отличаются только тем, что их можно перезаписать с помощью функции ini_set, а значения заданные с помощью директив с приставкой admin перезаписать нельзя.

php_admin_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.losst.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M

Когда все настройки завершены, не забудьте сохранить изменения и перезапустить php-fpm:

sudo systemctl restart php7.4-fpm

8. Настройка веб-сервера

Для того чтобы всё протестировать придётся настроить ещё и веб-сервер. В конфигурационный файл виртуального хоста Nginx надо добавить такие строки:

location /status <
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
>
location

\.php$ <
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) <
return 404;
>
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
>

Первая секция позволяет смотреть статистику работы php-fpm открыв в браузере ссылку /status, которую мы ранее указали в настройках. Вторая секция обрабатывает всё остальные файлы php. Первая строка второй секции разбивает путь к скрипту по регулярному выражению на две части: $fastcgi_script_name и $fastcgi_path. Первая переменная нам понадобится в следующей же строчке, где с помощью условия проверяется существует ли такой файл, и если нет, то возвращается 404.

Дальше надо импортировать файл fastcgi_params, в котором передаются все переменные, которые потом будут доступны в массиве $_SERVER из скрипта. В следующей строчке объявляется ещё один важный параметр, которого нет в fastcgi_params, потому что он использует переменную $fastcgi_script_name, полученную ранее. Именно по нему php-fpm определяет путь к скрипту, который надо выполнить, если его не передать, вы получите пустой экран.

Последняя директива fastcgi_pass указывает как надо передавать данные php-fpm, сюда можно передать путь к файлу сокету, на котором слушает сервис или IP адрес и порт. В данном случае используется ранее настроенный 127.0.0.1:9000. После завершения настройки перезапустите Nginx:

sudo systemctl restart nginx

Теперь вы можете открыть в браузере страницу статистики, как видите всё работает:

Можно ещё создать файл phpinfo.php с текстом в каталоге веб-сервера и посмотреть настройки php, например, memory_limit, заданный в файле конфигурации пула работает:

Настройка веб-сервера может очень сильно отличаться в зависимости от ваших требований. Здесь приведен только общий пример, чтобы проверить работоспособность и верность настройки.

Источник

Оцените статью