lemp + php 7 + php 8

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

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

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

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, при­мер­но так:

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 будет что-то вро­де

 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

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

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

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 игно­ри­ру­ют­ся. Зако­мен­ти­ро­вал, пере­за­пу­стил — все так и есть.

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

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

Всем добра.

lemp + php 7 + php 8: 1 комментарий

  1. Darrellseach

    Здрав­ствуй­те!

    Зани­ма­юсь напи­са­ни­ем кан­ди­дат­ских дис­сер­та­ций (вклю­чая ста­тьи ВАК), маги­стер­ских дис­сер­та­ций, учеб­ных посо­бий на заказ.

    В цену вхо­дит кор­рек­ти­ров­ки заме­ча­ний руко­во­ди­те­ля в рам­ках утвер­жден­но­го пла­на.
    Воз­мож­но поэтап­ное выпол­не­ние рабо­ты с поэтап­ной опла­той.
    Сроч­ное выпол­не­ние — 1–3 дня

    Мои услу­ги сто­ят реаль­но недо­ро­го.

    С ува­же­ни­ем, Вадим.
    Мой email: obsepjem@list.ru

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

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

*