Установите PHP и необходимые модули с помощью команды sudo apt install php-fpm php-mysql. Это обеспечит базовую поддержку PHP и взаимодействие с базами данных MySQL. После установки проверьте версию PHP, выполнив php -v, чтобы убедиться, что всё работает корректно.
Откройте конфигурационный файл Nginx, расположенный в /etc/nginx/sites-available/default. Найдите блок server и добавьте следующие строки для обработки PHP-запросов:
location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php-fpm.sock; }
Сохраните изменения и перезапустите Nginx с помощью команды sudo systemctl restart nginx. Это позволит серверу корректно обрабатывать PHP-файлы. Проверьте конфигурацию на ошибки, выполнив sudo nginx -t, чтобы избежать проблем при перезапуске.
Настройте параметры PHP в файле /etc/php/7.4/fpm/php.ini. Убедитесь, что значения upload_max_filesize и post_max_size соответствуют вашим требованиям. Например, установите upload_max_filesize = 64M, если вы планируете загружать большие файлы.
После внесения изменений перезапустите PHP-FPM с помощью sudo systemctl restart php7.4-fpm. Это гарантирует, что новые настройки вступят в силу. Проверьте работу PHP, создав тестовый файл info.php в корневой директории веб-сервера и открыв его в браузере.
Установка необходимых компонентов
Для начала обновите список пакетов в системе, выполнив команду sudo apt update
. Это обеспечит актуальность данных о доступных пакетах.
Установите Nginx, используя команду sudo apt install nginx
. После завершения установки запустите сервер и добавьте его в автозагрузку: sudo systemctl start nginx
и sudo systemctl enable nginx
.
Для работы PHP с Nginx потребуется установка PHP и его модулей. Установите PHP и наиболее часто используемые модули командой sudo apt install php-fpm php-mysql
. Пакет php-fpm обеспечит интеграцию PHP с Nginx, а php-mysql добавит поддержку работы с базами данных MySQL.
Проверьте версию установленного PHP, выполнив php -v
. Убедитесь, что версия соответствует вашим требованиям. Если нужна другая версия, добавьте соответствующий репозиторий и установите её.
После установки всех компонентов настройте их взаимодействие. Убедитесь, что служба php-fpm запущена и добавлена в автозагрузку: sudo systemctl start php-fpm
и sudo systemctl enable php-fpm
.
Теперь система готова для дальнейшей настройки Nginx и PHP. Перейдите к конфигурации сервера, чтобы обеспечить корректную обработку PHP-скриптов.
Выбор версии PHP для установки
Для большинства современных проектов на Ubuntu 20.04 или 22.04 рекомендуется установить PHP 8.1 или PHP 8.2. Эти версии поддерживают актуальные функции, обеспечивают высокую производительность и получают регулярные обновления безопасности.
Перед выбором версии PHP:
- Проверьте требования вашего приложения или CMS. Например, WordPress поддерживает PHP 7.4 и выше, но для лучшей производительности используйте PHP 8.1.
- Убедитесь, что все используемые библиотеки и расширения совместимы с выбранной версией PHP.
- Обратите внимание на сроки поддержки версий. PHP 7.4 уже не получает обновлений безопасности, поэтому его использование не рекомендуется.
Для установки PHP на Ubuntu:
- Добавьте репозиторий Ondřej Surý, который содержит актуальные версии PHP:
sudo add-apt-repository ppa:ondrej/php
. - Обновите список пакетов:
sudo apt update
. - Установите нужную версию PHP, например:
sudo apt install php8.1
.
Если вы разрабатываете несколько проектов с разными требованиями, рассмотрите использование инструментов вроде phpbrew
или Docker для управления несколькими версиями PHP.
После установки проверьте версию PHP командой php -v
и убедитесь, что она соответствует вашим ожиданиям.
Установка Nginx
Обновите список пакетов системы перед установкой, чтобы получить последние версии программного обеспечения. Выполните команду:
sudo apt update
Установите Nginx с помощью следующей команды:
sudo apt install nginx
После завершения установки убедитесь, что служба Nginx запущена. Проверьте статус службы:
sudo systemctl status nginx
Если служба не запущена, активируйте её командой:
sudo systemctl start nginx
Для автоматического запуска Nginx при загрузке системы выполните:
sudo systemctl enable nginx
Проверьте корректность работы Nginx, открыв в браузере IP-адрес вашего сервера. Вы должны увидеть страницу приветствия Nginx.
Если вы используете брандмауэр, разрешите HTTP- и HTTPS-трафик для доступа к веб-серверу. Выполните команды:
sudo ufw allow 'Nginx Full'
Для проверки конфигурации Nginx на ошибки используйте команду:
sudo nginx -t
Если всё настроено правильно, вы увидите сообщение syntax is ok
и test is successful
.
Основные файлы конфигурации Nginx находятся в каталоге /etc/nginx
. Основной файл конфигурации – nginx.conf
, а виртуальные хосты настраиваются в каталоге /etc/nginx/sites-available
.
Для перезагрузки Nginx после внесения изменений в конфигурацию выполните:
sudo systemctl reload nginx
Теперь Nginx установлен и готов к настройке для работы с PHP.
Установка PHP и необходимых расширений
Для начала установите PHP и основные расширения, выполнив команду: sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip
. Эта команда установит PHP-FPM для работы с Nginx, а также популярные расширения, которые часто используются в веб-приложениях.
После завершения установки проверьте версию PHP, чтобы убедиться, что всё работает корректно: php -v
. Это поможет вам удостовериться, что установлена нужная версия PHP.
Настройте PHP-FPM для работы с Nginx. Откройте файл конфигурации PHP-FPM: sudo nano /etc/php/8.x/fpm/pool.d/www.conf
(замените 8.x на вашу версию PHP). Найдите строку listen = /run/php/php8.x-fpm.sock
и убедитесь, что она активна. Это позволит Nginx взаимодействовать с PHP через сокет.
Если вы планируете использовать базы данных, установите дополнительные расширения, такие как php-pgsql
для PostgreSQL или php-sqlite3
для SQLite. Например: sudo apt install php-pgsql
.
После внесения изменений перезапустите PHP-FPM: sudo systemctl restart php8.x-fpm
. Это применит новые настройки и обеспечит стабильную работу.
Проверьте состояние службы PHP-FPM: sudo systemctl status php8.x-fpm
. Убедитесь, что служба активна и работает без ошибок.
Проверка успешности установки
Создайте файл info.php в корневой директории вашего веб-сервера. Используйте команду:
sudo nano /var/www/html/info.php
Вставьте в файл следующий код:
<?php phpinfo(); ?>
Сохраните изменения и закройте редактор.
Откройте браузер и перейдите по адресу http://ваш_сервер/info.php. Если PHP настроен корректно, вы увидите страницу с подробной информацией о конфигурации. Проверьте раздел Loaded Configuration File, чтобы убедиться, что используется правильный файл конфигурации PHP.
Для проверки работы Nginx с PHP-FPM создайте тестовый файл test.php с аналогичным содержимым. Разместите его в той же директории и откройте в браузере. Если страница отображается без ошибок, интеграция прошла успешно.
После проверки удалите файл info.php для безопасности:
sudo rm /var/www/html/info.php
Это предотвратит раскрытие конфиденциальной информации о сервере.
Настройка PHP-FPM для работы с Nginx
Установите PHP-FPM, если он еще не установлен. Для этого выполните команду:
sudo apt install php-fpm
После установки проверьте статус службы, чтобы убедиться, что она запущена:
sudo systemctl status php-fpm
Настройте Nginx для работы с PHP-FPM. Откройте конфигурационный файл вашего сайта в директории /etc/nginx/sites-available/
. Добавьте или измените следующие строки:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Убедитесь, что путь к сокету PHP-FPM указан верно. Например, для PHP 8.1 это будет /var/run/php/php8.1-fpm.sock
.
Проверьте конфигурацию Nginx на наличие ошибок:
sudo nginx -t
Если проверка прошла успешно, перезагрузите Nginx:
sudo systemctl reload nginx
Создайте тестовый PHP-файл в корневой директории вашего сайта, например, info.php
, с содержимым:
<?php phpinfo(); ?>
Откройте этот файл в браузере, чтобы убедиться, что PHP работает корректно. Если все настроено правильно, вы увидите страницу с информацией о PHP.
Для повышения безопасности удалите тестовый файл после проверки:
sudo rm /var/www/your_site/info.php
Настройте пул PHP-FPM, если требуется изменить параметры обработки запросов. Откройте конфигурационный файл пула в директории /etc/php/8.1/fpm/pool.d/
(путь может отличаться в зависимости от версии PHP). Измените параметры, такие как pm.max_children
, pm.start_servers
, pm.min_spare_servers
и pm.max_spare_servers
, в зависимости от нагрузки на сервер.
После внесения изменений перезапустите PHP-FPM:
sudo systemctl restart php-fpm
Теперь ваш сервер готов обрабатывать PHP-запросы через Nginx с использованием PHP-FPM.
Конфигурация PHP-FPM
Настройте пул PHP-FPM для работы с Nginx, чтобы обеспечить стабильную обработку PHP-запросов. Откройте файл конфигурации пула, расположенный в /etc/php/8.x/fpm/pool.d/www.conf
, где 8.x
– версия PHP. Убедитесь, что параметр listen
установлен на /run/php/php8.x-fpm.sock
для использования Unix-сокета.
Укажите пользователя и группу, от имени которых будет работать PHP-FPM. Найдите параметры user
и group
и задайте их значения, например, www-data
, чтобы совпадать с пользователем веб-сервера. Это упростит управление правами доступа.
Оптимизируйте производительность, настроив параметры pm.max_children
, pm.start_servers
, pm.min_spare_servers
и pm.max_spare_servers
. Для небольших сайтов достаточно значений pm.max_children = 10
, pm.start_servers = 2
, pm.min_spare_servers = 1
и pm.max_spare_servers = 3
. Для высоконагруженных проектов увеличьте эти значения, основываясь на доступных ресурсах сервера.
Добавьте параметр pm.max_requests
, чтобы ограничить количество запросов, обрабатываемых одним дочерним процессом. Это помогает предотвратить утечки памяти. Установите значение, например, 500
, чтобы процессы перезапускались после обработки 500 запросов.
Проверьте конфигурацию на ошибки с помощью команды php-fpm8.x -t
. Если всё в порядке, перезапустите PHP-FPM: sudo systemctl restart php8.x-fpm
. Убедитесь, что Nginx корректно взаимодействует с PHP-FPM, добавив в конфигурацию Nginx блок location ~ .php$
с указанием пути к сокету.
Для мониторинга состояния PHP-FPM используйте команду systemctl status php8.x-fpm
. Это поможет быстро выявить проблемы и устранить их. Регулярно обновляйте PHP и его модули, чтобы обеспечить безопасность и стабильность работы.
Настройка Nginx для использования PHP-FPM
Для начала убедитесь, что PHP-FPM установлен и работает. Проверьте статус службы командой systemctl status php-fpm
. Если служба не активна, запустите её с помощью systemctl start php-fpm
.
Откройте конфигурационный файл Nginx для вашего сайта. Обычно он находится в директории /etc/nginx/sites-available/
. Найдите блок server
и добавьте следующий код для обработки PHP-запросов:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Убедитесь, что путь к сокету PHP-FPM указан правильно. По умолчанию используется /var/run/php/php-fpm.sock
, но он может отличаться в зависимости от версии PHP и настроек.
После внесения изменений проверьте конфигурацию Nginx на ошибки с помощью команды nginx -t
. Если всё в порядке, перезагрузите Nginx: systemctl reload nginx
.
Создайте тестовый PHP-файл в корневой директории вашего сайта, например, info.php
, с содержимым <?php phpinfo(); ?>
. Откройте его в браузере, чтобы убедиться, что PHP обрабатывается корректно.
Если вы используете несколько версий PHP, укажите соответствующий сокет в директиве fastcgi_pass
. Например, для PHP 8.2 это может быть unix:/var/run/php/php8.2-fpm.sock
.
Для повышения безопасности добавьте ограничения на выполнение PHP-файлов в определённых директориях. Например, запретите выполнение PHP в папке загрузок:
location /uploads/ {
location ~ .php$ {
deny all;
}
}
Теперь Nginx корректно обрабатывает PHP-запросы через PHP-FPM, обеспечивая стабильную работу вашего сайта.
Тестирование конфигурации с помощью простого скрипта
Создайте файл info.php
в корневой директории вашего веб-сервера, например, в /var/www/html
. Используйте команду sudo nano /var/www/html/info.php
для редактирования файла. Вставьте в него следующий код:
<?php
phpinfo();
?>
Сохраните изменения и закройте редактор. Убедитесь, что файл имеет правильные права доступа, выполнив команду sudo chmod 644 /var/www/html/info.php
. Это позволит веб-серверу читать файл, но не изменять его.
Откройте браузер и перейдите по адресу http://ваш_сервер/info.php
. Если конфигурация PHP и Nginx работает корректно, вы увидите страницу с подробной информацией о текущих настройках PHP. Проверьте разделы «Loaded Configuration File» и «Server API», чтобы убедиться, что используется правильный конфигурационный файл и серверный интерфейс.
После завершения тестирования удалите файл info.php
с помощью команды sudo rm /var/www/html/info.php
. Это повысит безопасность вашего сервера, так как информация о конфигурации может быть использована злоумышленниками.