Saturday, June 23, 2007

How to Install eAccelerator on server

How to Install eAccelerator on server::::

Question: What is eAccelerator ?

Answer : eAccelerator is a free open-source PHP accelerator, optimizer, and dynamic content cache. It increases the performance of PHP scripts by caching them in their compiled state, so that the overhead of compiling is almost completely eliminated. It also optimizes scripts to speed up their execution. eAccelerator typically reduces server load and increases the speed of your PHP scripts.

eAccelerator has been reported to compile on Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, AIX and HP-UX.

Requirements :

* php4 or php5
* autoconf
* automake
* libtool
* m4

eAccelerator only works with mod_php or php in fastcgi mode. It can't be used in cgi or cli because eAccelerator needs to set up shared memory, and this can only be done when all php instances that need to access it are forks of the first process.


Following are the steps to install eAccelerator:

step 1: Download from http://eaccelerator.net/ and install.

Compiling eAccelerator: You need to run these commands in the eAccelerator source directory. eAccelerator supports multiple php branches so you need to bootstrap eAccelerator first. This can be done with the phpize script. It very important that you use the phpize script of the php version for which you want to compile eAccelerator. The phpize and php-config scripts are available in the development packages of your distro. For fedora this is php-devel, for debian php-dev, other distribution should be similar.

When you have only one php install, it's safe to run these commands in the source directory:

phpize
./configure
make

The phpize and php-config are the ones that are in your path. When you have more then one php install or the phpize and php-config scripts aren't in your path then you should follow this procedure. This example has php installed in /opt/php, this is the path of the --prefix option given to the php configuration script.

export PHP_PREFIX="/opt/php"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make


Step 2. Installing eAccelerator :

make install

This will copy the previously created eAccelerator binary to the php extension directory. When this command ends, it will print out the directory in which eAccelerator has been installed.


Step 3. Configuring eAccelerator :

eAccelerator can be installed both as Zend or PHP extension. When you install eAccelerator as a zend_extension you need to give the full path to the eaccelerator.so library.

If you have /etc/php.d directory, you should copy eaccelerator.ini to it and modify the default values. If not, you need to edit your php.ini file (usually /etc/php.ini).

To install as Zend extension:

zend_extension="/usr/lib/php4/eaccelerator.so"
eaccelerator.shm_size="16"
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"

If you use a thread safe build of PHP you must use "zend_extension_ts" instead of "zend_extension".

To install as PHP extension:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
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"


Step 4. Creating cache directory :

One last very important step is creating the cache directory that you configured in the previous step. The default value is /tmp/eaccelerator It's easy because it's writable to everyone, but it isn't very smart because on a lot of systems this directory is cleaned on reboot. A better place would be /var/cache/eaccelerator. Create the directory and make sure it's writable for the user eAccelerator runs under (usually the user which you webserver runs as).

A safe bet is making it world writable. A safer and cleaner way would be to change the owner of the directory to the same user PHP runs as (most of the time the same user as Apache or Lighttpd) and set 0644 permissions.


mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator



You can check after installing using the command :

php -v

PHP 4.4.6 (cli) (built: May 3 2007 19:59:39)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.4, Copyright (c) 2004-2004 eAccelerator, by eAccelerator
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.2.8, Copyright (c) 1998-2007, by Zend Technologies
Reply With Quote