WHM-cPanel Sunucularda Symfony İçin PHP ve eAccelerator

Var olan sisteminizin yükünü düşürmek istiyorsanız eAccelerator en iyi yöntem diyebilirim. eAccelerator derlenen PHP dosyalarını cache dizinde tutup, tekrar aynı dosyalara istek geldiğinde kodları yeniden derlemek yerine, bu dizindeki derlenmiş kodları httpd ye gönderir.

Yeni bir sisteme başlayacaksanız ve yeterli miktarda ram e ve server a para harcayabiliyorsanız memcached kullanılabilir. Memcached için özetle dağıtık önbellek sistemi diyebiliriz (Distributed Memory Caching System). Memcached’in diğer bir dezavantajı da işin yükünü programcıya bırakmasıdır. Memcached detaylı bir konu olduğu için (WordPress stats eklentisi bile var) daha sonraya bırakıp işimize dönelim.

PHP ile birlikte eAccelerator derlemek için bazı parametreler girmeniz gerekiyor. WHM/cPanel sunucularda bu imkanımız var gibi görünsede CentOS 5.4 üzerinde işe yaramıyor.

cpanel.net de yazdığına göre PHP5 kullanıcıları için /var/cpanel/easy/apache/rawopts/ dizini altında all_php5 isminde bir dosya oluşturuyoruz ve easyapache burada yazdığımız parametreleri komuta join ediyor.

Örnekleri de şöyle:
–with-someoption
–path-to-something=/usr/bin/something
–my-option=
Tabii bu şekilde sonuca ulaşılmıyor.

Burada bulduğum scripti biraz düzenledim. Öncelikle çalışan sisteminizde eAccelerator ın olmaması gerekiyor. Eğer varsa Easy Apache ile eAccelerator u kaldırarak yeniden derlemeniz lazım.

#!/bin/bash
PHP_INI=/usr/local/lib/php.ini
PHP_BIN=/usr/local/bin
PHP_EXT=/usr/local/lib/php/extensions
PHPIZE=/usr/local/bin/phpize
VERSION=0.9.5.3
#shared memory i kapatmak için alt satırı silebilir yada başına # koyabilirsiniz.
CUSTOM_FLAG="--with-eaccelerator-shared-memory"
# You do not need to adjust this, but you may if you want... (below)
TMPDIR=/root/eaccelerator-install
PHPCACHE=/tmp/eaccelerator
clear
if [ ! $UID = 0 ]
then
echo "IPTAL EDILDI: Script root olarak calistirilmalidir."
exit $?
fi
if [ ! -f /etc/init.d/cpanel ] || [ ! -d /var/cpanel ]
then
echo "IPTAL EDILDI: Script cPanel sunucular icindir. [Belki scripti duzenleyerek bu bilgisayarda calistirabilirsiniz, fakat bu tavsiye edilmez.]."
exit $?
fi
if (grep "eaccelerator" -- $PHP_INI)
then
echo "IPTAL EDILDI: Oncelikle eAccelerator u ve tum uzantilarini sisteminizden kaldirmaniz gerekiyor.[php.ini deki eAccelerator satirlarini silmeniz yeterli olabilir]"
exit $?
fi
if [ ! -d $PHP_EXT ]
then
mkdir -p $PHP_EXT
fi
if [ ! -f $PHP_INI ] || [ ! -d $PHP_BIN ] || [ ! -d $PHP_EXT ] || [ ! -f $PHPIZE ]
then
echo "IPTAL EDILDI: Script sizin bilgisayariniz icin yapilandirilmamis olabilir, lutfen script dosyasini acin ve 3-6 satirlarinin dogru degerleri aldigindan emin olun."
exit $?
fi
if [ -d $TMPDIR ]
then
rm -rf $TMPDIR
fi
mkdir $TMPDIR
cd $TMPDIR
echo "wget ile ontanimli yansidan eAccelerator indiriliyor..."
wget -q http://bart.eaccelerator.net/source/$VERSION/eaccelerator-$VERSION.tar.bz2
if [ ! -f eaccelerator-$VERSION.tar.bz2 ]
then
echo "IPTAL EDILDI: Indirme basarisiz."
exit $?
else
echo "TAMAMLANDI."
fi
tar jfx eaccelerator-$VERSION.tar.bz2
cd eaccelerator-$VERSION
bash $PHPIZE
./configure --enable-eaccelerator=shared --with-php-config=$PHP_BIN/php-config $CUSTOM_FLAG
make
make install
mv $PHP_EXT/no-debug-non-zts-*/eaccelerator.so $PHP_EXT
cat $PHP_INI > $PHP_INI.bak
echo "$PHP_INI dosyasi $PHP_INI.bak olarak yedeklendi."
replace -s "extension_dir = \"./\"" "extension_dir = \"$PHP_EXT\"" -- $PHP_INI
cat <> $PHP_INI
;;eAccelerator
; extension="eaccelerator.so"
zend_extension="/usr/local/lib/php/extensions/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="$PHPCACHE"
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"
eaccelerator.keys="shm_only"
eaccelerator.content="shm_only"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
EOT
if [ -d $PHPCACHE ]
then
rm -rf $PHPCACHE
fi
mkdir $PHPCACHE
echo ; echo "Apache yeniden baslatiliyor..." ; echo
/etc/init.d/httpd restart
echo ; echo "Tum adimlar basariyla tamamlandi." ; echo
exit $?

1 Yorum Yapıldı

Yorum eklemek için çok geç, 08-12-2010 tarihinde yoruma kapatıldı.