27 ноября 2017

Установка и настройка PHPBrew

PHPBrew - позволяет собрать и установить несколько различных версий PHP.

Установка зависимостей Ubuntu 14.04

В терминале выполняем команды:
sudo apt-get update
sudo apt-get build-dep php5
sudo apt-get install php5 php5-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php5-cli bison libbz2-dev libreadline-dev
sudo apt-get install libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8  libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install gettext libgettextpo-dev libgettextpo0
sudo apt-get install libicu-dev
sudo apt-get install libmhash-dev libmhash2
sudo apt-get install libmcrypt-dev libmcrypt4
sudo apt-get install mysql-server mysql-client libmysqlclient-dev libmysqld-dev

Ubuntu 16.04

apt install \
  php7.0 \
  php7.0-curl \
  php7.0-json \
  php7.0-cgi \
  php7.0-fpm \
  autoconf \
  automake \
  libxml2-dev \
  libcurl4-openssl-dev \
  libssl-dev \
  openssl \
  gettext \
  libicu-dev \
  libmcrypt-dev \
  libmcrypt4 \
  libbz2-dev \
  libreadline-dev \
  build-essential \
  libmhash-dev \
  libmhash2 \
  libxslt1-dev

Установка PHPBrew в system-wide environment

Для начала логинимся как root:
sudo -i
Выполняем команды:
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
mv phpbrew /usr/local/bin/phpbrew
Инициализируем PHPBrew:
phpbrew init
Редактируем ~/.phpbrew/init:
nano ~/.phpbrew/init
Вставляем следующие строки:
# Export PHPBrew paths.
export PHPBREW_ROOT=/opt/phpbrew
export PHPBREW_HOME=/root/.phpbrew
Выполняем команду:
. ~/.phpbrew/bashrc
Устанавливаем system-wide PHP(s):
phpbrew install 5.5 +default +mysql +pdo +apxs2 +icu +intl -- --with-mysql-sock=/var/run/mysqld/mysqld.sock
phpbrew install 5.6 +default +mysql +pdo +apxs2 +icu +intl -- --with-mysql-sock=/var/run/mysqld/mysqld.sock
phpbrew install 7.0 +default +mysql +pdo +apxs2 +icu +intl -- --with-mysql-sock=/var/run/mysqld/mysqld.sock
Копируем ~/.phpbrew/bashrc в /opt/phpbrew/bashrc:
cp ~/.phpbrew/bashrc /opt/phpbrew/bashrc
Редактируем /etc/bash.bashrc:
nano /etc/bash.bashrc
Вставляем следующие строки:
# Export PHPBrew paths.
export PHPBREW_ROOT=/opt/phpbrew
export PHPBREW_HOME=$HOME/.phpbrew

# PHPBrew difinitions.
if [ -f /opt/phpbrew/bashrc ]; then
  . /opt/phpbrew/bashrc
fi
В терминале выполняем команду:
. ~/.bashrc
Устанавливаем расширения для всех утснановленных PHP(s):
phpbrew each 'ext install gettext'
phpbrew each 'ext install ftp'
phpbrew each 'ext install gd -- --with-libdir=lib/i386-linux-gnu --with-gd=shared --enable-gd-native-ttf --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr'
Конечно же не обязательно устанавливать каждую версию PHP. Устанавливайте только те версии, которые вам нужны.
Переключаем PHP версию:
phpbrew switch 5.6.21
Следующий шаг необязательный. Но если вы следовали всему, что написано и устанавливали php5 и php7, тогда необходимо отредактировать /etc/apache2/mods-available/php7.load:
nano /etc/apache2/mods-available/php7.load
И законментировать подключение php7:
#LoadModule php7_module        /usr/lib/apache2/modules/libphp7.0.6.so
Рестартуем apache2:
apachectl restart

Проверка установки PHP

Лучший способ проверить, что PHP установлен и работает - использовать phpinfo().
Выходим из под root. Удаляем ~/websites/index.html:
rm ~/websites/index.html
Далее создаем файл ~/websites/index.php:
echo "<?php phpinfo();" > ~/websites/index.php
Открываем в браузере http://localhost и мы должны увидеть информационную страницу об PHP.

PHP Switcher Script

Для быстрого переключения php и рестарта Apache я написал скрипт.
Создаем директорию ~/bin/:
mkdir -p ~/bin/
Редактируем ~/bin/sphp:
nano ~/bin/sphp
Вставляем код скрипта:
#!/bin/bash

