Поиск по сайту:
Молчание — добродетель дураков (Ф. Бэкон).

Настройка сервера LAMP на более старой версии PHP

07.03.2024
Настройка сервера LAMP на более старой версии PHP

Можно настроить сервер LAMP на более старой или неподдерживаемой версии PHP. Вы также можете использовать несколько версий PHP для разных веб-сервисов на одном сервере. Вот что надо сделать.

Пример: допустим вы получили проект для клиента, который использовали экземпляр AWS EC2 для размещения 3 разных веб-сайтов: 2 веб-сайта WordPress и пользовательскую систему на базе CodeIgniter.

В этом EC2 cPanel использовалась для администрирования всего сервера, однако мой клиент не только хотел снизить свои затраты, но также хотел продолжать использовать облако и AWS, поскольку у них уже есть все, что там расположено (куча доменов, приобретенных через регистратора Amazon, службы DNS и SES).

Итак, мы предложили перенести все веб-сайты на экземпляры Lightsail, чтобы таким образом мы могли контролировать затраты на каждый веб-сайт: веб-сайты WordPress были один для производства, а другой для разработки, поэтому нам нужен был дешевый экземпляр стоимостью 3 доллара в месяц для разработки и 5 долларов в месяц для производства.

 

Задача: сервер LAMP, но с PHP версии 5.6 или ниже

Затем я столкнулся с проблемой настройки внутреннего системного сервера LAMP, который использует CodeIgniter версии 3, и поэтому он поддерживает только PHP 5.6 или ниже.

В настоящее время, на момент написания этой статьи, PHP находится на версии 8, что означает, что версии 5.X больше не поддерживаются, и, следовательно, вы даже не можете загрузить их из обычных репозиториев Debian или Ubuntu (которые клиент предпочитает использовать).

Кроме того, установка их из исходного кода означала бы гораздо больше работы и, вероятно, больше проблем, поэтому мне пришлось придумать способ заставить его работать как можно более плавно.

 

Это Linux; всегда есть способ

Это не могло быть необычной проблемой, поэтому я начал копаться в Google, пока не наткнулся на репозиторий ondrej/php.

Читать  8 простых советов по повышению производительности для вашей среды Linux

Итак, это репозиторий, который позволяет вам управлять установкой PHP в вашей системе на базе Debian с помощью обычного PPA. Он также позволяет вам установить несколько версий PHP на один сервер, если вам это необходимо. Он содержит все версии PHP от PHP 5.6 (именно ту, которая мне была нужна) до PHP 8.2 на момент написания этой статьи.

Итак, это означает, что у вас будет доступно множество старых, неподдерживаемых версий, а также самые последние.

В этой статье предполагается, что у вас уже установлены Apache и MySQL/MariaDB, следовательно, здесь не будет указываться настройка сервера LAMP.

В данном случае мы использовали дистрибутив 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, если вы попытаетесь это сделать, вы получите сообщение об ошибке, связанное с некорректным использованием языкового пакета.

 

Только для Debian

Чтобы исправить это, вам нужно сделать:

apt install -y language-pack-en-base

 

Как только это будет сделано, добавьте репозиторий:

 

Только для Ubuntu

add-apt-repository ppa:ondrej/php

 

Теперь вы можете перейти к установке PHP5.6, или 7.X, или 8.X. Если вы не укажете никакой версии, а просто запросите установку PHP, для этого потребуется последний пакет 8.X. Чтобы указать конкретную версию (или несколько одновременно), вы должны указать ее следующим образом:

apt install php5.6

 

Читать  Как проверить, доступен ли пакет в Yum

Как только PHP будет установлен, вы найдете его версию в папке version: /etc/php/

Настройка сервера LAMP на более старой версии PHP

 

Как насчет модулей PHP?

Позже, если вы захотите установить модули для этой конкретной версии PHP, вы будете использовать ту же процедуру с другими модулями, указав версию:

apt install php5.6-bz2 php5.6-mbstring

 

Каждый установленный модуль будет работать только в той версии PHP, для которой вы его установили, и будет заблокирован там. Это связано с тем, что у вас может быть несколько версий PHP, запущенных на одном сервере, и разные веб-приложения, каждое из которых запускает свою собственную версию PHP.

 

Дополнительный материал: Несколько серверов PHP LAMP

Если вы хотите разместить несколько веб-приложений, но с разными версиями 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 разных веб-приложения:

<VirtualHost *:80>

    ServerAdmin admin@demo.com
    ServerName  demo.com
    ServerAlias www.demo.com
    DocumentRoot /var/www/demo.com
    <Directory /var/www/demo.com/>
            Options FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            Require all granted
    </Directory>
        <FilesMatch \.php>
            SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
        </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/err-demo.com.log
    CustomLog ${APACHE_LOG_DIR}/demo.com.log combined
</VirtualHost>

 

demo.conf

<VirtualHost *:80>

    ServerAdmin admin@demo1.com
    ServerName  demo1.com
    ServerAlias www.demo1.com
    DocumentRoot /var/www/demo1.com
    <Directory /var/www/demo1.com/>
            Options FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            Require all granted
    </Directory>
        <FilesMatch \.php>
            SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
        </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/err-demo1.com.log
    CustomLog ${APACHE_LOG_DIR}/demo.com1.log combined
</VirtualHost>

demo1.conf

 

Заключение

Мы надеемся, что это поможет и упростит вам установку неподдерживаемой старой версии PHP на ваш сервер.

Конечно, это не то, что настоятельно рекомендуется, поскольку поддержка была прекращена и могут возникнуть проблемы с безопасностью и стабильностью. Но если, как в нашем случае, нет возможности использовать последнюю поддерживаемую версию, это способ решить проблему очень чистым и простым в обслуживании методом.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


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

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

**ссылки nofollow

Это может быть вам интересно


Рекомендуемое
В современном мире, где технологии развиваются с головокружительной скоростью, поиск…

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: