memcached kurulumu - PHP, VBulletin VBSEO ve MySQL için

memcached makalesi size fayda sağladı mı


  • Kullanılan toplam oy
    30

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#1
update 2008-01-24: memcached kurmadan önce Xcache tavsiye konusunu okumanızı öneririm

Biraz önce bu server üzerinde memcached kurulumunu tamamladım.
Bu başlık altında PHP ve VBulletin ve MySQL için memcached kurulumunu Türkçe olarak anlatacağım.
Dökümantasyonu tamamlar tamamlamaz yazacağım.
 

Opteron

Şen Üye
İYİNET Üyesi
Katılım
26 Kas 2006
Mesajlar
98
Beğeniler
0
Konum
192.168.0.1
#2
seo forumlarındakı ilgin ve yardımın ıcın tesekkurler iyinet :) abartısız 2 gune yakın ugrastırdı bu memcached herhangı bır turkce detaylı dokuman olmadıgından. Uygulayacak arkadaslar ıcın buyuk bır avantaj olucaktır.
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#3
memcached nedir

memcached özellike veritabanı mysql i hızlandırmaya yarayan bellek cache uygulamasıdır.
Slashdot, Wikipedia, Sourceforge gibi çok yoğun pekçok sitede kullanılmaktadır.
Bugün bu siteler arasına iyinet de girmiş bulunuyor.
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#4
memcached i kimler kullanmalı

PHP MySQL ve Vbulletin kullanan tüm kullanıcılara tavsiye edilir.

Kurulum esnasında phpize gerekmekte olup phpize olması için php yi kaynak kodundan kurmuş olmanız gerekiyor. Kontrol etmek için phpize yoksa php-devel modulünü kurabilirsiniz.
up2date php-devel
Başka bir caching sistemi mevcut olsa olsa bile, örneğim eaccelarator veya xcache olsa bile bunların yanında memcached i kullanmanız mümkündür.
dedicated ve vps kullanıcıların bu tür cachleri kullanmaları mümkün olacağı gibi, shared hosting alanların kendi başlarına bu tür caching sistemlerini kurmaları mümkün olmamaktadır. Shared hosting alanlar hosting şirketlerinin sunduğu imkanlar ile sınırlı kalmaktadırlar.

memcached i kullanmak isteyen server sahipleri ve yöneticilerini kuruluma başlamadan önce sistemlerindeki yükü (load) ölçmelerini tavsiye ederim.
Böylelikle kurulum sonunda memcached in getirdiği faydayı ölçme ve karşılaştırma imkanı bulabilirsiniz.
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#5
memcached için gereken dosyaları indirelim

Pek çok işlemi ssh de yapacağımız için root ile ssh erişiminizin olması gerekiyor.

1. Kendimize bir çalışma dizini yaratalım be gerekli dosyaları buraya indirelim. Bu dizin /root/mc olsun (mc=memcached)
# mkdir /root/mc
# cd /root/mc
# wget http://monkey.org/~provos/libevent-1.3e.tar.gz
# wget http://www.danga.com/memcached/dist/memcached-1.2.4.tar.gz
# wget http://pecl.php.net/get/memcache-3.0.0.tgz
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#7
memcached için indirdiğimiz dosyaları açalım ve kuralım

1. Dosyaları indirdikten sonra önce libevent i açıp derleyelim
# tar xvzf libevent-1.3e.tar.gz
# cd /root/mc/libevent-1.3e
# ./configure
# make
# make install


3. memcached derlenirken her nedense libevent in kurulduğu dizini sevmiyor, bu nedenle aşağıdaki şekilde link etmemiz gerekiyor.
# ln -s /usr/local/lib/libevent-1.3e.so.1 /usr/lib/libevent-1.3e.so.1

64bit makinalar icin:
# ln -s /usr/local/lib/libevent-1.4.so.2.1.3 /usr/lib64/libevent-1.4.so.2


4. Şimdi memcached i açıp derleyelim
# cd /root/mc/
# tar xvzf memcached-1.2.4.tar.gz
# cd /root/mc/memcached-1.2.4
# ./configure --with-libevent=/usr/local/lib/libevent-1.3e.so.1
# make
# make install


5. Sıra memcache i açıp derlemekte, adları çok benziyor dikkat edin bu memcache-3.0.0 bir önceki memcached-1.2.4
# cd /root/mc/
# tar xvzf memcache-3.0.0.tgz
# cd /root/mc/memcache-3.0.0
# phpize
# ./configure
# make
# make install


En sondaki make install komutunun ardından aşağıdaki şekilde ekrana çıkan dizini bir yere kaydedin, bunu ileride kullanacağız

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/


