Как и обещал, решение тестовой задачи с заменой Apache на Nginx. Про Apache писал тут . Теперь сделаем тоже самое с помощью Nginx и забегая вперед сразу скажу — а не все так просто...
Первым делом ставим Nginx
1 2 3 4 | dnf -y install nginx firewall-cmd --add-service=http firewall-cmd --runtime-to-permanent systemctl enable --now nginx |
Можно ничего не исправлять в конфиге, просто запустить nginx и проверить что отдаст браузер.
Дальше ставим две версии php все как в статье про lamp — один в один, репозиторий и версию 7.4 затем 8.4. Запускаем обе версии и проверяем статус. Создаем такие же два файла 7.php и 8.php только в другой директории — /usr/share/nginx/html/
Теперь в конфиг nginx нужно добавить блок для обработки php, примерно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | location ~* 8.php$ { try_files $uri =404; fastcgi_pass unix:/var/opt/remi/php84/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* 7.php$ { try_files $uri =404; fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Пробуем открыть в браузере один из наших файлов и получаем пятисотую ошибку, а в логах nginx будет что-то вроде
1 | connect() to unix:/var/opt/remi/php84/run/php-fpm/www.sock failed (13: Permission denied) |
Все потому, что в конфигах все заточено под апач... Если посмотреть процессы 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
Получилось как надо. Но при перезапуске php-fpm может вывалиться ошибка про Permission denied — папки php-fpm принадлежат либо root либо apache — нужно поменять их на nginx
1 2 3 4 | chown -R nginx:root /var/opt/remi/php84/log/php-fpm/ chown -R nginx:root /var/opt/remi/php84/run/php-fpm/ chown -R nginx:root /var/opt/remi/php74/run/php-fpm/ chown -R nginx:root /var/opt/remi/php74/log/php-fpm/ |
Вот теперь все красиво и все работает!
З.Ы. Вишенка на тортике. Прочитал логи и доки — если сервис запускаем не от root — все эти директивы про пользователя и группу в файле /etc/opt/remi/php74/php-fpm.d/www.conf игнорируются. Закоментировал, перезапустил — все так и есть.
Удалять уже не стал из статьи, эта информация не помешает.
Всем добра.




Здравствуйте!
Пишу чтобы предложить свои услуги по поиску клиентов.
Готов искать клиентов для Вас путем обзвона по нужным предприятиям, а также при помощи отправки сообщений в мессенджеры и email адреса.
Работаю с различными тематиками бизнеса и передавать найденных клиентов Вам.
Если такое сотрудничество может быть Вам интересно — давайте пообщаемся в WhatsApp/Telegram/MAX: 7 (9 2 6) 87 9 — 7 0 — 94