29.04.2012

Сборка eAccelerator под Debian

Для начала установим необходимые пакеты для сборки PHP и вообще сборки пакетов:
apt-get install php5-dev dh-make autotools-dev gcc-4.3 debhelper devscripts
Так же нужно учесть одну особенность eAccelerator - он будет работать только с той версией PHP, с которой был собран. Если у Вас на тестовом сервере одна версия PHP, например 5.3.3-7+squeeze3,  а на продакшене 5.3.3-7+squeeze8, то eAccelerator не заведется и будет выкидывать такую ошибку:
[eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.3.3-7+squeeze3. Rebuild it for your PHP version (5.3.3-7+squeeze8) or download precompiled binaries.

Чтобы этого избежать, нам надо подтянуть версию на тестовой машине до сервера, где будет использоваться eAccelerator:
apt-get install php5=5.3.3-7+squeeze8 php5-dev=5.3.3-7+squeeze8
Переходим в директорию, где будем работать:
cd /usr/src
Скачиваем туда тарбол с исходниками.

Распаковываем его:
unzip eaccelerator-0.9.6.1.zip
Так как все расширения PHP принято обзывать php5-extention (например php5-tidy, php5-memcached, php5-mysql и т.д.), а имя/версия пакета будет создано на основе имени директории, то переименуем директорию:
mv eaccelerator-0.9.6.1 php5-eaccelerator-0.9.6.1
Заходим в распакованную директорию:
cd php5-eaccelerator-0.9.6.1

Открываем конфиг и настраиваем под себя. Я, например, люблю когда кэш лежит там где он должен лежать по FHS - в /var/cache, а не в /tmp. А еще нужно поправить путь к логу, потому что у нас Debian, а там CentOS-вский путь:
vi eaccelerator.ini

Далее нужно PHP-зировать пакет - подогнать под API PHP:
phpize
И теперь уже можно его конфигурировать:
./configure --with-eaccelerator-debug


Теперь скомпилируем нашу библиотеку eaccelerator.so:
make
******************* НЕОБЯЗАТЕЛЬНЫЙ ЭТАП *********************

Если хочется управлять этим хозяйством через web-интерфейс, то создадим еще виртхост для Apache:
cat > eaccelerator.conf

Alias /eaccelerator /var/www/eaccelerator/
<Directory /var/www/eaccelerator>
    AllowOverride All
    DirectoryIndex control.php
    FCGIWrapper /var/www/roundcube/php-bin/php .php
    Options +ExecCGI
    AddHandler fcgid-script .php
</Directory><Location /eaccelerator>
    Order allow,deny
    Deny from all
    Allow from 111.222.123.231

<
/Location>



Здесь я указываю Deny from all для секьюрности. Но потом по месту свой IP вставите.
Кроме того здесь нет ничего о хэндлерах PHP - опять же у каждого свое и универсального совета не бывает.

*********** КОНЕЦ НЕОБЯЗАТЕЛЬНОГО ЭТАПА ********************


А теперь сама дебианизация:
dh_make -s --indep --createorig
Так как make мы уже руками сделали, то удаляем новые вызовы make:
grep -v makefile debian/rules > debian/rules.new
mv debian/rules.new debian/rules
Также нам надо вписать какие конкретно файлы войдут в пакет и в какую директорию они упадут в системе, где этот пакет будет устанавливаться (строчку eaccelerator.conf нужно пропустить, если Вы не проходили необязательный этап):
cat > debian/install

modules/eaccelerator.so usr/lib/php5/20090626
eaccelerator.ini etc/php5/conf.d
control.php var/www/eaccelerator
eaccelerator.conf etc/apache2/conf.d
Теперь отказываемся от quilty:
echo "1.0" > debian/source/format

А еще нам надо не забыть, что у нас кэш будет складываться в ту директорию, которая указана в файле eaccelerator.ini, который мы недавно правили. Поэтому создадим пост-установочный скрипт, который после установки пакета создаст нам эту директорию:
cat > debian/postinst

#!/bin/bash

mkdir /var/cache/eaccelerator
chmod 777 /var/cache/eaccelerator
Теперь попробуем собрать пакетик:
debuild -us -uc
И вот он получился:
ls -l ../*deb





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

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