Dikkat eğer phpize yazdığınızda hata alırsanız
# which phpize

yazıp yukarıdaki phpize yerine çıkan full dizini kullanın

Bende bu çıktı
/usr/local/bin/phpize
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#8
memcached i çalıştıralım ama durun daha bitmedi

Aşağıdaki şekilde memcached i çalıştıralım hata vermiyor ise bu zamana kadar ki adımları sorunsuz yapmışız demektir.
# /usr/local/bin/memcached -u nobody -d -m 64 -l 127.0.0.3 -p 11211

Bu satır memcacehd i 64Mb bellek ile 127.0.0.3 ip adresi üzerinde 11211 numaralı portta çalıştır demek.
Bu ip adres ve portlara takılmayın burada olduğu gibi çalıştırın, sonraki ayarlarda bu değerleri kullanacağız.

Memcached in başlayıp başlamadığını kontrol etmek için
# ps -ef |grep memcached|grep -v grep


Çıktı bu şekilde ise memcached çalışıyor demektir
nobody 30091 1 0 13:06 ? 00:00:07 /usr/local/bin/memcached -u nobody -d -m 64 -l 127.0.0.3 -p 11211
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#9
memcached i çalıştırdık sıra konfigürasyon ayarlarında

1. Önce php.ini yi ayarlayacağız.
php.ini nin nerede olduğunu bulup açmak için
# php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini


Bu çıktıdan kullanacağımız php.ini nin /usr/local/lib/php.ini olduğunu anlıyoruz. Dikkat bu sizin sisteminizde farklı olabilir, bu nedenle yukarıdaki şekilde yerini bulmanızı öneririm.

2. Editörünüz ile php.ini yi açın. Ben vi kullanıyorum, siz örneğin pico kullanıyor olabilirsiniz.
# vi /usr/local/lib/php.ini


3. php.ini içinde extension_dir satırını bulup bu şekide değiştirin. Dikkat buradaki /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ dizini memcache i derlediğimizde ekrana çıkan dizindir hani size saklayın demiştim.
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/


4. php.ini nin en sonuna bu satırları ekleyin, eaccelerator kurulu ise ondan önce olsun.
Dikkat buradaki /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ dizini memcache i derlediğimizde ekrana çıkan dizindir hani size saklayın demiştim.
;
; memcache bolumu
;
extension="memcache.so"
memcache.allow_failover=0


5. php nin bu değişiklikleri algılaması için apache yi kapatıp açalım
# service httpd restart


6. memcache in php ye başarı ile kurulup kurulmadığını anlamak için aşağıdaki komutu çalıştırın
# php -i | grep "memcache support"

Aşağıdaki şekilde çıktı alırsanız memcache php ye başarı ile kurulmuştur.
memcache support => enabled


7. Hemen web sayfalarınızın doğru şekilde çalışıp çalışmadığını kontrol edin. Ek olarak
PHP:
<? 
phpinfo(); 
?>
kodunu bir php dosyasına koyarak web serverınızda çalıştırıp memcache ile ilgili satırları inceleyebilirsiniz.
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#10
bu kısım vbulletin ve vbseo kullananlar için

Dikkat aynı makinada 1 den fazla vbulletin kullanıyorsanız bu mesajı okuyunuz.

1. vbulletin kullanıyorsanız vbulletin forumunu kurduğunuz dizin altındaki include dizini altındaki config.php dosyasını favori editorunuz ile açın.

# vi /websitelerim/forum.iyinet.com/includes/config.php


2. Dosya içinde aşağıdaki konfigürasyon değerlerini arattırın ve bu şekilde değiştirin, yoksa ekleyin.

$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$config['Misc']['memcacheserver'] = '127.0.0.3';
$config['Misc']['memcacheport'] = '11211';


3. VBSEO kullananlar vbseo admin panelinden caching mekanizması için memcached i seçebilirler.
 

iyinet

Müptela Üye
Yönetici
Administratör
Katılım
2 Eyl 2002
Mesajlar
5,016
Beğeniler
39
Konum
Gaziantep
#11
Ve son olarak

Kurulum burada tamamlanmıştır, eğer sisteminiz ve siteleriniz sorunsuz olarak çalışıyorsa tebrikler.

Son olarak memcahced i makina her kapanıp açıldığında manuel olarak elle çalıştırmamak için otomatiğe bağlayalım.

1. Yine favori editörünüz ile /etc/rc.local dosyasını açalım
# vi /etc/rc.local


2. Dosyanın tercihen komutların başladığı kısımdaki ilk bölüme bu şekilde memcached i çalıştıran komutu ekleyip dosyayı kaydedip çıkalım.
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

