lemp + php 7 + php 8

Автор: | 23 декабря 2024

Как и обещал, решение тестовой задачи с заменой Apache на Nginx. Про Apache писал тут . Теперь сделаем тоже самое с помощью Nginx и забегая вперед сразу скажу — а не все так просто...

Первым делом ставим Nginx

Можно ничего не исправлять в конфиге, просто запустить nginx и проверить что отдаст браузер.

Дальше ставим две версии php все как в статье про lamp — один в один, репозиторий и версию 7.4 затем 8.4. Запускаем обе версии и проверяем статус. Создаем такие же два файла 7.php и 8.php только в другой директории — /usr/share/nginx/html/

Теперь в конфиг nginx нужно добавить блок для обработки php, примерно так:

Пробуем открыть в браузере один из наших файлов и получаем пятисотую ошибку, а в логах nginx будет что-то вроде

Все потому, что в конфигах все заточено под апач... Если посмотреть процессы php:

видно что основной процесс запущен от root а pool www от apache. Нужно поменять это на nginx. Редактируем файлы /etc/opt/remi/php74/php-fpm.d/www.conf и /etc/opt/remi/php84/php-fpm.d/www.conf меняем user = apache на user = nginx, group = apache на group = nginx. Затем расскоментируем строки listen.owner, listen.group и listen.mode. listen.owner и listen.group тоже заменим на nginx. Получится вот так:

Это будет одинаково в конфиг файлах обоих версий php. Но еще беда в том, что сокет создается от root — нужно тоже переделать на nginx.

Редактируем файлы /usr/lib/systemd/system/php84-php-fpm.service и /usr/lib/systemd/system/php74-php-fpm.service. В блок Service добавляем строку User=nginx, сохраняем. Перечитываем конфиги и перезапускаем php-fpm

Все процессы запущены от пользователя nginx

Получилось как надо. Но при перезапуске php-fpm может вывалиться ошибка про Permission denied — папки php-fpm принадлежат либо root либо apache — нужно поменять их на nginx

Вот теперь все красиво и все работает!

З.Ы. Вишенка на тортике. Прочитал логи и доки — если сервис запускаем не от root — все эти директивы про пользователя и группу в файле /etc/opt/remi/php74/php-fpm.d/www.conf игнорируются. Закоментировал, перезапустил — все так и есть.

Директивы user и group игнорируются, если сервис запускается не от root

Удалять уже не стал из статьи, эта информация не помешает.

Всем добра.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*