Можно настроить сервер LAMP на более старой или неподдерживаемой версии PHP. Вы также можете использовать несколько версий PHP для разных веб-сервисов на одном сервере. Вот что надо сделать.
Пример: допустим вы получили проект для клиента, который использовали экземпляр AWS EC2 для размещения 3 разных веб-сайтов: 2 веб-сайта WordPress и пользовательскую систему на базе CodeIgniter.
В этом EC2 cPanel использовалась для администрирования всего сервера, однако мой клиент не только хотел снизить свои затраты, но также хотел продолжать использовать облако и AWS, поскольку у них уже есть все, что там расположено (куча доменов, приобретенных через регистратора Amazon, службы DNS и SES).
Итак, мы предложили перенести все веб-сайты на экземпляры Lightsail, чтобы таким образом мы могли контролировать затраты на каждый веб-сайт: веб-сайты WordPress были один для производства, а другой для разработки, поэтому нам нужен был дешевый экземпляр стоимостью 3 доллара в месяц для разработки и 5 долларов в месяц для производства.
Затем я столкнулся с проблемой настройки внутреннего системного сервера LAMP, который использует CodeIgniter версии 3, и поэтому он поддерживает только PHP 5.6 или ниже.
В настоящее время, на момент написания этой статьи, PHP находится на версии 8, что означает, что версии 5.X больше не поддерживаются, и, следовательно, вы даже не можете загрузить их из обычных репозиториев Debian или Ubuntu (которые клиент предпочитает использовать).
Кроме того, установка их из исходного кода означала бы гораздо больше работы и, вероятно, больше проблем, поэтому мне пришлось придумать способ заставить его работать как можно более плавно.
Это не могло быть необычной проблемой, поэтому я начал копаться в Google, пока не наткнулся на репозиторий ondrej/php.
Итак, это репозиторий, который позволяет вам управлять установкой PHP в вашей системе на базе Debian с помощью обычного PPA. Он также позволяет вам установить несколько версий PHP на один сервер, если вам это необходимо. Он содержит все версии PHP от PHP 5.6 (именно ту, которая мне была нужна) до PHP 8.2 на момент написания этой статьи.
Итак, это означает, что у вас будет доступно множество старых, неподдерживаемых версий, а также самые последние.
В данном случае мы использовали дистрибутив Ubuntu 22.04, поскольку это последняя версия Ubuntu, для которой у этого пакета ondrej/php есть файл выпуска, поэтому мы начали с выполнения обновлений:
apt update && apt upgrade -y
Как только система была обновлена, пришло время добавить репозиторий. Для достижения этой цели вам необходимо использовать команду add-apt-repository, которая не используется по умолчанию на серверах Ubuntu, поэтому вам нужно сделать это в первую очередь:
apt install software-properties-common
В зависимости от того, используете ли вы Debian или Ubuntu, вам необходимо выполнить шаг перед добавлением репозитория из ondrej/php. В Ubuntu вы можете просто избежать следующего шага и добавить его, однако в Debian, если вы попытаетесь это сделать, вы получите сообщение об ошибке, связанное с некорректным использованием языкового пакета.
Чтобы исправить это, вам нужно сделать:
apt install -y language-pack-en-base
Как только это будет сделано, добавьте репозиторий:
add-apt-repository ppa:ondrej/php
Теперь вы можете перейти к установке PHP5.6, или 7.X, или 8.X. Если вы не укажете никакой версии, а просто запросите установку PHP, для этого потребуется последний пакет 8.X. Чтобы указать конкретную версию (или несколько одновременно), вы должны указать ее следующим образом:
apt install php5.6
Как только PHP будет установлен, вы найдете его версию в папке version: /etc/php/
Позже, если вы захотите установить модули для этой конкретной версии PHP, вы будете использовать ту же процедуру с другими модулями, указав версию:
apt install php5.6-bz2 php5.6-mbstring
Каждый установленный модуль будет работать только в той версии PHP, для которой вы его установили, и будет заблокирован там. Это связано с тем, что у вас может быть несколько версий PHP, запущенных на одном сервере, и разные веб-приложения, каждое из которых запускает свою собственную версию PHP.
Если вы хотите разместить несколько веб-приложений, но с разными версиями PHP или некоторые из них со старыми неподдерживаемыми версиями, это возможно.
Для этого вам необходимо установить все требуемые версии PHP. Каждый из них и их модули будут находиться в своей собственной папке версий по ранее указанному пути. Затем вам нужно будет установить php-fpm, который позволит вам указывать каждую отдельную версию PHP в каждом веб-приложении:
apt install libapache2-mod-fcgid5.6 libapache2-mod-php5.6 libapache2-mod-php7.4 php5.6-fpm php7.4-fpm
Затем вам необходимо активировать каждую версию PHP в системе:
systemctl start php5.6-fpm php7.4-fpm
a2enmod actions fcgid alias proxy_fcgi
systemctl restart apache2
После того, как у вас установлены и запущены все PHPS, вы можете просто отредактировать каждую отдельную запись хостинга в файле конфигурации Apache, расположенном в /etc/apache2/sites-available. Отредактируйте каждый файл website .conf, добавив.
В этом примере у нас есть demo.conf и demo1.conf, которые представляют собой 2 разных веб-приложения:
Мы надеемся, что это поможет и упростит вам установку неподдерживаемой старой версии PHP на ваш сервер.
Конечно, это не то, что настоятельно рекомендуется, поскольку поддержка была прекращена и могут возникнуть проблемы с безопасностью и стабильностью. Но если, как в нашем случае, нет возможности использовать последнюю поддерживаемую версию, это способ решить проблему очень чистым и простым в обслуживании методом.