/usr/local/bin/memcached -u nobody -d -m 64 -l 127.0.0.3 -p 11211


Artık sisteminiz her yeniden açıldığında memcached de otomatik olarak başlayacaktır.

Kurulum tamamlanmıştır.

----------------------------------

memcached istatistiklerine ulaşmak için ssh de:

# echo -ne "stats\n\r" | nc -i1 127.0.0.3 11211


----------------------------------

Memcached i kendi PHP kodunuzu hızlandırmak için kullanmak isterseniz bu makaleyi okumanızı tavsiye ederim:
http://forum.iyinet.com/php/80911-memcached-ile-kendi-yazdiginiz-php-kodunu-hizlandirmak.html

Soru ve sorunlarınız için bu başlık altına yazınız.
 

Mywedding

1
İYİNET Üyesi
Katılım
26 Eyl 2006
Mesajlar
5,903
Beğeniler
96
Konum
www.odatv.com
#13
burda takıldım iyinet, ,



1. Dosyaları indirdikten sonra önce libevent i açıp derleyelim
# tar xvzf libevent-1.3e.tar.gz
# cd /root/mc/libevent-1.3e
# ./configure
# make
# make install


3. memcached derlenirken her nedense libevent in kurulduğu dizini sevmiyor, bu nedenle aşağıdaki şekilde link etmemiz gerekiyor.
# ln -s /usr/local/lib/libevent-1.3e.so.1 /usr/lib/libevent-1.3e.so.1


4. Şimdi memcached i açıp derleyelim
# cd /root/mc/
# tar xvzf memcached-1.2.4.tar.gz
# cd /root/mc/memcached-1.2.4
# ./configure --with-libevent=/usr/local/lib/libevent-1.3e.so.1
# make
# make install


5. Sıra memcache i açıp derlemekte, adları çok benziyor dikkat edin bu memcache-3.0.0 bir önceki memcached-1.2.4
# cd /root/mc/
# tar xvzf memcache-3.0.0.tgz
# cd /root/mc/memcache-3.0.0
# phpize
# ./configure
# make
# make install


memcache-3.0.0 ı derlemenizin ardından ekrana /usr/local/lib/php/extensions/no-debug-non-zts-20060613/ gibi bir dizin çıkacak bunu biryere kaydedin kullanacağız.
 

ENVER

Profesyonel Üye
İYİNET Üyesi
Katılım
21 Eyl 2006
Mesajlar
493
Beğeniler
0
#15
// ****** DATASTORE CACHE CONFIGURATION *****
// Here you can configure different methods for caching datastore items.
// vB_Datastore_Filecache - for using a cache file
// $config['Datastore']['class'] = 'vB_Datastore_Filecache';
// vB_Datastore_Memcached - for using a Memcache server
// It is also necessary to specify the hostname or IP address and the port the server is listening on
/*
$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$i = 0;
// First Server
$i++;
$config['Misc']['memcacheserver'][$i] = '127.0.0.1';
$config['Misc']['memcacheport'][$i] = 11211;
$config['Misc']['memcachepersistent'][$i] = true;
$config['Misc']['memcacheweight'][$i] = 1;
$config['Misc']['memcachetimeout'][$i] = 1;
$config['Misc']['memcacheretry_interval'][$i] = 15;
*/
bu kısım komple mi değişmeli tam anlamadım
 

ENVER

Profesyonel Üye
İYİNET Üyesi
Katılım
21 Eyl 2006
Mesajlar
493
Beğeniler
0
#19
Fatal error: Memcache is not installed in /includes/class_datastore.php on line 271 şeklinde hata aldım

confige ekleyince

$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$i = 0;
// First Server
$i++;
$config['Misc']['memcacheserver'][$i] = '127.0.0.1';
$config['Misc']['memcacheport'][$i] = 11211;
$config['Misc']['memcachepersistent'][$i] = true;
$config['Misc']['memcacheweight'][$i] = 1;
$config['Misc']['memcachetimeout'][$i] = 1;
$config['Misc']['memcacheretry_interval'][$i] = 15;
*/
$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$config['Misc']['memcacheserver'] = '127.0.0.3';
$config['Misc']['memcacheport'] = '11211';

// ****** The following options are only needed in special cases ******

// ****** MySQLI OPTIONS *****
// When using MySQL 4.1+, MySQLi should be used to connect to the database.
// If you need to set the default connection charset because your database
// is using a charset other than latin1, you can set the charset here.
// If you don't set the charset to be the same as your database, you
// may receive collation errors. Ignore this setting unless you
// are sure you need to use it.
// $config['Mysqli']['charset'] = 'utf8';
şeklinde config.php
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 1)

Üst