Что по-русски означает, что eAccelerator работает только, если PHP подключен как модуль Апача либо как FastCGI.
Будем ставить версию 0.9.6.1
Ставим все необходимое для сборки:
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
phpize
./configure
make install
Очищаем систему после сборки
apt-get remove php5-dev
cd
rm -rf /usr/src/eaccelerator-0.9.6.1
rm -f /usr/src/eaccelerator-0.9.6.1.tar.bz2
Кстати, крайне рекомендую обратить внимание на файлик control.php в дистрибутиве, который предназначен для управления и мониторинга eAccelerator :) (спасибо Котеровским наблам, где это упомянуто)
--prefix тут, к сожалению, не работает, т.к. configure берет путь до библиотек из:
php-config --extension-dir
/usr/lib/php5/20060613
Создаем конфиг файл:
vi /etc/php5/conf.d/eaccelerator.ini
Вариантов подключения к PHP два - Zend Extension и обычное расширение, мне почему-то второй больше импонирует.
Вот стандартный конфиг:
extension="eaccelerator.so"
# eaccelerator.shm_size="16" # иначе получите проблемы на своем VPS
eaccelerator.cache_dir="/tmp/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="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
А вот мой оптимизированный:
extension="eaccelerator.so"
; размер shm памяти в мегабайтах
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/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"
Создаем папки для кэша (тут, как понимаете, будут проблемы с FastCGI, т.к. в нем скрипты работают от имени юзеров, а не от имени Апача, как это победить - я хз пока что). Кстати, в случае SHM памяти все будет очень безопасно по причине, что shm блоки будут создаваться от имени пользователя, от которого запускается скрипт. Так что самый лучший вариант в случае FastCGI - отключение файлового кэша и расположение скомпилированного кода только в shm.
Это в случае использования только shm не требуется:
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
А испытать работоспособность можно командой:
php -m | grep eAcc
eAccelerator
И, наконец, перезапускаем Апача:
/etc/init.d/apache2 restart
Также в результате может сломаться phpmyadmin, фиксить его так: http://phpsuxx.blogspot.com/2009/11/g-phpmyadmin.html
Основано на: http://www.eaccelerator.net/wiki/InstallFromSource
Обращаю внимание, в мане баг! В Дебияне /tmp/eaccelerator будет удалена при ребуте.
Также обращаю внимание, что при устанвоке размера памяти SHM более 32 бегабайт возможен облом в виде:
eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.
Это, конечно, тоже фиксится, но нужно немного подтюнить ядро :)
А prefix при сборке PHP на директорию с модулями и не влияет. Проще всего после configure в ходе сборки основного бинаря отредактировать scripts/php-config задав нужный extension_dir (он там в районе десятой строки). А потом при configure используем with-php-config=путь_до_php-config. И все, после make install модуль встанет в указанную диру.
ReplyDeleteПо поводу кэша. Стики бит не? Опять же в контексте фаста есть php-fpm (да, да, да, студенческая поделка, то да сё... лесом, лееесом; ибо работает и гуд!) которые позволяет задавать свои настройки для юзера, опять же в 5.3 user php.ini еще ни кто не отменял.
Ну у меня не самособорка же, стандартный дебовский ПХП :)
ReplyDelete"Также обращаю внимание, что при устанвоке размера памяти SHM более 32 бегабайт возможен облом в виде"
ReplyDeleteПаш, это не когда более 32 мегабайт, а когда более числа, указанного в /proc/sys/kernel/shmmax
А там и указано 32 мегабайта.
ReplyDeleteДо 64 спокойно подкручивается.
ReplyDeleteя у себя до 64 крутил.
http://dragonflybsd.blogspot.com/2010/10/php.html
kern.ipc.shmall=65536
kern.ipc.shmmax=268435456
Это во фре, в лине как-то аналогично будет.
Ну это да, никто не спорит, на лично точно также - нужно лишь ядро подтюнивать :)
ReplyDeleteЧтобы все в одном месте было:
ReplyDeleteдля CentOS нужно делать тоже самое, только вместо шага:
apt-get install -y php5-dev bzip2 make
сделать:
yum install php-devel
yum groupinstall 'Development Tools'
Паш, пожалуйста, поправь путь к кэшу на /var/cache/eaccelerator:
ReplyDelete"Это в случае использования только shm не требуется:
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator"
И в конфиге тоже соответственно.
Здравствуйте,
ReplyDeleteВозникла проблема с установкой eAccelerator 0.9.6.1 на Debian Lenny
Скачал исходники, распаковал, вошел в распакованную папку, ввожу команду "phpize" и мне выдается вот это:
server:/tmp/eaccelerator-0.9.6.1# phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
cp: cannot stat `libtool.m4': No such file or directory
cp: cannot stat `ltmain.sh': No such file or directory
cat: ./build/libtool.m4: No such file or directory
configure.in:8: warning: LT_AC_PROG_SED is m4_require'd but not m4_defun'd
aclocal.m4:2634: PHP_CONFIG_NICE is expanded from...
configure.in:8: the top level
configure.in:151: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure:1894: error: possibly undefined macro: LT_AC_PROG_SED
Пакет php5-dev у меня стоит, к сожалению своими силами разобраться не получается... Надеюсь на вашу помощь.
PHP из репозитория?
ReplyDeletePHP не из штатного репозитария, а из репозитария Dotdeb.
ReplyDeleteПроблема решилась, выяснилось что у меня не стоял пакет "libltdl3-dev", и а у пакета "libtool" почему то не хватало несколько папок с файлами, наверно ранее он был установлен не корректно.
В итоге после этих манипуляций все заработало:
apt-get install libltdl3-dev
apt-get remove libtool (так же удалился и php5-dev)
apt-get install libtool
apt-get install php5-dev
Теперь все в полном порядке.
Подскажи, как быть тогда с /tmp
ReplyDeleteчтоб не удаляло папку при перезагрузке сервера?
У меня на debina 6 не вышло
ReplyDelete./configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... no
checking for gcc... no
configure: error: in `/usr/src/eaccelerator-0.9.6.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
web-master:/usr/src/eaccelerator-0.9.6.1# php -m | grep eAcc
Zend Optimizer requires Zend Engine API version 220060519.
The Zend Engine API version 220090626 which is installed, is newer.
Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Optimizer.
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/eaccelerator.so' - /usr/lib/php5/20090626+lfs/eaccelerator.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/memcache.so' - /usr/lib/php5/20090626+lfs/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
Warning: Directive 'register_long_arrays' is deprecated in PHP 5.3 and greater in Unknown on line 0
Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
Евгений, мой опыт использования дотеб сводится к тому, что его использовать НЕ стоит.
ReplyDeletebenya, просто выбрать иную папку, /tmp чистится скриптами инициализации операционной системы.
Спасибо, очень помогли настроить акселератор на впс-ке
ReplyDeleteС моим конфигом php-fpm не хотел стартовать, а с вашим запустился!