if [ $# -ne 1 ]; then
  echo "Usage: sphp [php version]"
else
  new_version_installed=false

  old_version="`php -r \"echo phpversion();\"`"
  new_version="$1"

  short_old_version="`php -r \"echo substr('$old_version', 0, 1);\"`"
  short_new_version="`php -r \"echo substr('$new_version', 0, 1);\"`"

  module=/usr/lib/apache2/modules/libphp${new_version}.so

  for line in `phpbrew list`; do
    if [ $line == "php-${new_version}" ]; then
      new_version_installed=true
      break
    fi
  done

  if [ $new_version_installed != true ]; then
    echo "PHP version ${new_version} is not installed by PHPBrew."
  elif [ ! -f  $module ]; then
     echo "PHP version ${new_version} is not configured for apache."
  else
     . ~/.bashrc

     echo "PHP version ${new_version} found"

     echo "Switching PHP version..."
     phpbrew switch ${new_version}

     echo "Fixing LoadModule..."
     old_mod=/etc/apache2/mods-available/php${short_old_version}.load
     new_mod=/etc/apache2/mods-available/php${short_new_version}.load

     if [ -f $old_mod ]; then
       echo "" | sudo tee $old_mod > /dev/null
     fi

     if [ -f $new_mod ]; then
       content="LoadModule php${short_new_version}_module ${module}"
       echo $content | sudo tee $new_mod > /dev/null
     fi

     echo "Restarting system Apache..."
     sudo apachectl restart

     echo "Done."
  fi
fi
Делаем скрипт исполняемым:
chmod +x ~/bin/sphp
Редактируем ~/.bash_aliases:
nano ~/.bash_aliases
Вставляем строку в конец файла:
alias sphp='. sphp'
Перезагружаемся. Проверяем, что PATH обновился:
echo $PATH
У меня результатом этой команды оказался такой вывод:
/opt/phpbrew/php/php-5.6.21/bin:/home/benya/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Об успешном обновлении говорит наличие подстроки /home/benya/bin.

Тест переключения PHP

После того, как все эти шаги выполнены, можно переключить версию PHP с помощью команды:
sphp 7.0.6
Открываем в браузере http://localhost и проверяем, что Apache теперь работает с PHP 7.0.6. Переключим версию PHP обратно на 5.6.21:
sphp 5.6.21
Открываем в браузере http://localhost и проверяем, что Apache теперь работает с PHP 5.6.21.
Не забываем, что для установки новых версий PHP или расширений с помощью PHPBrew необходимо залогинится под root.

Часто используемые команды PHPBrew

Список известных версий:
phpbrew known
Список вариантов:
phpbrew variants
Установка PHP с вариантом default:
phpbrew install 5.6 +default
Список установленных PHP версий:
phpbrew list
Настройка активной версии PHP:
phpbrew config
Временно переключиться на системный PHP (модуль Apache нужно переподключать вручную):
phpbrew off
Пермаментно переключиться на системный PHP (модуль Apache нужно переподключать вручную):
phpbrew switch-off
Удалить установленную сборку PHP (если PHP устанавливался с вариантом +apxs2, то модуль необходимо удалить вручную):
phpbrew remove php-5.6.21
Удалить установленную PHP версию и файлы настроек (если PHP устанавливался с вариантом +apxs2, то модуль необходимо удалить вручную):
phpbrew purge php-5.6.21

Расширения PHP(s)

Список локальных расширений:
phpbrew ext
Установка расширения для активной версии PHP:
phpbrew ext install xdebug
Отключение расширения для активной версии PHP:
phpbrew ext disable xdebug
Включение расширения для активной версии PHP:
phpbrew ext enable xdebug
Настройка расширения для активной версии PHP:
phpbrew ext config xdebug

Установленные PHP(s)

Установленные PHP(s) располагаются в /opt/phpbrew/php, например, php 5.6.21 находится в:
/opt/phpbrew/php/5.6.21/bin/php
Файл настроек php.ini находится в:
/opt/phpbrew/php/5.6.21/etc/php.ini
Настройки расширений лежат в:
/opt/phpbrew/php/5.6.21/var/db
/opt/phpbrew/php/5.6.21/var/db/xdebug.ini
/opt/phpbrew/php/5.6.21/var/db/apc.ini
/opt/phpbrew/php/5.6.21/var/db/memcache.ini

Команды для быстрого переключения между директориями

Переключиться в PHP var директорию:
phpbrew cd var
Переключиться в PHP etc директорию:
phpbrew cd etc
Переключиться в PHP build директорию:
phpbrew cd build
Переключиться в PHP dist директорию:
phpbrew cd dist




Официальный источник https://github.com/phpbrew/phpbrew
https://github.com/phpbrew/phpbrew/wiki/Requirement

Комментариев нет:

Отправить комментарий