Apache php fpm conf

How to Install Apache with PHP-FPM on Ubuntu 20.04

PHP FPM (FastCGI Process Manager) is an alternative implementation of PHP FastCGI. It provides some additional features like Adaptive process spawning which is useful for sites. This tutorial will help you to install Apache with PHP-FPM/FastCGI on Ubuntu 20.04 system. In this tutorial, we are using PHP 7.4 and configure with Apache using PHP-FPM and FastCGI.

You can also visit the previous tutorial to configure Apache with multiple PHP versions using PHP-FPM/FastCGI on Ubuntu systems.

Step 1 – Installing Apache

Apache web server debian packages are available under the default repositories. Login to your Ubuntu system with sudo privileges account. Open a terminal and execute the following commands:

sudo apt update sudo apt install apache2 libapache2-mod-fcgid

The above commands will install Apache and FastCGI module to your server.

Step 2 – Install PHP with FPM

Next, install PHP and PHP-FPM on your Ubuntu system. For this tutorial, we choose PHP 7.4 to install using

For the PHP installation we recommend to use ppa:ondrej/php PPA. Execute below couple of commands to add the PPA to your system.

sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php

Then install PHP 7.4 (or required version) the latest version available on the day of writing this tutorial. Simply execute follows commands for the installation of PHP and PHP-FPM packages.

sudo apt update sudo apt install php7.4 php7.4-fpm

Note:- When you are using PHP-FPM. All the PHP modules configurations are residing under /etc/php/7.4/fpm directory. You can read more about enable/disable PHP modules.

After installing the packages php7.4-fpm service will automatically be started. To make sure, type:

sudo systemctl status php7.4-fpm ● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-09 04:41:44 UTC; 19s ago Docs: man:php-fpm7.4(8) Process: 375077 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=exited> Main PID: 375073 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2283) Memory: 9.3M CGroup: /system.slice/php7.4-fpm.service ├─375073 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─375075 php-fpm: pool www └─375076 php-fpm: pool www May 09 04:41:43 tecadmin systemd[1]: Starting The PHP 7.4 FastCGI Process Manager. May 09 04:41:44 tecadmin systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

Step 3 – Apache Configuration

Now, You need to enable some of the Apache modules required for the FastCGI confiugration. You can enable the requird module by running command:

sudo a2enmod actions fcgid alias proxy_fcgi

Then configure Apache Virtual Host to run with FPM/FastCGI. For this tutorial, we use default VirtualHost. Edit VirtualHost host configuration file in a text editor. You can also create a new configuration as per your choice.

sudo vim /etc/apache2/sites-available/000-default.conf

Update the configuration as followings.

Читайте также:  Java 8 update 231

Источник

Настройка Apache с помощью MPM Event и PHP-FPM

Apache_mpm_php_fpm

Apache HTTP сервер развивался много лет и сейчас может работать в разных средах и решать разные задачи. Одна из важных проблем, которую Apache HTTP (как и любой другой веб-сервер) должен решить – это обработка процессов для обслуживания запросов протокола http. Эта процедура подразумевает открытие сокета, обслуживание запроса, поддержку соединения в течение определенного времени, обработку новых событий, идущих через это соединение, и возврат контента, созданного программой, которая написана на определенном языке (например, PHP, Perl или Python). Эти задачи выполняет модуль MPM (модуль мультипроцессовой обработки).

Apache HTTP поставляется с тремя MPM-модулями:

  • Pre-fork: создает новый процесс для каждого входящего на сервер соединения. Каждый процесс изолирован от других, поэтому память не распределяется между ними, даже если они в какой-то момент обрабатывают идентичные вызовы. Это безопасный способ запуска приложений, связанных с библиотеками, которые не поддерживают многопоточность (обычно это старые приложения или библиотеки).
  • Worker: создает родительский процесс, который отвечает за запуск пула дочерних процессов; некоторые из них прослушивают новые входящие соединения, а остальные обслуживают запрошенный контент. Каждый процесс является многопоточным, то есть может обрабатывать несколько запросов одновременно. Этот метод обработки соединений оптимизирует использование ресурсов, сохраняя при этом стабильность. В пуле доступных процессов часто есть свободные потоки, готовые немедленно обслужить новые соединения.
  • Event: основанный на worker, этот MPM оптимизирует то, как родительский процесс планирует задачи для дочерних процессов и связанных с ними потоков. По умолчанию соединение остается открытым в течение 5 секунд и закрывается, если нового события не поступает; это значение по умолчанию для директивы keep-alive, которое сохраняет связанный с ней поток. Event MPM позволяет процессу управлять потоками, и поэтому некоторые потоки могут свободно обрабатывать новые входящие соединения, в то время как другие привязаны к действующим соединениям. Перераспределение назначенных задач по потокам оптимизирует использование ресурсов и повышает производительность.
    MPM Event – это модуль быстрой многопроцессорной обработки, доступный на веб-сервере Apache HTTP.
Читайте также:  Как подключить svg css

PHP-FPM – менеджер процессов FastCGI для PHP. Протокол FastCGI основан на Common Gateway Interface (CGI), протоколе, который располагается между приложениями и веб-серверами. Это позволяет разработчикам писать приложения, независящие от поведения веб-серверов. Программы запускают свои процессы независимо и по протоколу CGI передают свой результат на веб-сервер. Каждое новое соединение, которое требует обработки приложением, создает новый процесс.

Комбинируя MPM Event с менеджером процессов PHP FastCGI (PHP-FPM), веб-сайт сможет загружаться быстрее и обрабатывать больше одновременных подключений, используя при этом меньшее количество ресурсов.

