Несколько версий PHP в VestaCP и Ubuntu
название сайта
Авторизация

Несколько версий php в VestaCP или мульти php Ubuntu

+2
Вебмастер6 комментариев
Мульти php на VestaCP Ubuntu -картинка


  1. Как работает менеджер версий php?
  2. Как взаимодействовать с php менеджером?
  3. Как проверить версию php на сервере и сайте?

Привет читатель, не так давно на просторах интернета наткнулся на прекрасный скрипт облегчающий внедрение в VestaCP нескольких версий php. Хочется отметить, что скрипт в первую очередь делался для Debian, но и с Ubuntu так же будет работать (правда с одним но). Сегодня убедимся в работоспособности скрипта на Ubuntu 16.04.
Особенности для Debian: скрипт собирает версии 5.2 и выше.
Особенности для Ubuntu: скрипт собирает версии 5.3 и выше. Для 5.2 выдает ошибку, поэтому, если вам требуется 5.2, используете Debian.

Что нам потребуется:
  1. Операционка Debian или Ubuntu
  2. Установленная VestaCP
  3. Модуль апача cgi (установлен по умолчанию)
  4. SHH доступ к серверу.

Внимание! По всей видимости Deban 9 не поддерживается!

Как работает менеджер версий php в VestaCP?


  1. Вводим нужные нам версии php через пробел с указанием точного номера (к примеру 5.6 не правильно, 5.6.30 - правильно)
  2. Потом скрипт просматривает http://php.net/downloads.php и http://php.net/releases/ на предмет наличия архивов с указными версиями php. Если находит. то скачивает и распаковывает в /opt/php/src. Этот этап можно пропустить, если сразу положить исходные файлы в /opt/php/src/bzips.
  3. Скрипт ставит нужные зависимости, без которых скрипт не может работать. Эта процедура проводится один раз при первом запуске, при последующих ее следует пропускать.
  4. Создает шаблоны для Apache, которые потом легко можно включить в панеле VestaCP.

Как взаимодействовать с php менеджером?



  1. Прежде всего загрузим и запустим менеджер под root.

    git clone https://github.com/petranikin/mgrvphp.git
    cd mgrvphp
    bash mgrvphp
  2. Вводим через пробел нужные версии php (помните: 7.17.1.4), номера версий можно найти на сайте http://php.net/releases, пример ввода указан на скрине ниже.

    VestaCP, несколько версий php или мульти php на Debian и Ubuntu - иллючтрация
  3. Создавать ли ссылки в /usr/bin для быстрого доступа к файлам? Видимо скрипт может работать не правильно если не создать ссылки, по этому нажимаем Y.  В результате вы получите следующее: VestaCP, несколько версий php или мульти php на Debian и Ubuntu - изображение

  4. Создавать шаблон VestaCP для каждой указанной версии? Нажимаем да У.
  5. Далее вас спросят устанавливать ли зависимости? Тут обязательно жмет да У, т. к. это первый запуск скрипта на сервере.
  6. После этого остается только ждать. Установка займет какое-то время, много зависит от конфигурации сервера и количества шаблонов (у меня заняло более 30 минут).
  7. Как только установка завершится можно перейти в панель у установить нужный шаблон.

В списке шаблонов вы скорее всего увидите php71 и php71-fcgid. Это не ошибка. Просто php71 сделан на основе шаблона Vesta php-cgi, а  php71-fcgid на основе шаблона phpfcgid. Выберите то, что вам больше подходит.


Как проверить версию php на сервере и сайте?


Теперь давайте проверим успешность нашего труда.
  1. Создаем файл phpinfo.php
    Открываем его текстовым редактором и вводим следующее:
    <?php
    phpinfo();
    ?>
  2. Загружаем файл в корень сайта → открываем файл в браузере и смотрим на сменную версию php.

Проверить версию php, установленную по умолчанию, можно с помощью консольной команды:

php -v


Выбор версии PHP в VestaCP


Выбор версии php в VestaCP - иллюстрация




Так выглядит проверка версии PHP  в браузере.

Так выглядит проверка версии PHP в браузере - иллюстрация



