Memcache nedir?
İlk olarak memcache nedir? onu açıklamaya çalışayım. Memcache, Adındanda açıkça anlaşılacağı üzere bir cachleme modülüdür.danga.com tarafından üretilmiş ve en büyük destekçisi olarak facebook gösterilmektedir.
memcache çalışması için server üzerinde 11211 portuna ihtiyaç duymaktadır. Verilerinizi cachelemek için ram belleğinizi kullanmaktadır. Dolayısıyla sql sorgularından çok daha hızlı yanıt almanızı sağlar.
Gelelim sunucu tarafında memcached desteğini nasıl sağlayacağımıza.öncelikle memcache çalışması için 3 modüle ihtiyaç duyar.
1- libevent
2- memcached
3- memcache
Libevent: Bir dosya tanımlayıcısı(Bir dosya tanımlayıcı basitçe söylemek gerekirse açık bir dosya ile ilişkilendirilmiş bir tamsayıdır.) üzerinde bir durumun gerçekleştiğinde ya da herhangi bir zaman aşımı olduğunda çalışması için geri çağrılan işlevleri çalıştırmayı sağlayan bir kütüphanedir.
Kısa bilgilerden sonra kurulum ayrıntılarına geçebiliriz;
Aşağıdaki kodları aynen kopyala yapıştır yaparak kullanabilirsiniz. Kurulum 64 bitlik centos 5.7 üzerinde gerçekleştirilmiştir. Ayrıca PHP ve Apache Kurulu olduğu varsayılmıştır.
/data/download/memcache dizinini oluşturup gerekli dosyalarımızı indiriyoruz.
1 2 3 4 5 |
[root@omeroner~]mkdir /data/download/memcache [root@omeroner~]cd /data/download/memcache [root@omeroner~]wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz [root@omeroner~]wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.g [root@omeroner~]wget http://pecl.php.net/get/memcache |
1) libevent kurulum ve ayarlarını yapıyoruz.
1 2 3 4 5 |
[root@omeroner~]tar xvzf libevent-2.0.21-stable.tar.gz [root@omeroner~]cd /data/download/memcache/libevent-2.0.21-stable [root@omeroner~] ./configure (c compiler kurulu değilse kuruyoruz. yum install gcc-c++.x86_64 ) [root@omeroner~]make [root@omeroner~]make install |
Libevent Kurulum dizinini linkliyoruz.
1 |
[root@omeroner~]ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 |
32 bit kullananlar aşağıdaki komutu uygulamalılar
1 |
[root@omeroner~]ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5 |
2)Memcached Kurulum ve Derlemesine Geçiyoruz
1 |
[root@omeroner~]<b>cd /data/download/memcache</b> |
1 2 |
[root@omeroner~]<b>tar xvzf memcached-1.4.15.tar.gz </b> |
1 |
[root@omeroner~]<b>cd /data/download/memcached-1.4.15</b> |
1 |
[root@omeroner~]<b>./configure --with-libevent=/usr/local/lib/libevent-2.0.so.5</b> |
1 |
[root@omeroner~]make;make install |
3)Memcache Kurulum ve Derlemesini Yapıyoruz.
1 2 3 4 |
[root@omeroner~]cd /data/download/memcache [root@omeroner~]tar xvzf memcache-2.2.7.tgz [root@omeroner~]cd /root/mcache/memcache-2.2.7 [root@omeroner~]phpize |
phpize–> enter (otomatik memcahe derlemeyi sagliyor)
phpize: Bir PHP eklentisini derleme işlemine hazırlamak için phpize komutu kullanılır.
Aşağıdaki örnekte, eklentinin kaynak kod paketinin eklenti dizininde bulunduğu varsayılmıştır:
Eklenti burda memcache-2.2.7 dir.
Eğer sisteminizde phpize komutu yoksa;
1 |
[root@omeroner~]<b>yum install php-devel</b> |
komutu ile kurabiliriz.
Komutun kullanım bilgilerini görmek için phpize –help komutunu verin. Çalıştırdığımız komutların ardından ekranda aşağıdaki gibi bir çıktı gelmesi gerekiyor.
1 2 3 4 5 |
[root@omeroner~]phpize --help PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 |
Eğer hata alırsanız aşağıdaki komutla phpize yolumuzu buluyoruz ve çıktıyı uyguluyoruz.Örnek çıktı aşağıdaki gibidir.
1 2 3 |
[root@omeroner~]which phpize /usr/local/bin/phpize |
Sonrasında derlemeye devam ediyoruz.
1 2 3 |
[root@omeroner~]./configure --with-php-config=/usr/local/php5/bin/php-config [root@omeroner~]make [root@omeroner~]make install |
Yukardaki adımları doğru uyguladıysak aşağıdaki gibi bir çıktı verecektir.
1 |
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ |
Bu çıktı daha sonrasında bizi lazım olcak not edelim.
Başarılı bir kurulum sonucunda eklenti PHP eklentileri dizinine eklenti.so adıyla yerleştirilir.
Eklentiyi etkin kılmak için php.ini dosyanıza bir extension=eklenti.so satırı eklemeniz gerekecektir
Sıra geldi memcache’i çalıştırmaya;
1 |
[root@omeroner~]/usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048 |
Yukarıdaki satır memcacehd i 1024Mb bellek ile 127.0.0.0 ip adresi üzerinde 11211 numaralı portta max 2048 connection ve daemon olarak memcached çalıştır demek.
Diğer memcached options için;
1 |
[root@omeroner~]man memcached |
komutunu kullanabiliriz.
Memcached’ın çalışıp çalışmadığını kontrol edelim;
1 |
[root@omeroner~]ps -ef | grep memcache |
Doğru çıktı aşağıdaki gibi olmalıdır.
1 2 |
root 11457 1 0 18:05 ? 00:00:00 /usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048 root 11464 11335 0 18:05 pts/2 00:00:00 grep memcached |
Buraya kadar olan işlemlerde gerekli modüllerimizi kurduk derledik ve memcached’ı aktif hale getirdik. Şimdi yukarıda’da bahsettiğimiz eklentiyi aktif hale getirmek için php.ini dosyamızı açıp gerekli tanımları yapıyoruz.
1 |
[root@omeroner~]vim /etc/php.ini |
php.ini içerisinde extensions_dir satırını bulup az önce not ettiğimiz kod ile değiştiriyoruz.değişiklik sonrası hali aşağıdaki gibi olacaktır.
1 |
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626/" |
Yine php.ini dosyasının en altına aşağıdaki kodları ekliyoruz.
1 |
extension = "memcache.so" |
dosyamızı esc:wq! tuş kombinasyonlarıyla kaydedip apache’mizi restart ediyoruz.
1 |
[root@omeroner~]service httpd restart |
Son olarak her reboot ta memcached in otomatik çalıştırılması için rc.local dosyamızın en altına aşağıdaki satırı ekliyoruz.
1 |
[root@omeroner~]vi /etc/rc.local |
1 |
/usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048 |
Sunucumuz yeniden başladığında memcached otomatik olarak çalışıcaktır.
So, what do you think ?