Web-server = Nginx + PHP, установка PHP

Материал из ИНФОвики
Перейти к: навигация, поиск

Здесь даются инструкции для установки PHP версий 5.2.* в ОС типа Linux (сами инструкции работают под CentOS и Fedora без изменений и предполагают, что используется 64-битная версия. См. статью про установку Web-среды: Web-server = Nginx + PHP.

Содержание

Предварительные замечания

Я использую именно версии 5.2.*, поскольку эта статья написана по мотивам создания Web-среды для Drupal 6.*, а эта CMS не полностью совместима с PHP 5.3.*. Но в целом и общем подход ровно такой же, с точностью до тонкости конфигурации.

Я предполагаю, что вы размещаете собранные компоненты по адресам вида

/usr/local/package-v.vv.vvvv

(в имя каталога входит версия), а также создаёте символическую ссылку вида

/usr/local/package

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

Скачать и распаковать дистрибутивы

Я храню последние версии дистрибутивов у себя на CDN-ресурсах, но вам имеет смысл, если вы обеспокоены вопросами аутентичности, скачать дистрибутив с сайта PHP.

PHP 5.2.17: php-5.2.17.tar.bz2

mkdir -p /usr/local/src/arc
mkdir -p /usr/local/src/install
cd /usr/local/src/arc
wget -c http://download.boyandin.info/linux/web/src/php-5.2.17.tar.bz2

Я предполагаю, что вы храните дистрибутивы в /usr/local/src/arc, а распаковываете в каталоге /usr/local/src/install - но делайте так, как вам самим удобнее. Это изменит только имена каталогов в командах ниже.

Скачиваем дополнительные дистрибутивы, re2c и lemon (необязательно).

wget -c http://download.boyandin.info/linux/web/src/lemon-1.0.20090718.tar.gz
wget -c http://download.boyandin.info/linux/web/src/re2c-0.13.5.tar.gz

Установка дополнительных пакетов

Этот шаг необязательный, но может помочь улучшить эффективность работы компонент (модулей) PHP.

Установка re2c:

cd /usr/local/src/install
tar zxf ../arc/re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure 1> configure.out 2> configure.err
make 1> make.out 2> make.err
make install 1> make-install.out 2> make-install.err

Убедитесь, что в .err файлах нет ничего серьёзнее безобидных предупреждений и информационных сообщений.

Установка lemon:

cd /usr/local/src/install
mkdir lemon
cd lemon
tar zxf ../../arc/lemon-1.0.20090718.tar.gz
gcc -o lemon lemon.c
cp lemon /usr/bin

Установка PHP

cd /usr/local/src/install
tar jxf ../arc/php-5.2.17.tar.bz2
cd php-5.2.17

Теперь конфигурируем дистрибутив:

./configure \
 --prefix=/usr/local/php-5.2.17-cgi \
 --with-libdir=lib64 \
 --enable-bcmath \
 --enable-calendar \
 --enable-ftp \
 --enable-magic-quotes \
 --with-mysqli=shared,/usr/bin/mysql_config \
 --with-mysql=shared \
 --with-openssl=shared \
 --with-kerberos \
 --with-pear \
 --enable-sockets \
 --with-zlib=shared \
 --with-curl=shared \
 --with-gd=shared \
 --with-jpeg-dir=shared,/usr \
 --enable-mbstring \
 --with-iconv=shared \
 --with-imap=shared \
 --with-imap-ssl=shared \
 --with-ldap=shared \
 --with-ldap-sasl \
 --enable-pcntl \
 --enable-sysvshm \
 --enable-sysvsem \
 --enable-sysvmsg \
 --with-freetype-dir=/usr \
 --with-mcrypt=shared \
 --with-gettext=shared \
 --enable-cgi \
 --enable-fastcgi \
 --enable-force-cgi-redirect 1> ./configure.out 2> ./configure.err

По завершении посмотрите содержимое configure.err, там не должно быть ошибок — если все пакеты были установлены. Теперь сборка и установка:

make 1> make.out 2> make.err
make install 1> make-install.out 2> make-install.err

Убедитесь, что в файлах .err нет сообщений об ошибках. Если сборка и установка прошли успешно, осталось добавить каталог с исполняемыми файлами в путь. Вначале создаём символическую ссылку:

cd /usr/local
ln -s php-5.2.17-cgi php

Теперь рекомендуется добавить /usr/local/php/bin в путь. Проще всего это сделать глобально, в файле /etc/profile. Для этого допишите в конец файла строку

export PATH=$PATH:/usr/local/php/bin

Внимание: не забудьте создать устраивающий вас вариант php.ini в каталоге /usr/local/php/lib. Команда

php --ini

укажет, какие конфигурационные файлы используются, а команда

php -m

позволит увидеть список установленных модулей.

Установка PHP 5.2 + FPM

После проведённых испытаний, я выбрал php-fpm в качестве FCGI-сервера. Пакет php-fpm, начиная с версии PHP 5.3.3, включен в основной дистрибутив; чтобы включить его в PHP 5.2, потребуется несколько дополнительных действий и одна дополнительная строка в команде конфигурирования.

Инструкции даны для версии 5.2.17, которая объявлена последней в ветке PHP 5.2. Ссылку на правильный патч можно найти на сайте php-fpm (см. выше), в начале этой страницы указана полная ссылка на мою копию этого архива.

Вначале установите re2c и lemon (см. выше), затем убедитесь, что загружен пакет autoconf213.

cd /usr/local/src/install
tar jxf ../arc/php-5.2.17.tar.bz2
cp /usr/local/src/arc/php-5.2.16-fpm-0.5.14.diff.gz .
gunzip php-5.2.16-fpm-0.5.14.diff.gz
patch -d php-5.2.16 -p1 < php-5.2.16-fpm-0.5.14.diff
export PHP_AUTOCONF=/usr/bin/autoconf-2.13
export PHP_AUTOHEADER=/usr/bin/autoheader-2.13
cd php-5.2.16
./buildconf --force

После этого переходите к конфигурированию (вызов ./configure) и остальным шагам, упомянутым выше. Добавьте вот эту строку в конфигурирования:

--enable-fpm

Особенности конфигурирования для PHP 5.3.x

Для ветви PHP 5.3.x все упомянутые процедуры выглядят точно так же (патч для php-fpm не нужен, поскольку этот пакет уже включен), за исключением того, что параметры configure

--enable-fastcgi
--enable-force-cgi-redirect

уже не поддерживаются и их указывать не нужно. Таким образом, запуск конфигуратора будет выглядеть примерно так:

./configure \
 --prefix=/usr/local/php-5.3.10-cgi \
 --with-libdir=lib64 \
 --enable-bcmath \
 --enable-calendar \
 --enable-ftp \
 --enable-magic-quotes \
 --enable-pdo \
 --with-mysqli=shared,/usr/bin/mysql_config \
 --with-mysql=shared \
 --with-pdo-sqlite \
 --with-pdo-mysql=shared \
 --with-openssl=shared \
 --with-kerberos \
 --with-pear \
 --enable-sockets \
 --with-zlib=shared \
 --with-curl=shared \
 --with-gd=shared \
 --with-jpeg-dir=shared,/usr \
 --enable-mbstring \
 --with-iconv=shared \
 --with-imap=shared \
 --with-imap-ssl=shared \
 --with-ldap=shared \
 --with-ldap-sasl \
 --enable-pcntl \
 --enable-sysvshm \
 --enable-sysvsem \
 --enable-sysvmsg \
 --with-freetype-dir=/usr \
 --with-mcrypt=shared \
 --with-gettext=shared \
 --with-gmp=shared \
 --enable-fpm \
 --enable-cgi 1> ./configure.out 2> ./configure.err

(в случае, если вы ставите PHP 5.3.10)

Вернуться к статье про установке Web-среды.

комментарии поддерживаются Disqus