Скрипт по установки мульти PHP в VestaCP закончил работу.

Скрипт по установки мульти PHP в VestaCP закончил работу - картинка



Данная статья была позаимствована на ресурсе pupi-boy.ru.

Единственная сложность возникшая при использовании данного скрипта в Ubuntu 16.x, был недокачаный файл php-5.6.30.tar.bz2 и как следствие вот такая ошибка.

bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
/opt/php/src/php-5.6.40/options.sh: No such file or directory
sed: can't read /opt/php/src/php-5.6.40/options.sh: No such file or directory
mgrvphp: line 113: cd: /opt/php/src/php-5.6.40/: No such file or directory
bash: options.sh: No such file or directory
rm: cannot remove '/opt/php/src/php-5.6.40/options.sh': No such file or directory


Размер PHP - php-5.6.30.tar.bz2 должен быть порядка 14-16 мб. Файл был загружен ручками в /opt/php/src/bzips, после чего установка была благополучно завершено. 

cd /opt/php/src/bzips
wget https://museum.php.net/php5/php-5.6.30.tar.bz2


Второй фикс который пришлось сделать в Ubuntu 18.04.

При установки php 5.6.30 ошибка

configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

Пофиксил созданием симлинка.

cd /usr/include
sudo ln -s /usr/include/x86_64-linux-gnu/curl curl


Третий фикс скрипта


Ошибка выглядит так:

Makefile:542: recipe for target 'ext/openssl/openssl.lo' failed make: *** [ext/openssl/openssl.lo] Error 1


Для решения данной проблемы надо установит старую версию OpenSSL.

cd /usr/src
wget https://www.openssl.org/source/openssl-0.9.8zb.tar.gz
tar xfvz openssl-0.9.8zb.tar.gz
cd openssl-0.9.8zb
mkdir /usr/local/sslold
./config --prefix=/usr/local --openssldir=/usr/local/sslold
make
make install
 
Далее нужно внести изменения в файл "options" лежащий в директории со скриптом. 

Найти:
--with-openssl=/usr
 
Заменить на:
--with-openssl-dir=/usr/local/sslold

Запустить скрипт повторно:
bash mgrvphp


Перезагрузив Apache получил мульти PHP в VestaCP.
Читайте также

Отметьте картинки:*
  1. Гость
    Гость
    1 марта 2023 19:55
    Больше не рабоает

    Больше не рабоает


    root@srv:~/mgrvphp# bash mgrvphp
    You can enter multiple versions through 'space'.
    Enter php version/versions(for example 5.6.30):
    >7.1.33
    Create simlinks in /usr/bin?(y/N)
    >y
    Create VestaCP web templates?(y/N)
    >y
    Start install PHP 7.1.33
    --2023-03-01 19:50:15--  https://anikin.pw/files/options
    Resolving anikin.pw (anikin.pw)... 91.194.3.9
    Connecting to anikin.pw (anikin.pw)|91.194.3.9|:443... connected.
    HTTP request sent, awaiting response... 404 Not found
    2023-03-01 19:50:15 ERROR 404: Not found.

    make: *** No targets specified and no makefile found.  Stop.
    make: *** No rule to make target 'install'.  Stop.
    Ops. Something is wrong..
    root@srv:~/mgrvphp#

    1. thin
      2 марта 2023 12:18
      Видимо уже не работает. Убирают уже везде поддержку 5.6. ((
  2. Олег
    7 сентября 2021 13:04
    Спасибо помогло  kissing  kissing 
  3. Руслан Кропачев
    14 июня 2021 19:11
    Чювак, где ты? я тебя расцелую. СПАСИБИЩЕ!!!!!
    1. thin
      15 июня 2021 09:29
      Спасибо за позитивчик!  smirk 

      На сколько я помню, данный скрипт уже давно не справляется со своими задачами. Рекомендую вот это решение https://new.thin.kiev.ua/linux/32-php-selektor-ubuntu.html
      1. Руслан Кропачев
        15 июня 2021 15:17
        Спасибо!!! Я допиливал, а так коряво работающее решение, но работающее.
new.thin.kiev.ua
Авторизация