Тестовое задание. lamp + php 7 + php 8

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

Ста­ло инте­рес­но про­ве­рить свои зна­ния и навы­ки и я отклик­нул­ся на вакан­сию Веду­щий систем­ный адми­ни­стра­тор. Мне сооб­щи­ли, что ско­ро будет высла­но тесто­вое зада­ние, кото­рое нуж­но выпол­нить в тече­ние часа. Ну а спу­стя неко­то­рое вре­мя при­шло вот такое вот зада­ние:

Доб­рый день!
В про­дол­же­нии раз­го­во­ра направ­ля­ем Вам тесто­вое зада­ние.
Поставь­те и настрой­те lamp +  php 7 + php 8. Предо­ставь­те ссыл­ки по
http с ука­зан­ны­ми вер­си­я­ми php. Напри­мер, http://192.168.1.135/7.php и http://192.168.1.135/8.php
*** SSH ***
username: root
password: *********
Резуль­тат отправь­те ответ­ным пись­мом.

Зай­дя по ssh я уви­дел такую вот вир­ту­ал­ку.

Меня это немно­го сму­ти­ло — с AlmaLinux я еще не стал­ки­вал­ся. Когда то дав­но любил очень Федоруш­ку, но потом как то все пере­тек­ло в Debian/Ubuntu и все чаще исполь­зо­вал­ся Nginx. Поэто­му дан­ная стать­ся может быть не инте­рес­на тем, кто посто­ян­но рабо­та­ет с такой систе­мой и апа­чем. Я же решил поко­вы­рять­ся и заод­но опи­сать что и как полу­чи­лось. Так что не обес­судь­те…

Ска­жу сра­зу — зада­ние за час я не выпол­нил — апач и обе вер­сии php я уста­но­вил и запу­стил, но потом пошел по пути вир­ту­аль­ных хостов (по при­выч­ке уже), понял что дей­ствую не так. Вре­мя рабо­чее, при­хо­ди­лось отвле­кать­ся. Поэто­му по про­ше­ствии часа я отве­тил на пись­мо, напи­сал что не спра­вил­ся и побла­го­да­рил за инте­рес­ное зада­ние. А уже вече­ром ска­чал све­жий дис­три­бу­тив Almalinux и запу­стил на нем вир­ту­ал­ку. Открыл ману­а­лы по апа­чу и сде­лал все вот так вот.

Моя вир­ту­ал­ка немно­го отли­ча­лась вер­си­ей, но не кри­тич­но.

Ста­вим Apache и добав­ля­ем пра­ви­ла для фай­р­во­ла.

dnf -y install httpd
firewall-cmd --add-service=http
firewall-cmd --runtime-to-permanent

Дела­ем неболь­шие прав­ки в фай­ле /etc/httpd/conf/httpd.conf

# line 100 : изменим на свое имя сервера
ServerName www.my.home:80
# line 149 : Меняем строку, нужно убрать Indexes
Options FollowSymLinks
# line 156 : Меняем с none на All
AllowOverride All
# line 169 : добавим индексный файл с расширением php
DirectoryIndex index.html index.php

Это­го хва­тит, рестар­ту­ем апач и про­ве­ря­ем его состо­я­ние.

systemctl restart httpd
systemctl status httpd
Проверка статуса веб сервера Apache

С апа­чем пока все, ста­вим две вер­сии php — 7.4 и 8.4

Для нача­ла доба­вим репо­зи­то­рий remi и про­ве­рим какие вер­сии и моду­ли php нам доступ­ны

sudo dnf install http://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module list php

Полу­ча­ем что-то вро­де это­го:

Отлич­но, идем даль­ше.

Выклю­ча­ем модуль php и вклю­ча­ем модуль php:remi‑7.4 и после это­го ста­вим допол­ни­тель­ные ком­по­нен­ты php74 и php74-php-fpm

sudo dnf module reset php
sudo dnf module enable php:remi-7.4
sudo dnf install php74 php74-php-fpm -y
Устанавливаем php7.4 и дооплнительные модули для него.

И теперь тоже самое для вер­сии 8.4

sudo dnf module reset php
sudo dnf module enable php:remi-8.4
sudo dnf install php84 php84-php-fpm -y
Ставим php 8/4 и модули для него.

Стар­ту­ем обе вер­сии и про­ве­ря­ем их ста­тус

sudo systemctl start php74-php-fpm
sudo systemctl start php84-php-fpm
sudo systemctl status php84-php-fpm
sudo systemctl status php74-php-fpm
Запускаем обе версии php и проверяем их статус

Все рабо­та­ет. Теперь пере­за­пу­стим Апач, созда­дим два фай­ла php и про­ве­рим что полу­чи­лось.

nano /var/www/html/7.php
<?php
        echo "7";
        phpinfo();
?>
nano /var/www/html/8.php
<?php
        echo "8";
        phpinfo();
?>

А теперь созда­дим файл .htaccess с таким вот содер­жи­мым:


<FilesMatch 7.php$>
        SetHandler "proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost"
 </FilesMatch>
<FilesMatch 8.php$>
        SetHandler "proxy:unix:/var/opt/remi/php84/run/php-fpm/www.sock|fcgi://localhost"
 </FilesMatch>

Пере­за­пу­стим Apache и про­ве­рим.

Ответ сервера отображение информации о версии php

Инфор­ма­ция о вер­сии 7

ответ сервера, отображение информации о версии php

Инфор­ма­ция о вер­сии 8.

Все полу­чи­лось. Реаль­но полу­чи­лось сде­лать все это мень­ше чем за час. Через вир­ту­аль­ные хосты тоже мож­но сде­лать, но тогда появит­ся еще один уро­вень вло­жен­но­сти ну или обра­ще­ние по раз­ным име­нам хостов. А тут обра­ще­ние на один и тот же айпиш­ник (или имя сер­ве­ра) и толь­ко раз­ные фай­лы, кото­рые обра­ба­ты­ва­ют­ся раз­ной вер­си­ей обра­бот­чи­ка php

Мне реше­ние понра­ви­лось. Но я боль­ше люб­лю Nginx и сле­дом напи­шу как это сде­лать в нем, про­сто через location.

Всем добра.

Тестовое задание. lamp + php 7 + php 8: 1 комментарий

  1. Владимир

    Инте­рес­ное зада­ние. По сути про­стое, если рабо­та­ешь с apache. Я бы тоже не дога­дал­ся, как быст­ро выдать раз­ные вер­сии php на нём. Про­сто нет прак­ти­ки. В Nginx бы через location без про­блем настро­ил.

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

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

*