Менеджер процессов FastCGI (FPM) представляет собой альтернативу традиционной конфигурации FastCGI, обладающую рядом усовершенствований. Он особенно полезен для сайтов с высокой посещаемостью. В данном руководстве вы узнаете, как установить и настроить PHP-FPM в связке с Nginx на системе Debian 10 Buster Linux.
Перед началом установки убедитесь, что ваша система обновлена. Вы можете сделать это с помощью команды:
sudo apt update && sudo apt upgrade
После обновления установим необходимые пакеты. Выполните следующую команду для установки Nginx и PHP-FPM:
sudo apt install nginx php-fpm
После установки вам нужно будет настроить PHP-FPM. Откройте конфигурационный файл PHP-FPM:
sudo nano /etc/php/7.3/fpm/pool.d/www.conf
Здесь вы можете настроить параметры, такие как пользователь и группа, а также максимальное количество процессов. Рекомендуется установить параметр listen на 127.0.0.1:9000, чтобы Nginx мог взаимодействовать с PHP-FPM.
Теперь необходимо настроить Nginx для работы с PHP. Откройте файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/default
Добавьте следующий блок кода для обработки PHP-файлов:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
Не забудьте перезапустить Nginx и PHP-FPM для применения изменений:
sudo systemctl restart nginx
sudo systemctl restart php7.3-fpm
Теперь вы можете создать простой PHP-файл для тестирования. Создайте файл info.php в директории /var/www/html:
<?php phpinfo(); ?>
Перейдите по адресу http://ваш_адрес/info.php в браузере, чтобы убедиться, что установка прошла успешно. Убедитесь, что вы удалили этот файл после проверки, так как он может содержать конфиденциальную информацию о вашем сервере.
В этом руководстве мы рассмотрели базовую установку Nginx и PHP-FPM на Debian Вы можете дополнительно настроить конфигурацию под свои нужды, а также установить дополнительные модули PHP, если это необходимо.
Также стоит отметить, что для повышения безопасности вы можете изменить конфигурацию PHP, отключив некоторые функции, такие как expose_php, что затруднит определение используемой версии PHP злоумышленниками. Это можно сделать в файле /etc/php/7.3/fpm/php.ini, изменив:
expose_php = Off
Кроме того, не забудьте установить брандмауэр для ограничения доступа к вашему серверу. Вы можете использовать ufw для управления правилами брандмауэра. Например, чтобы разрешить доступ к Nginx, выполните:
sudo ufw allow 'Nginx Full'
После этого вы можете включить брандмауэр:
sudo ufw enable
С помощью этих дополнительных шагов вы можете улучшить безопасность и производительность вашего сервера. Надеемся, это руководство оказалось полезным для вас!
Содержание статьи
Требования
Необходимо иметь доступ по SSH к системе Debian 10 с правами Sudo. Убедитесь, что у вас установлен SSH-клиент, такой как OpenSSH, и вы знаете IP-адрес или доменное имя удалённого сервера. Также проверьте, что вы обладаете необходимыми учетными данными (имя пользователя и пароль или SSH-ключ). Рекомендуется использовать ключи SSH для повышения безопасности соединения. Если вы подключаетесь впервые, может потребоваться подтвердить подлинность сервера, добавив его ключ в файл known_hosts.
Установка Nginx
Пакеты Nginx можно найти в стандартных репозиториях. Подключитесь по SSH к вашей системе Debian 10 с учетной записью с правами sudo и установите веб-сервер Nginx из официального репозитория.
sudo apt update && sudo apt install nginx
После установки вы можете запустить Nginx с помощью команды:
sudo systemctl start nginx
Чтобы убедиться, что Nginx работает, откройте браузер и перейдите по адресу http://your_server_ip. Вы должны увидеть страницу приветствия Nginx.
Для автоматического запуска Nginx при загрузке системы выполните следующую команду:
sudo systemctl enable nginx
Также рекомендуется проверить статус сервиса, чтобы убедиться, что он запущен и работает корректно:
sudo systemctl status nginx
Если вам потребуется остановить или перезапустить Nginx, используйте следующие команды:
sudo systemctl stop nginx
sudo systemctl restart nginx
Наконец, вы можете настроить файлы конфигурации Nginx, которые находятся в директории /etc/nginx/sites-available/, и создать символические ссылки в /etc/nginx/sites-enabled/ для активации новых конфигураций.
Установка PHP
Рекомендуется использовать PPA от Ондрея Суры для установки PHP, так как он предлагает последние версии для Debian. Выполните следующие команды для добавления PPA в вашу систему.
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - && echo "deb https://packages.sury.org/php/ buster main" | sudo tee /etc/apt/sources.list.d/php.list
После этого установите самую свежую версию PHP, доступную на момент написания данного руководства. Для установки пакетов PHP и PHP-FPM выполните следующие команды.
sudo apt update && sudo apt install php php-fpm
После завершения установки указанные пакеты, служба php7.3-fpm запустится автоматически. Убедитесь в этом, введя следующую команду в терминале.
sudo systemctl status php7.3-fpm
Если служба не запущена, вы можете ее активировать с помощью команды:
sudo systemctl start php7.3-fpm
Кроме того, для автоматического запуска службы при загрузке системы выполните:
sudo systemctl enable php7.3-fpm
Для установки дополнительных расширений PHP, таких как MySQL, можно использовать следующую команду:
sudo apt install php-mysql
Также, чтобы проверить установленную версию PHP, выполните:
php -v
Это поможет вам убедиться, что вы работаете с нужной версией. Для управления конфигурацией PHP-FPM, конфигурационные файлы находятся в директории:
/etc/php/7.3/fpm/
Не забудьте перезапустить PHP-FPM после внесения изменений в конфигурацию:
sudo systemctl restart php7.3-fpm
Следите за журналами ошибок для выявления возможных проблем с помощью команды:
sudo journalctl -u php7.3-fpm
Теперь PHP готов к использованию на вашем сервере, и вы можете приступать к разработке веб-приложений!
Конфигурация Nginx
Теперь создадим виртуальный хост Nginx для работы с FPM/FastCGI. В данном руководстве используется стандартный VirtualHost. Отредактируйте файл конфигурации виртуального хоста в текстовом редакторе. Вы можете создать новый виртуальный хост в соответствии с вашими потребностями, поэтому убедитесь, что любой новый виртуальный хост активирован.
sudo vim /etc/nginx/sites-available/example.com
Примените приведённую ниже базовую конфигурацию виртуального хоста Nginx с настройками PHP FPM. Обновите конфигурацию следующим образом.
Ниже представлена примерная конфигурация:
server {
listen 80;
server_name example.com www.example.com;phpCopy coderoot /var/www/example.com/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
После редактирования сохраните файл и создайте символическую ссылку на него в каталоге sites-enabled, чтобы активировать виртуальный хост:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Не забудьте проверить конфигурацию Nginx на наличие ошибок:
sudo nginx -t
Если проверка пройдёт успешно, перезагрузите Nginx, чтобы применить изменения:
sudo systemctl reload nginx
Теперь ваш виртуальный хост должен работать корректно. Чтобы проверить его работоспособность, создайте файл info.php в директории /var/www/example.com/public со следующим содержимым:
Перейдите по адресу http://example.com/info.php в вашем веб-браузере, чтобы убедиться, что PHP правильно работает с Nginx.
Устранение распространенных ошибок
- Ошибка 502 Bad Gateway:
- Проверьте, запущен ли процесс интерпретатора.
- Убедитесь в правильной настройке сокета или порта, к которому идет обращение.
- Перезапустите веб-сервер и интерпретатор для обновления конфигурации.
- Ошибка 404 Not Found:
- Проверьте правильность указанного пути к файлу.
- Убедитесь, что файл действительно существует на сервере.
- Проверьте настройки маршрутизации в конфигурации.
- Ошибка 403 Forbidden:
- Проверьте права доступа к файлам и папкам.
- Убедитесь, что настройки конфигурации не блокируют доступ.
- Посмотрите логи на наличие дополнительных указаний по причине блокировки.
- Проблемы с производительностью:
- Проанализируйте загруженность сервера и оптимизируйте ресурсы.
- Используйте кэширование для уменьшения нагрузки.
- Проверьте, нет ли ошибок в коде, которые могут вызывать задержки.
Следуя данным рекомендациям, можно быстро и эффективно выявить и устранить большинство проблем, возникающих в процессе эксплуатации системы.
Оптимизация производительности Nginx и PHP-FPM
Для достижения лучших результатов стоит обратить внимание на следующие аспекты:
- Настройка кэширования для статических ресурсов.
- Оптимизация параметров соединений и таймаутов.
- Использование сжатия для уменьшения объема передаваемых данных.
- Увеличение количества процессов для обработки запросов.
Кэширование статического контента позволяет сократить время ответа, так как данные не будут каждый раз запрашиваться заново. Рекомендуется использовать такие механизмы, как proxy_cache и fastcgi_cache, чтобы эффективно обрабатывать повторные запросы.
Оптимизация соединений включает в себя настройку параметров keepalive, что позволяет сократить накладные расходы на установление новых соединений. Установка адекватных таймаутов также поможет предотвратить зависание серверов в ожидании ответа.
Сжатие данных, например, с помощью Gzip, уменьшает размер передаваемых файлов, что значительно ускоряет загрузку страниц. Важно убедиться, что сжатие включено для всех поддерживаемых типов файлов.
Увеличение числа процессов для обработки запросов и установка соответствующих лимитов помогут лучше справляться с высокой нагрузкой. Необходимо правильно настроить параметры worker_processes и pm.max_children, чтобы обеспечить сбалансированную работу системы под нагрузкой.
Эти шаги помогут создать высокопроизводительную и надежную серверную среду, способную эффективно обрабатывать большое количество запросов одновременно.

