(Memchache) برنامه اي است كه برای وبسایت هایی که درخواست زیادی با دیتابیس دارند نصب می شود.
در حال حاضر سایت های بزرگی نظیر ویکی پدیا ، سایت رسمی وردپرس ازین برنامه استفاده می کنند.
توجه: ممكش براي كش كردن دادهها در حالت سرورهاي توزيع شده مناسب است؛ هرچند در يك سرور واحد نيز به كار ميرود؛ اگر سرور توزيع شده نداريد بهتر است از Alternative PHP Cache)APC) استفاده كنيد، چون در اين حالت سرعت بالاتري دارد.گام هاي زير در سيستم عامل لينوكس نسخه CentOS كاملا تست شده و جواب داده است
ابتدا وارد SSH سرور مي شويم.
قبل ار نصب خود ممكش نياز است كه دستورات زير را اجرا كنيم چون ممكش وابسته است به پکیج های libevent می باشد
cd /usr/local/src curl -O http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz tar xzvf libevent-1.4.9-stable.tar.gz cd libevent-1.4.9-stable ./configure –prefix=/usr/local make make install
يا
yum install libevent
سپس دستورات زیر را وارد میکنیم:
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.4-1.el4.rf.i386.rpm rpm -i rpmforge-release-0.3.4-1.el4.rf.i386.rpm
حال نوبت به نصب خود ممكش ميرسد با اجراي دستورات زير ممکش روی php نصب می شود:
wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && make test && sudo make install
توجه کنید در خط دوم دستورات بالا باید فایل مم کش که اخرین نسخه است را از حالت فشرده خارج کنید.
مثلا اگر نسخه 1.3.3 را دانلود کردید دستور
tar -zxvf memcached-1.3.3.tar.gz
را وارد کنید
بعد از وارد کردن دستورات بالا به شما در خروجی مسیری که extension ممکش اضافه شده رو میده ، مثلا:
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"
سپس فایل extension=memcache.so را در php.ini اضافه میکنیم و وب سرور را ریستارت میکنیم، اگه تا اینجا درست پیش رفته باشین دستور php -m رو وارد کنین ، باید بهتون درخروجی memcached رو نشون بده و عملا نصب ممکش به پایان رسیده.
با دستور
memcached -h
میتونین راهنمایی ها برای کانفیگ ممکش رو مشاهده کنین.
—————————————————
نصب ممکش پایان یافت ، در صورت تمایل میتونین با ارسال تیکت به بخش پشتیبانی میهن هاستینگ ، نصب ممکش رو به همکاران مابسپارید.
در ادامه به شما آموزش می دهیم تا اگر در حین نصب با خطاهای احتمالی مواجه شدید ، چه اقدامی انجام دهید؟ پس هنوز با ما همراه باشین
توجه: ممكن است با اشكال زير مواجه شويد
Error: Missing Dependency: libevent-1.1a.so.1 is needed by package 1: nfs-utils-1.0.9-40.el5.i386 (installed)…
براي رفع آن دستور زير را اجرا مي كنيم تا برنامه nfs-utils و portmap packages حذف شود
yum remove portmap nfs-utils
ممکن است با خطای زیر مواجه شوید:
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
بنابراین فایل زیر را باز کنید:
nano /etc/ld.so.conf.d/libevent-i386.conf
و
/usr/local/lib/
را در ان وارد کنید و فایل را ذخیره کنید.سپس دستور زیر را اجرا کنید:
ldconfig
همچنین دستور زیر را وارد کنید
memcached -d -u nobody -m 1024127.0.0.1-p 11211
ممكش نصب شد حالا چطور آن را كنترل كنيم:
ريست كردن ممكش
service memcached restart
قرار دادن اجراي خود به خود ممكش در هنگام بوت
chkconfig memcached on
اجراي ممكش
service memcached start
يا
memcached -u root -d
توقف ممكش
service memcached stop
يا
pkill memcached
اطلاع از اجراي ممكش
ps aux | grep memcached
كه اگر در دو خط مانند زير خروجي دهد متوجه می شویم كه ممکش در حال اجراست
nobody 11365 0.5 1.8 67972 14596 ? Ssl 07:47 1:33 memcached -d -p 11211 -u nobody
-c 1024 -m 64 root 23807 0.0 0.0 3912 676 pts/1 S+ 12:59 0:00 grep memcached
تا اينجا ممكش را راه اندازي كرديم ولي هنوز قابل دسترسي از طريق php نيست. براي اينكه بتوانيد در كدهاي php از طريق توابع تعريف شده اي با ممكش كار كنيد لازم است PECL ممكش را نيز به سرورتان اضافه كنيد. پس دستور زير را اجرا كنيد
wget http://launchpad.net/libmemcached/1.0/0.40/+download/libmemcached-0.40.tar.gz tar -zxvf libmemcached-0.40.tar.gz cd libmemcached-0.40 ./configure make && make install pecl install memcached
memcached دریکی از مسیرهای زیر نصب می شود
/usr/local/php5/lib/php/extensions
/usr/local/lib/php/extensions/
در پایان مقادیر زیر را به php.ini اضافه میکنیم
extension_dir =”/usr/local/lib/php/extensions/no-debug-non-zts-20060613″
extension=memcached.so
در نهايت بايد Apache سرور ريست شود تا ممكش قابل استفاده در كدهاي php شود.
service httpd restart
يا
توجه مهم: ممكن است در اجراي هركدام از دستورات بالا با خطايي شبيه زير مواجه شويد
configure: error: memcache support requires ZLIB. Use –with-zlib-dir= to specify
prefix where ZLIB include and library are located ERROR: `/var/cache/php-pear/memcache-2.2.5/configure
–enable-memcache-session=yes’ failed
پس بايد قبل از آن zlib-devel را با دستور زير نصب كرد
yum install zlib-devel
توجه مهم: ممكن است در اجراي هركدام از دستورات بالا با خطايي شبيه زير مواجه شويد
configure: error: memcached support requires libmemcached. Use –with-libmemcached-dir=
to specify the prefix where libmemcached headers and library are located
ERROR: `/tmp/tmpBwSimh/memcached-1.0.1/configure’ failed
يا
“memcache.lo” is not a valid libtool object
براي رفع آن پيشنهاد مي شود اصلا از شيوه زير براي نصب pecl مربوطه استفاده كنيد
cd /usr/src/ wget http://pecl.php.net/get/memcache-2.2.4.tgz tar -zxvf memcache-2.2.4.tgz cd memcache-2.2.4 phpize && ./configure –enable-memcache && makecp modules/memcache.so /usr/lib/php/modules/
در ادامه با اجراي دستور زير مرحله بعدي نيز تمام مي شود
touch /etc/php.d/memcached.ini echo ‘extension=memcache.so’ > /etc/php.d/memcached.ini /etc/init.d/httpd restart
حال براي اطمينان از موفقيت نصب ممكش كافي است دستور زير را در php اجرا كنيم
phpinfo();
و بخشي با عنوان Memcache را در خروجي آن مانند شكل زير بيابيم :
حال در كدهاي php مي توانيد از دستورات اضافه شده براي كار با ممكش مانند دستورات زير استفاده كنيد
$link=memcache_connect ($mcservername,$mcport);
memcache_set($link, $key, $value,MEMCACHE_COMPRESSED, $expire);
$value = memcache_get($link,$key);
memcache_delete($link,$key);
memcache_close($link);
توضيحات تکميلي :
همانطور كه مي دانيد سشن ها در فايل ذخيره مي شوند يعني باز هم مثل ديتابيس در هارد !!! خوشبختانه ممكش فكر اينجا را هم كرده و اگر ممكش را به درستي نصب كرده باشيد و از سشن هم استفاده مي كنيد مي توانيد با تغيير دادن دو خصوصيت زير كه در فايل php.ini وجود دارد
session.save_handler = files
session.save_path = “/var/lib/php/session”
به مقدار هاي زير
session.save_handler = memcache
session.save_path = “tcp://localhost:11211”
كاري كنيد كه از اين به بعد سشن ها اتوماتيك در Ram خوانده و نوشته شوند كه اين خود بسيار سرعت را بالا خواهد برد.
براي اثر گذاري اين تغيير دوباره مرحله 7 را انجام دهيد
نسخه های انگلیسی اموزش نصب:
1-
After I was done with install Memcached on CentOS a while ago, I just know today that there are 2 different PECL modules. One is “Memcache PECL” while another is “Memcached PECL”. The one I did before is “Memcache PECL”, so, now, I try to install “Memcached PECL” which is newer and require libmemcached library.
The content below is almost exactly to my previous Memcache PECL installed. Only a few changes to install Memcached PECL instead.
Get Libevent which is require to install Memcached. Their homepage is here -> http://www.monkey.org/~provos/libevent/
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar –xvf libevent–1.4.13–stable.tar.gz
cd libevent–1.4.13–stable
./configure;make;make install;
Then, get Memcached from http://memcached.org
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
gunzip memcached–1.4.5.tar.gz
tar –xvf memcached–1.4.5.tar
cd memcached–1.4.5
./configure;make;make install;
For me, I got an error below :
error while loading shared libraries: libevent–1.4.so.2: cannot open shared object file:No such file or directory
So, I did steps below :
nano /etc/ld.so.conf.d/libevent–i386.conf
Then, enter into the textbox
/usr/local/lib/
Then, CTRL+O to save, CTRL+X to exit.
Then, run
ldconfig
Once you’re done with that, try run
memcached –d –u nobody –m 1024127.0.0.1–p 11211
This is not done yet, you need to let PHP knows to be able to use memcached.
wget http://launchpad.net/libmemcached/1.0/0.40/+download/libmemcached-0.40.tar.gz
tar –zxvf libmemcached–0.40.tar.gz
cd libmemcached–0.40
./configure
You will see screen below :
Then, run
make && make install
Then install Memcached PECL with below command :
pecl install memcached
Once it’s done, you will see the screen below:
With above picture, you may notice that the extension path is different to what we normally see. The path in the picture say :
/usr/local/php5/lib/php/extensions/no–debug–non–zts–20060613
But what most module for PHP 5.2 installed will compile into
/usr/local/lib/php/extensions/no–debug–non–zts–20060613
Therefore, make sure you get the right path for extension_dir Edit php.ini to have lines below : (Make sure the line “extension_dir” is there or you need a full path to memcached.so )
extension_dir =“/usr/local/lib/php/extensions/no-debug-non-zts-20060613”
extension=memcached.so
Then, restart HTTP and check PHP Status.. You will see Memcached info as below:
In case you need to use Memcached as a session handler. (Not require) Then, you need to edit php.ini and set variable below :
session.save_handler=memcached
session.save_path=“127.0.0.1:11211”
Now, you’re done install Memcached on the server. However, you need to modify some code in your website script to make use of Memcached.
Server Information – Software – CentOS 5.4
– DirectAdmin 1.351
– Apache 2.2.15
– PHP 5.2.13
– MySQL 5.1.45
Source : – http://blog.ajohnstone.com/archives/installing-memcached/
– http://alexle.net/archives/275
– http://hasin.wordpress.com/2009/10/18/using-new-pecl-memcached-extension-for-storing-session-data
———————–
2-
How To Install memcached with memcache PHP Extension on CentOS 5.x
In this how to i will describe how to install memcached on your server with PHP Extension. memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. My server is running CentOS 5.3 with CPanel.
1) Install memcached.
Enable rpmforge respository to install latest memcached rpm using yum.
For i386 / i686
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
For x86_64
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
Use yum to install memcached
yum -y install memcached
As soon as memcached installation completed, edit options for memcached in /etc/sysconfig/memcached to meet your need.
vi /etc/sysconfig/memcached
PORT=”11211″ #define on which port to urn
USER=”nobody” #same as apache user
MAXCONN=”1024″ #maximum number of connections allowed
CACHESIZE=”64″ #memory used for caching
OPTIONS=”” #use for any custom options
Save the file. All options can be seen by using following command
memcached -h
Start memcached
/etc/init.d/memcached start
Starting Distributed memory caching (memcached): [ OK ]
to check the running status of memcached
/etc/init.d/memcached status
memcached (pid 6475) is running…
and
netstat -anp | grep 11211
tcp 0 0 :::11211 :::* LISTEN 6475/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 6475/memcached
2) Install PHP Extension.
Download and install latest stable memcache version from PECL.
cd /usr/src
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install
memcache.so will be install in php modules directory, now enable memcache.so extension in php.ini
To find out your php.ini location, execute following command
php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
vi /usr/local/lib/php.ini
extension = “memcache.so”
save the file and restart httpd server.
/etc/init.d/httpd restart
To check is memcache extension loaded in php, execute following command.
php -i | grep memcache
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user sqlite memcache
PWD => /usr/src/memcache-2.2.5
_SERVER[“PWD”] => /usr/src/memcache-2.2.5
_ENV[“PWD”] => /usr/src/memcache-2.2.5