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На этом всё...





