Как установить Php-Fpm в Linux
PHP-FPM - это разновидность SAPI для PHP. Чтобы понять, что это такое, стоит рассказать о понятии SAPI.
SAPI, он же Server API. В php есть несколько таких API для разных вариантов его работы:
- CLI SAPI - в качестве консольной команды `php` для запуска наших кронов и других cli-программ (Command Line Interface)
- apxs2 SAPI - в качестве модуля к apache2
- CGI SAPI - в качестве запускаемого на каждом запросе CGI (сейчас так почти никто не делает)
- FPM SAPI - Fast Process Manager, написанный для PHP разработчиками из комании Badoo и теперь поддерживаемый сообществом
Работа с FPM отличается от работы с Apache в первую очередь тем, что FPM - это только PHP. Это не веб-сервер, не что-то умное. Это наоборот - максимально простой, легкий и быстрый менеджер процессов для PHP. В отличие от апача, он даже не использует http-протокол, а работает со специальным fastcgi-протоколом. В первую очередь FPM быстрее обрабатывает запросы благодаря его легковесности и простоте.
Во вторую очередь, FPM действительно умный менеджер процессов. Он контролирует количество работающих PHP-процессов, частоту их перезапуска для борьбы с утечками памяти (да, модули php как и всегда текут) и прочие простые вещи, необходимые для контроля сервера.
Нужно помнить, что независимо от того, какое SAPI вы используете, будь то модуль Apache, CGI или PHP-FPM - это не отнимает ни каких особенностей php. А первая его особенность:
- Один процесс одновременно обрабатывает один запрос. Это абсолютно так же свойственно для PHP-FPM, как и для Apache.
- Количество процессов определяет, сколько одновременно может "висеть" запросов в обработке.
- Точно также, как и Apache, FPM подвержен DoS-атакам путем "длительных запросов". Допустим, у Вас на сервере работает не более 50-ти процессов PHP-FPM, а это значит, что если 50 пользователей одновременно начнут делать upload файла (пусть даже небольшого, но главное, чтобы они делали это медленно) - пятьдесят первый пользователь получит ошибку 504, т.к. FPM не возьмет его запрос на обработку, пока не разберется с теми, что у него уже есть.
Подписывайтесь на телеграм канал @upkitai
Nginx использует PHP-FPM, и для удобства мы используем PPA Ондрея Сьюри, поэтому мы можем установить несколько версий PHP.
$ sudo apt install libapache2-mod-fcgid $ sudo apt install software-properties-common $ sudo add-apt-repository ppa:ondrej/php && sudo apt update $ sudo apt install -y php7.4 php7.4-fpm php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-xml php7.4-xmlrpc php7.4-fileinfo php7.4-imagick php-pear $ sudo service php7.4-fpm start
Проверьте, работает ли PHP с помощью Netstat:
$ netstat -pl | grep php
Все в порядке, если результат будет похож на текст ниже:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) unix 2 [ ACC ] STREAM LISTENING 30323 - /run/php/php7.4-fpm.sock
Откройте файл конфигурации
$ vi /etc/nginx/nginx.conf
Раскомментируйте следующие строки.
keepalive_timeout 2;server_tokens off;
Сохраните файл конфигурации.
$ vi sites-available/default
Добавьте или измените эту строку:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }
Сохраните его и выйдите. Протестируйте конфигурацию nginx и убедитесь, что нет ошибок
$ sudo nginx -t
затем перезапустите службу
$ sudo systemctl reload nginx
Если материал понравился Вам и оказался для Вас полезным, поделитесь им со своими друзьями!
- Невозможно создать круговой процесс, результатом которого станет исключительно превращение теплоты, которое получено от нагревателя, в работу.
- В одном километре содержится тысяча метров. 1 км = 1000 м
- Онлайн калькулятор преобразует символы в их цифровые коды.