Установка нескольких версий php на одном сервере на примере Ubuntu-server

Опубликовано в Ubuntu, Системное администрирование 10.02.2016

Установка нескольких версий php на одном сервер на примере Ubuntu и apache2. Для компиляции версий php буду использовать приложение phpfarm. Чтобы возникло меньше проблем в последующем установим необходимые пакеты

apt-get install gcc libxml2 libxml2-dev libssl-dev libsslcommon2-dev libcurl4-openssl-dev pkg-config libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libreadline-gplv2-dev make php5-cgi libmysqlclient15-dev libapache2-mod-fastcgi a2enmod fastcgi a2enmod actions

Первым делом поставим phpfarm (будем ставить в каталог /etc) перейдем в каталог

cd /etc

Скачаем

git clone https://github.com/fpoirotte/phpfarm.git phpfarm

Перейдем в директорию

cd phpfarm/src/

При необходимости правим options.sh Мой файл выглядит так:

    #!/bin/bash
    # You can override config options very easily.
    # Just create a custom options file in the custom/ directory.
    # It may be version specific:
    # - custom/options.sh
    # - custom/options-5.sh
    # - custom/options-5.3.sh
    # - custom/options-5.3.1.sh
    #
    # Don't touch this file here - it would prevent you from just
    # "svn update"'ing your phpfarm source code.

    version=$1
    vmajor=$2
    vminor=$3
    vpatch=$4

    configoptions="\
    --disable-short-tags \
    --with-layout=GNU \
    --enable-bcmath \
    --enable-calendar \
    --enable-exif \
    --enable-ftp \
    --enable-mbstring \
    --enable-pcntl \
    --enable-soap \
    --enable-sockets \
    --enable-wddx \
    --enable-zip \
    --with-zlib \
    --with-pdo-mysql \
    --with-mysql \
    --with-mysqli \
    --with-mcrypt \
    --with-openssl \
    --with-curl \
    --with-gettext \
    --with-gd \
    --enable-gd-native-ttf \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-libxml-dir \
    --with-xmlrpc \
    --enable-sockets \
    --enable-pcntl \
    --with-readline \
    "

    # --enable-sqlite-utf8 was removed starting with PHP 5.4.0.
    test $vmajor -eq 5 -a $vminor -lt 4
    if [ $? -eq 0 ]; then
    configoptions="\
    $configoptions \
    --enable-sqlite-utf8 \
    "
    fi

    echo $version $vmajor $vminor $vpatch

    configure=`stat -c '%Y' "options.sh"`
    for suffix in "" "-$vmajor" "-$vmajor.$vminor" "-$vmajor.$vminor.$vpatch" "-$version"; do
        custom="custom/options$suffix.sh"
        if [ -e "$custom" ]; then
            tstamp=`stat -c '%Y' "$custom"`
            if [ $tstamp -gt $configure ]; then
                configure=$tstamp
            fi
            source "$custom" "$version" "$vmajor" "$vminor" "$vpatch"
        fi
    done

Дадим права для выполнения сценария установки репозитария:

chmod +x /etc/phpfarm/src/compile.sh

Далее определимся с версией php и установим ее, мой пример 5.6.13

./compile.sh 5.6.13

Далее подготовим для apache2 конфигурационный файл для поднятия отдельного сайта определенной версии php Перейдем в /usr/lib/cgi-bin/

cd /usr/lib/cgi-bin/

Создаем файл php56-cgi

touch php56-cgi

Отредактируем

nano php56-cgi

Приводим к виду (у вас могут быть иные пути, внимательно смотрим):

#!/bin/sh
    PHPRC="/etc/phpfarm/inst/php-5.6.13/"
    export PHPRC
    PHP_FCGI_CHILDREN=4
    export PHP_FCGI_CHILDREN
    PHP_FCGI_MAX_REQUESTS=5000
    export PHP_FCGI_MAX_REQUESTS
    exec /etc/phpfarm/inst/php-5.6.13/bin/php-cgi

Задаем права на выполнение:

chmod +x /usr/lib/cgi-bin/php56-cgi

Идем в папку апач:

cd /etc/apache2

Создаем файл для подключения виртуального хоста и отредактируем его:

touch php56.conf
nano php56.conf

Вот так выглядит содержимое:


    SetHandler application/x-httpd-php5
    
    ScriptAlias /php56-cgi /usr/lib/cgi-bin/php56-cgi
    Action application/x-httpd-php5 /php56-cgi
    AddHandler application/x-httpd-php5 .php

Далее подключаем конфигурационный файл к виртуальному хосту:

cd /etc/apache2/sites-enabled

Измените имя файла на имеющийся у вас виртуальный хост

nano default.conf

Нужно подключить файл конфигурации, делается это через Include , после первой строки с кодом:

Добавим:

Include php56.conf

Перезагружаем апач:

service apache2 restart

идем в директорию сайта, создаем файл phpinfo.php

    

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

Возможные ошибки: При ошибке: configure: error: freetype.h not found

mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h

При ошибке: configure error cannot find mysql header files under

apt-get install libmysqlclient15-dev

Комментарии к посту:

Обсудить на форуме

Установка нескольких версий php на одном сервере на примере Ubuntu-server

Post a reply
30709 views

- of 0

Reply to this discussion

You cannot edit posts or make replies: You should be logged in before you can post.

Поиск по блогу

Блок для рекламы



Яндекс.Метрика
Мы скоро перезвоним вам!