В этом руководстве вы узнаете, как улучшить производительность стека LAMP, заменив модуль pre-fork (по умолчанию) на event и используя менеджер процессов PHP-FPM для обработки кода PHP вместо классического mod_php в Apache HTTP.

Требования

  • Сервер Ubuntu 18.04. Настроить сервер нужно согласно этим инструкциям, включая сервер sudo и брандмауэр.
  • Предварительно установленный стек LAMP. Установить его вам поможет этот мануал.

1: Настройка MPM-модуля

Ubuntu наследует сценарии включения и отключения модулей Apache от своего родительского дистрибутива Debian. На начальном этапе мы воспользуемся этим набором инструментов, чтобы отключить модуль Pre-fork и включить модуль Event.

Сейчас вы остановите сервер Apache HTTP, отключите модуль PHP 7.2, связанный с модулем Pre-fork, а затем отключите Pre-fork, чтобы сразу после этого включить модуль Event.

sudo systemctl stop apache2

Теперь вы можете отключить связанный с модулем Pre-fork модуль PHP 7.2:

Затем отключите сам MPM-модуль Pre-fork:

sudo a2dismod mpm_prefork

Готово, мы переключили MPM с pre-fork на event и удалили соединение между PHP и Apache HTTP. На следующем этапе мы установим модуль php-fpm, а также связанные с ним библиотеки и прокси-модули, а затем настроим Apache HTTP так, чтобы он снова мог взаимодействовать с PHP.

2: Настройка Apache для поддержки FastCGI

Только что мы изменили способ обработки соединений Apache HTTP, переключившись с Pre-fork MPM на Event. Однако при этом мы также отключили модуль PHP, который связывал Apache со всеми программами, работающими на PHP.

В этом разделе мы установим процессор PHP-FPM, чтобы Apache снова смог обслуживать программы PHP. Также мы установим зависимые библиотеки и включим модули, чтобы Apache и PHP могли взаимодействовать быстрее, чем раньше.

Сначала установите php-fpm. Следующая команда установит пакет PHP-FPM и автоматически включит сервис php7.2-fpm, интегрированный с systemd (поэтому сервис будет запускаться во время загрузки сервера):

Для связи Apache HTTP и PHP нужна библиотека, обеспечивающая их взаимодействие. Теперь давайте установим библиотеку libapache2-mod-fcgid, которая может служить интерфейсом между программами и веб-серверами. Эта связь будет происходить через UNIX-сокет. Установите ее:

Читайте также:  Wifika ru nastroyka routera html

sudo apt install libapache2-mod-fcgid

Вы установили php-fpm и libapache2-mod-fcgid, но ни один из этих компонентов еще не включен.

Сначала мы включим модуль php-fpm:

Затем давайте модуль Apache HTTP под названием proxy:

А теперь можно включить FastCGI модуль proxy:

Примечание: Вы можете прочитать конфигурацию взаимодействия между программами PHP и Apache через UNIX сокет с помощью команды:

Теперь все готово, мы можем запустить Apache HTTP. Сначала выполните проверку конфигурации:

sudo apachectl configtest

Вы должны получить такой вывод:

После этого можно приступать к перезапуску Apache HTTP – сервер автоматически запустился при установке FastCGI библиотеки libapache2-mod-fcgid:

sudo systemctl restart apache2

Итак, мы установили модуль php-fpm, настроили Apache для его поддержки, включили необходимые модули для работы протокола FastCGI и запустили соответствующие сервисы.

Теперь в Apache включен MPM-модуль Event, а PHP-FPM настроен и запущен. Пришло время убедиться, что все работает так, как мы того ожидаем.

3: Проверка конфигурации

Чтобы убедиться, что изменения конфигурации были внесены правильно, мы проведем пару тестов. Первый тест проверит, какой MPM-модуль использует Apache HTTP. Второй убедится, что PHP использует FPM.

Проверьте HTTP-сервер Apache, выполнив следующую команду:

sudo apachectl -M | grep ‘mpm’

То же самое можно повторить для модуля proxy и FastCGI:

sudo apachectl -M | grep ‘proxy’

Результат будет выглядеть так:

proxy_module (shared)
proxy_fcgi_module (shared)

Если вы хотите увидеть список всех модулей, удалите вторую часть команды, которая идет после флага -M.

Пришло время проверить, использует ли PHP менеджер процессов FastCGI. Для этого мы напишем небольшой PHP-скрипт, который выведет на экран всю информацию, связанную с PHP.

Выполните следующую команду, чтобы создать файл с таким именем:

sudo nano /var/www/your_domain/info.php

Добавьте в файл следующую строку:

Теперь откройте URL-адрес вашего сервера и добавьте секцию info.php в конец адреса, например:

В строке Server API будет FPM/FastCGI.

Обязательно удалите файл info.php после этой проверки, иначе конфиденциальная информация о вашем сервере будет находиться в публичном доступе.

sudo rm /var/www/yourdomain.com/info.php

Итак, мы проверили состояние MPM, модулей FastCGI и обработки кода PHP.

Заключение

В этом мануале вы научились оптимизировать базовый стек LAMP, благодаря чему увеличилось количество поддерживаемых подключений для обработки новых HTTP-процессов Apache. Теперь PHP-FPM будет более эффективно обрабатывать PHP-код, а общее использование ресурсов улучшится.

Читайте официальную документацию по HTTP-серверу Apache для получения дополнительной информации о других модулях и связанных проектах.

Источник

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