Несколько версий PHP на сервере Linux удобно в работе и последующем обслуживании. В статье пример на базе Rocky Linux , но вы можете использовать его и для других систем использующих репозиторий RHEL.
Содержание:
Введение
Для любого системного администратора обновление версий PHP является задачей не простой и очень ответственной. При использовании на сервере одной версии php в процессе перехода на новую версию приходиться делать много действий необходимых для безотказной работы ресурса на период обновления. Сюрпризы могут подстерегать на любом моменте и спрогнозировать их крайне сложно.
В этой статье я описал механизм того как можно совершенно спокойно обновлять версии PHP не создавая проблем в работе пользователей с рабочим ресурсом.
Предварительная подготовка
Для работы с разными версиями php на одном сервере нам необходимо произвести предварительную настройку системы.
Установка и настройка сервера
При написании статьи учитывается что настройка сервера была произведена согласно статьи Rocky Linux 8 установка и настройка.
Команды которые дают доступ к серверу по 80 и 443 порту в случае использования FirewallD:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
Из статьи FirewallD базовая настройка вы можете узнать более подробно как работать с этим сервисом.
Перед началом использования репозитория Remi (на базе которого мы и будем устанавливать разные версии PHP) необходимо подключить репозиторий Epel созданный группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.
Установка Epel для дистрибутивов на базе RHEL производится командой:
dnf install epel-release dnf update
Установка и настройка Nginx
При написании статьи учитывается что настройка Nginx была произведена согласно статьи NGINX установка и настройка.
Установка базовой версии PHP
Про актуальность разных версий PHP можно узнать на сайте Supported Versions PHP.
Посмотрим какие варианты присутствуют в базовой версии:
# dnf module list php Последняя проверка окончания срока действия метаданных: 1:27:39 назад, Ср 10 ноя 2021 11:34:45. Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Видим что в базовой версии по умолчанию находится версия 7.2 её и будем устанавливать.
Установим php и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
dnf install php php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache
Проверим установленную версию выполнив команду в консоли сервера:
php -v = вывод команды = PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
Для того чтобы связать nginx и php будем использовать мост php-fpm. Основной файл настройки находится по пути /etc/php-fpm.conf и там должен быть параметр include=/etc/php-fpm.d/*.conf говорящий о том где лежат настройки пулов.
Запускаем php-fpm и добавляем в автозагрузку:
systemctl enable --now php-fpm
Проверяем, запустился ли он.
systemctl status php-fpm = вывод команды = ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-10 13:51:24 EST; 16s ago Main PID: 7567 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 23681) Memory: 17.3M CGroup: /system.slice/php-fpm.service ├─7567 php-fpm: master process (/etc/php-fpm.conf) ├─7568 php-fpm: pool www ├─7569 php-fpm: pool www ├─7570 php-fpm: pool www ├─7571 php-fpm: pool www └─7572 php-fpm: pool www ноя 10 13:51:24 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager... ноя 10 13:51:24 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
Из вывода видно сервис успешно работает.
Настройки php находятся по стандартному пути /etc/php.ini а настройки пулов лежат в папке /etc/php-fpm.d/.
Использовать порт или сокет решать вам, но говорят что сокет использовать лучше. Запустим php-fpm через unix сокет. Для этого переименуем конфиг /etc/php-fpm.d/www.conf, создадим новый и приводим к следующему виду:
mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf_orig
vim /etc/php-fpm.d/www.conf
= необходимый код =
[www]
user = nginx
group = nginx
;listen = 127.0.0.1:9000
listen = /run/php-fpm/www.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
slowlog = /var/log/php-fpm/www-slow.log
;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 128M
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
php_value[opcache.file_cache] = /var/lib/php/opcache
Вы можете для каждого сайта создать свой пул и указать там все необходимые параметры. Например, для каждого сайта я создаю свой пул для гибкости настройки и благодаря этому я настраиваю корректный доступ к файлам по sftp. Более подробно про настройку доступа по SFTP прочтите в статье SFTP настройка для веб хостинга.
Назначим каталогу /var/lib/php правильное владение:
=== было === ls -l /var/lib/php = вывод команды = итого 0 drwxrwx--- 2 root apache 6 окт 22 12:08 opcache drwxr-xr-x 2 root root 59 окт 28 10:05 peclxml drwxrwx--- 2 root apache 6 окт 22 12:08 session drwxrwx--- 2 root apache 6 окт 22 12:08 wsdlcache === Назначаем правильные права === chown -R root:nginx /var/lib/php
Перезапускаем php-fpm командой:
systemctl restart php-fpm
Проверяем, стартовал ли указанный сокет.
ll /run/php-fpm/www.sock srw-rw---- 1 nginx nginx 0 фев 13 10:35 /run/php-fpm/www.sock
Всё успешно настроено.
В настройках nginx для сайта необходимо указать требуемый пул.
Например, прописать код fastcgi_pass unix:/run/php-fpm/www.sock; в секции location ~ \.php$
Настройка базовой версии закончена и приступаем к установке других версий php.
Версии PHP от Remi
Есть замечательный человек Remi Collet, который создал репозиторий пользующийся огромной популярностью у пользователей операционных систем на базе RHEL. Познакомится с новостями репозитория можно на блоге Remi Collet.
Подключаем репозиторий Remi, выполнив следующую команду:
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Посмотрим список всех доступных вариантов установки php:
dnf module list php = вывод команды = Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 1.6 MB/s | 2.0 MB 00:01 Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Из вывода выше видно что появилась возможность установить версии от 7.2 до 8.1 из реппозитрия Remi.
В выводе нет информации о возможности установить PHP версии 5.6, но сделать это можно по аналогии как мы будем устанавливать версии ниже. Достаточно указать код #dnf install php56 php56-php-fpm
Для чистоты эксперимента и наглядности установим две версии 7.4 и 8.1
В результате мы получим на сервере 3 разных версии php.
Установка версий PHP от Remi
Активируем репу php remi-7.4, для этого выполняем команды:
dnf module reset php dnf module enable php:remi-7.4
При желании можно убедится что версия выбрана правильно выполнив команду:
dnf module list php
Установим php remi-7.4 и все популярные модули следующей командой:
dnf install php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-ldap php74-php-odbc php74-php-pdo php74-php-pear php74-php-xml php74-php-xmlrpc php74-php-mbstring php74-php-snmp php74-php-soap php74-php-zip php74-php-opcache
Обращаю особое внимание на указание именно php74 перед требуемыми пакетами. Только при таком названии пакетов установятся необходимые и не возникнет путаницы.
Сразу установим версию php 8.1 из репозитория Remi и выключим активную версию:
dnf module reset php dnf module enable php:remi-8.1 dnf install php81 php81-php-fpm php81-php-cli php81-php-mysqlnd php81-php-gd php81-php-ldap php81-php-odbc php81-php-pdo php81-php-pear php81-php-xml php81-php-xmlrpc php81-php-mbstring php81-php-snmp php81-php-soap php81-php-zip php81-php-opcache dnf module reset php
После установки обеих версий PHP запустим оба сервиса и включим его в автозагрузку с помощью следующих команд:
systemctl enable --now php74-php-fpm systemctl enable --now php81-php-fpm
Проверим статус выполнив команду:
# systemctl status php74-php-fpm ● php74-php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php74-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-10 15:00:54 EST; 24s ago Main PID: 8787 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 23681) Memory: 16.2M CGroup: /system.slice/php74-php-fpm.service ├─8787 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf) ├─8788 php-fpm: pool www ├─8789 php-fpm: pool www ├─8790 php-fpm: pool www ├─8791 php-fpm: pool www └─8792 php-fpm: pool www ноя 10 15:00:54 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager... ноя 10 15:00:54 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
Показан вывод версии php74 для версии php81 будет аналогичный.
Покажу дальнейшую настройку только для версии php74, так как настройка для php81 будет аналогичной.
Настройки php74 находятся по пути /etc/opt/remi/php74/php.ini а настройки пулов лежат в папке /etc/opt/remi/php74/php-fpm.d/.
Запустим php74-php-fpm через unix сокет. Для этого скопируем конфиг /etc/opt/remi/php74/php-fpm.d/www.conf и приведем оригинал к следующему виду:
cp /etc/opt/remi/php74/php-fpm.d/www.conf /etc/opt/remi/php74/php-fpm.d/www.conf-orig
vim /etc/opt/remi/php74/php-fpm.d/www.conf
= необходимый код =
[www]
user = nginx
group = nginx
listen = /var/opt/remi/php74/run/php-fpm/www.sock
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
listen.acl_users = nginx
listen.acl_groups = nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/opt/remi/php74/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/opt/remi/php74/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 128M
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/remi/php74/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/opt/remi/php74/lib/php/wsdlcache
;php_value[opcache.file_cache] = /var/opt/remi/php74/lib/php/opcache
Назначим каталогу /var/opt/remi/php74/lib/php правильное владение:
=== было === ls -l /var/opt/remi/php74/lib/php = вывод команды = итого 0 drwxrwx--- 2 root apache 6 окт 20 02:01 opcache drwxr-xr-x 2 root root 36 ноя 10 14:49 peclxml drwxrwx--- 2 root apache 6 окт 20 02:01 session drwxrwx--- 2 root apache 6 окт 20 02:01 wsdlcache === Назначаем правильные права === chown -R root:nginx /var/opt/remi/php74/lib/php
Перезапускаем php-fpm командой:
systemctl restart php74-php-fpm
Проверяем, стартовал ли указанный сокет.
ll /var/opt/remi/php74/run/php-fpm/www.sock srw-rw----+ 1 root root 0 ноя 10 15:46 /var/opt/remi/php74/run/php-fpm/www.sock
Всё успешно настроено.
В настройках nginx для сайта необходимо указать требуемый пул.
Например, прописать код fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; в секции location ~ \.php$
Создание структуры каталогов для сайтов
Создадим корневые каталоги для сайтов. Каждый сайт будет использовать свою версию php:
mkdir /var/www/php72 mkdir /var/www/php74 mkdir /var/www/php81
Назначим необходимые права собственности и доступа на корневые каталоги сайтов:
chown -R nginx:nginx /var/www/php72 chown -R nginx:nginx /var/www/php74 chown -R nginx:nginx /var/www/php81 chmod -R 755 /var/www/php72 chmod -R 755 /var/www/php74 chmod -R 755 /var/www/php81
Команда chown передает права на каталоги сайтов пользователю nginx и группе nginx. Команда chmod изменяет права доступа этого пользователя и группы.
В каждом корневом каталоге мы создадим файл info.php. Позже он поможет нам отобразить информацию о версии PHP каждого веб-сайта:
echo "<?php phpinfo(); ?>" > /var/www/php72/info.php echo "<?php phpinfo(); ?>" > /var/www/php74/info.php echo "<?php phpinfo(); ?>" > /var/www/php81/info.php
В случае если вы не хотите смотреть всю информацию можете использовать такой код файла info.php в котором выбрано отображение информации только о загруженных модулях:
<?php // Показывать всю информацию, по умолчанию INFO_ALL //phpinfo(); // Показывать информацию только о загруженных модулях. phpinfo(INFO_MODULES); ?>
Конфигурации NGIN для сайтов
Создадим для для каждого сайта свои конфигурационные файлы:
vim /etc/nginx/conf.d/php72.loc.conf = необходимый код = # php72.loc server { listen 80; server_name php72.loc; #access_log /var/www/php72/access_log main; #error_log /var/www/php72/error_log info; root /var/www/php72/; index index.php; location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; #fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }
vim /etc/nginx/conf.d/php74.loc.conf = необходимый код = # php74.loc server { listen 80; server_name php74.loc; #access_log /var/www/php74/access_log main; #error_log /var/www/php74/error_log info; root /var/www/php74/; index index.php; location ~ \.php$ { fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }
vim /etc/nginx/conf.d/php81.loc.conf = необходимый код = # php81.loc server { listen 80; server_name php81.loc; #access_log /var/www/php81/access_log main; #error_log /var/www/php81/error_log info; root /var/www/php81/; index index.php; location ~ \.php$ { fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; #fastcgi_param HTTPS on; # Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Minsk"; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }
Во всех файлах выделены строчки в которых делались изменения.
Особое внимание обращаю на блок отвечающий за персональные настройки php для ресурса:
# Свои параметры PHP fastcgi_param PHP_VALUE "cgi.fix_pathinfo = 0"; fastcgi_param PHP_VALUE "max_execution_time = 300"; fastcgi_param PHP_VALUE "short_open_tag = On"; fastcgi_param PHP_VALUE "post_max_size = 12M"; fastcgi_param PHP_VALUE "upload_max_filesize = 12M"; fastcgi_param PHP_VALUE "max_input_time = 300"; fastcgi_param PHP_VALUE "date.timezone = Europe/Moscow";
Используя этот код можно использовать различные ресурсы с разными параметрами php использующими одну версию php.
Проверка работы
Для проверки нам необходимо или прописать для каждого тестируемого ресурса DNS или на компьютере с которого производим проверку внести необходимые правки. В нашем случае система с которой проводится проверка работает на базе Linux и там необходимо внести следующие правки:
vim /etc/hosts = необходимые добавления = 192.168.0.206 php72.loc 192.168.0.206 php74.loc 192.168.0.206 php81.loc
Для проверки необходимо в строке браузера вписать путь http://ДОМЕН/info.php.
Вот так выглядит вывод для разных сайтов:
Обновление версий PHP
Обновление версий происходит обычным механизмом обновления и последующим перезапуском необходимых сервисов.
Для нашего случая команды будут иметь такую последовательность:
dnf update nginx -s reload systemctl restart php-fpm systemctl restart php74-php-fpm systemctl restart php81-php-fpm
Используя разные версии php на одном ресурсе можно спокойно перевести работу ресурса на новую версию и в случае проблем в работе оперативно вернутся на старую.
При использовании не сервере одной версии при переходе на другую версию необходимо было выполнять следующие действия:
- Остановка php-fpm,
- Вывод и удаление всех имеющихся пакетов php,
- Удаление старого и активирование нового репозитория требуемой версии php,
- Установка новой версии,
- Проверка настрое из старой версии,
- Запуск php-fpm и проверка сервиса.
Если ресурс рабочий выполнять все действия приходится оперативно и очень аккуратно для минимизирования простоя в работе ресурса.
Заключение
Данный вариант работы с разными версиями меня вполне устраивает и не вызывает проблем. В статье я специально сделал установку версии как с базовых репозиториев так и с репозитория Remi. На практике использовать базовый репозиторий не удобно, так как не удобно просматривать какие именно пакеты установлены в базовой версии. Запрос # rpm -qa | grep php
выведет все имеющиеся версии.
Рекомендую использовать версии PHP от Remi это удобно и вызывает меньше путаницы.
Гораздо удобней смотреть вывод такой команды:
# rpm -qa | grep php81 php81-php-fpm-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pecl-zip-1.20.0-1.el8.remi.x86_64 php81-php-soap-8.1.0~rc6-1.el8.remi.x86_64 php81-runtime-8.1-2.el8.remi.x86_64 php81-php-process-8.1.0~rc6-1.el8.remi.x86_64 php81-php-mysqlnd-8.1.0~rc6-1.el8.remi.x86_64 php81-php-xml-8.1.0~rc6-1.el8.remi.x86_64 php81-php-opcache-8.1.0~rc6-1.el8.remi.x86_64 php81-php-sodium-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pecl-xmlrpc-1.0.0~rc2-3.el8.remi.x86_64 php81-php-ldap-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pdo-8.1.0~rc6-1.el8.remi.x86_64 php81-php-mbstring-8.1.0~rc6-1.el8.remi.x86_64 php81-php-pear-1.10.13-1.el8.remi.noarch php81-php-gd-8.1.0~rc6-1.el8.remi.x86_64 php81-php-common-8.1.0~rc6-1.el8.remi.x86_64 php81-libzip-1.8.0-1.el8.remi.x86_64 php81-php-odbc-8.1.0~rc6-1.el8.remi.x86_64 php81-php-cli-8.1.0~rc6-1.el8.remi.x86_64 php81-8.1-2.el8.remi.x86_64 php81-php-snmp-8.1.0~rc6-1.el8.remi.x86_64
В любом случае какие версии использовать и с какими параметрами использовать необходимо смотреть в каждом конкретном случае. Нормальные разработчики ресурсов всегда указывают какие необходимо использовать версии php и с какими параметрами.
Такой вопрос. А как к этой связке прикрутить ImageMagick, чтоб работало на всех версиях php?
Думал должно работать везде если установлен пакет….
Что-то совсем тупанул. Вопрос снят, ведь php-pecl-imagick
Из remi теперь можно поставить только php 7.4 и выше. Все остальное выдает ошибки.
Можно, но какие надо сделать манипуляции не помню точно. Вроде что то с репозиториями.
Интересная тема. Спасибо! (Помню ранее Вы предлагали для подобной реализации использовать lxc).
Есть пара мини-вопросов: применима ли данная схема, когда веб-сервер реализован в связке с nginx (фронт) + apache (бекенд)? Я понимаю, что в прямом виде нет, нужна будет адаптация, может есть подводные камни или уже готовые советы при работе такой схемы. Или проще и/или лучше в настоящий момент времени собирать всё на nginx+php-fmp. А там, где нужен apache — собирать непосредственно на нём.?
LXC имелось ввиду использовать для самого проекта (удобство бекапов и переезда).
В связке nginx и apache работают без проблем надо лишь понимать как они работают вместе.
Устанавливаем в системе nginx который работает на стандартных портах 80 и 443. Устанавливаем apache и меняем ему допустим 80 порт на 8080. Используя nginx проксируем сигнал на 8080 порт.