eAccelerator — это свободный открытый проект, выполняющий роль акселератора, оптимизатора и распаковщика. Также встроены функции динамического кэширования контента. Есть возможность оптимизации PHP-скриптов для ускорения их исполнения.
Устанавливаем eAccelerator на сервер под управлением Debian Lenny. К сожалению в репозитории его нет, по этому будем компилировать из исходников. На момент написания мануала последняя версия - 0.9.6.1. В исходном коде есть баг, проявляющийся на Debian в виде ошибки, выглядящей примерно так:
PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s);
Не буду говорить о других ОС, но именно с Lenny возникли проблемы. На Ubuntu Natty проблем не обнаружено. В процессе установки на Debian решим эту проблему превинтивно, правкой исходников.
Важно: В моём случае PHP работает как модуль Apache. На сайте разработчиков говорится, что eAccelerator так же может работать с PHP в режиме FastCGI. Не буду говорить за FastCGI, но в моём случае всё работает.
Приступим... Устанавливаем необходимое
apt-get install -y php5-dev bzip2 make
Переходим в директорию:
cd /usr/src
Скачиваем исходники
wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
Распаковываем архив
tar -xf eaccelerator-0.9.6.1.tar.bz2
Переходим в папку с исходниками
cd eaccelerator-0.9.6.1
Далее правим возникший на Lenny баг. редактируем файл eaccelerator.c
nano /usr/src/eaccelerator-0.9.6.1/eaccelerator.c
Строка 867.
if (php_check_open_basedir(realfilename TSRMLS_CC)) {
Заменяем её на
if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {
Сохраняем результат и выходим из редактора.
Компилируем
phpize
./configure
make
Прверяем
make test
Если всё OK, то устанавливаем
make install
Удаляем мусор после сборки
rm -rf /usr/src/eaccelerator-0.9.6.1
rm -f /usr/src/eaccelerator-0.9.6.1.tar.bz2
Создаём директорию для кэша
mkdir /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Создаём и настраиваем конфигурационный файл
nano /etc/php5/conf.d/eaccelerator.ini
Содержание:
extension="eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="1"
eaccelerator.compress="0"
eaccelerator.compress_level="9"
Проверяем работоспособность
php -m | grep eAcc
Если всё ОК, то перезагружаем Apache
/etc/init.d/apache2 restart
На этом всё...