Linux apache php fpm

How to Install Apache with PHP-FPM on Ubuntu 22.04

Apache and PHP-FPM are both widely used in web development to serve dynamic content. While Apache is the most popular web server used today, PHP-FPM is a FastCGI process manager that provides a faster and more efficient way to process PHP requests. Combining the two can significantly improve the performance of a website.

In this article, we will provide a step-by-step guide on how to install Apache with PHP-FPM on Ubuntu 22.04.

Step 1: Update your system

Before installing any new software, you should update your system to ensure that all packages are up to date. You can do this by running the following command in the terminal:

sudo apt update && sudo apt upgrade 

Step 2: Install Apache

To install Apache on Ubuntu 22.04, run the following command in the terminal:

Once the installation is complete, you can start the Apache service by running the following command:

sudo systemctl start apache2 

You can also enable Apache to start at boot time by running the following command:

sudo systemctl enable apache2 

Step 3: Install PHP-FPM

The default repositories may not contain the latest PHP version packages. So we always prefer to use ondrej/php PPA for installing PHP that contains most of the versions.

    To configure PPA, run the following commands:

sudo apt install python-software-properties sudo add-apt-repository ppa:ondrej/php 
sudo apt install php8.2 php8.2-fpm 
sudo systemctl start php8.2-fpm 
sudo systemctl enable php8.2-fpm 

Step 4: Configure Apache to use PHP-FPM

  1. To configure Apache to use PHP-FPM, you need to enable the “proxy_fcgi” and “proxy” modules. You can do this by running the following command:
sudo a2enmod proxy_fcgi proxy 
sudo nano /etc/apache2/sites-available/example.com.conf 
sudo a2ensite example.com.conf 
sudo systemctl reload apache2 

Step 5: Test the configuration

To test the Apache with PHP-FPM configuration, create a new PHP file in the document root directory of your website:

sudo nano /var/www/html/test.php 

Add the following lines to the file:

Save the file and exit the text editor. Then, open your web browser and navigate to “http://example.com/test.php”. If everything is configured correctly, you should see the PHP information page.

Читайте также:  Booting in linux operating system

How to Setup Apache with PHP-FPM on Ubuntu 22.04

Conclusion

Installing Apache with PHP-FPM on Ubuntu 22.04 can enhance website performance and overall user experience. Apache is a widely used web server, while PHP-FPM is a FastCGI process manager that enables efficient processing of PHP requests. Together, they provide a powerful combination that can optimize website speed and performance. By following the step-by-step guide in this article, you can easily install Apache with PHP-FPM on Ubuntu 22.04 and take advantage of its benefits.

Источник

Настройка Apache HTTP с MPM Event и PHP-FPM в Ubuntu 18.04

Настройка Apache HTTP с MPM Event и PHP-FPM в Ubuntu 18.04

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

Apache HTTP поставляется с тремя различными MPM:

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

Модуль MPM Event​​​ — это быстрый мультипроцессный модуль, доступный на веб-сервере Apache HTTP.

Читайте также:  Linux binary file diff

PHP-FPM — диспетчер процессов FastCGI для PHP. Протокол FastCGI основан на интерфейсе стандарта CGI (интерфейс общего шлюза), протоколе, который находится между приложениями и веб-серверами, например Apache HTTP. Это позволяет разработчикам писать приложения независимо от поведения веб-серверов. Программы запускают свои процессы независимо и передают свой продукт на веб-сервер посредством этого протокола. Каждое новое подключение, которое нуждается в обработке приложением, создаст новый процесс.

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

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

Предварительные требования

Для прохождения этого обучающего руководства вам потребуется следующее:

  • Один сервер Ubuntu 18.04, настроенный в соответствии с руководством по начальной настройке сервера Ubuntu 18.04, включая пользователя non-root user с привилегиями sudo и брандмауэр.
  • Стек LAMP, установленный на вашем сервере в соответствии с указаниями руководства Установка Linux, Apache, MySQL, PHP (стека LAMP) на Ubuntu 18.04.

Шаг 1 — Изменение мультипроцессного модуля

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

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

Вначале вы остановите службу Apache HTTP:

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

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

Теперь активируйте модуль MPM Event:

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

Шаг 2 — Настройка Apache HTTP для использования диспетчера процессов FastCGI

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

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

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

Читайте также:  Windows usb drivers in linux

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

Установите эту библиотеку:

Вы установили php-fpm и libapache2-mod-fcgid , но они еще не активированы.

Вначале активируйте модуль php-fpm с помощью следующей команды:

Затем активируйте модуль proxy Apache HTTP:

Теперь активируйте модуль proxy FastCGI в Apache HTTP:

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

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

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

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

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

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

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

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

Вывод будет выглядеть следующим образом:

Output
mpm_event_module (shared)

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

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

Output
proxy_module (shared) proxy_fcgi_module (shared)

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

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

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

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

Теперь откройте URL-адрес вашего сервера и добавьте info.php в конец следующим образом: http:// your_domain /info.php .

Запись API сервера будет FPM/FastCGI​​​.

Экран PHP, запись API сервера FPM/FastCGI​​

Удалите файл info.php после этой проверки, чтобы в общем доступе не отображалась никакая информация о сервере:

Вы проверили рабочий статус модуля MPM, модули, обрабатывающие FastCGI, а также обработку кода PHP.

Заключение

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Источник

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