понедельник, 27 октября 2014 г.

Ubuntu 12.04 Установка php 5.5 + FPM from source

Начало

Данная статья рассказывает, как можно установить PHP-FPM из исходников, связать с Nginx. Необходимость подобной установки вызвана в необходимости использовать несколько версий PHP с Nginx.
Описанная установка справедлива не только для версии 5.5. Версия используется для примера.

Итак. Сперва потребуется скачать архивчик, например, отсюда, распаковать и перейти в директорию с файлами.

Конфигурирование

В процессе конфигурации следует выбрать поддерживаемые модули и включить их в скрипт конфигурации. Так же имеет смысл включить некоторые расширения. Важно, для работы PHP-FPM включить опцию --enable-fpm

Вариант конфигурации:
./configure --prefix=/usr/local/php-5.5 --with-xsl=/usr/include/libxslt --with-curl=/usr/bin/curl --with-mysql --enable-intl --with-tidy=shared --with-mcrypt=shared --enable-fpm --enable-gd-native-ttf --with-mysqli=shared --enable-zip --with-pdo-mysql=shared --enable-soap --enable-mbstring --with-openssl=/usr --with-libdir=/lib/x86_64-linux-gnu
Стоит отметить, что устанавливать все мы будем в директорию, указанную в опции  --prefix. Везде ниже в качестве примера я буду использовать эту директорию.

Компиляция и установка

Если конфигурирование прошло успешно, и все зависимости удовлетворены, запускаем 
  • make, 
  • [make test]  - если есть желание прогнать тесты
  • [sudo] make install - установка. В зависимости от директории установки могут потребоваться права суперпользователя.
После успешной установки можно задать алиас для установленных бинарников, чтобы обращение к ним было короче. 
alias php55="/usr/local/php-5.5/bin/php" - пример для бинарника командной строки
Так же эту строчку можно добавить в ~/.bashrc, чтобы алиас действовал всегда.

Настройка виртуального хоста

Конфигурирование PHP-FPM
Открываем /usr/local/php-5.5/etc/php-fpm.conf . Если его нет, то его нужно создать из конфига по умолчанию php-fpm.conf.default, расположенного в той же директории или скачать, например, отсюда.
Из всевозможных опций, нам интересны следующие:
  • listen = 127.0.0.1:9055 - адрес и порт, на котором будет висеть наш процесс. Адрес можно оставить без изменений для локалхоста, а порт рекомендую нумеровать так: 90. Для версии 5.5 имеем порт 9055.
  • user = atber - имя unix-пользователя (ставьте ваше)
  • group = atber - группа unix-пользователя
Пробуем запустить нашего демона: sudo /usr/local/php-5.5/sbin/php-fpm
Если ничего не произошло  - все ок. В подтверждение этого попробуйте запустить еще раз. Будет ошибка: 
ERROR: unable to bind listening socket for address '127.0.0.1:9055': Address already in use (98), 
Что говорит о том, что наш демон запустился и занял этот адрес.

Конфигурирование виртуального хоста
Открываем настройки интересующего нас хоста. 
Нас интересует секция location ~ \.(cphp|php|php3)$ { В ней важно указать настройки сервера нашего PHP-FPM. В нашем случае это будет строчка 
fastcgi_pass localhost:9055;