четверг, 26 августа 2010 г.

PHP from source

Последнее время часто приходится сталкиваться с nginx + php-fpm.
php-fpm для ветки 5.2 идёт как патч, поэтому пыхпых приходится руками собирать.
Решил свои действия, наконец, на бумажку записать )

Поехали. Качаем, патчим:
wget http://ru2.php.net/get/php-5.2.12.tar.gz/from/this/mirror
wget http://php-fpm.org/downloads/php-5.2.12-fpm-0.5.13.diff.gz
tar xzf php-5.2.12.tar.gz
gzip -cd php-5.2.12-fpm-0.5.13.diff.gz | patch -d php-5.2.12 -p1
Собираем ядро php:

./configure \
  --prefix=/usr/local/php \
  --exec-prefix=/usr/local/php \
  --sysconfdir=/etc \
  --enable-fastcgi \
  --enable-fpm \
  --with-fpm-conf=/etc/php-fpm.conf \
  --with-fpm-log=/var/log/php-fpm.log \
  --with-fpm-pid=/var/run/php-fpm.pid \
  --with-libdir=/lib64 \
  --with-config-file-path=/etc \
  --with-config-file-scan-dir=/etc/php.d \
  --enable-dom \
  --enable-xml
make install
dom и xml можно отсюда выкинуть, просто мне так нужно было.

Дальше в scripts/php-config надо поправить строку --extensions-dir, дабы модули лежали в более удобном месте.
Кладём  php.ini в /etc и меняем в нём путь к модулям на наш.

Cобираем модули:

cd /root/build/php-5.2.12/ext/mysql
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/php \
  --exec-prefix=/usr/local/php \
  --sysconfdir=/etc \
  --enable-fastcgi \
  --enable-fpm \
  --with-fpm-conf=/etc/php-fpm.conf \
  --with-fpm-log=/var/log/php-fpm.log \
  --with-fpm-pid=/var/run/php-fpm.pid \
  --with-libdir=/lib64 \
  --with-config-file-path=/etc \
  --with-config-file-scan-dir=/etc/php.d \
  --enable-dom \
  --enable-xml \
  --with-mysql=shared \
  --with-php-config=/root/build/php-5.2.12/scripts/php-config
make install
echo "extension=mysql.so" > /etc/php.d/mysql.ini
По аналогии собираем другие компоненты.
В во время сборки на понадобятся разные сорсы, gcc и autoconf. В правильных дистрах просто доставляем нужные devel пакеты.

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