آموزش نصب Memcached روی دایرکت ادمین

نوشته شده توسط: محمد

(Memchache) برنامه ای است که برای وبسایت هایی که درخواست زیادی با دیتابیس دارند نصب می شود.
در حال حاضر سایت های بزرگی نظیر ویکی پدیا ، سایت رسمی وردپرس ازین برنامه استفاده می کنند.
توجه: ممکش برای کش کردن داده‌ها در حالت سرورهای توزیع شده مناسب است؛ هرچند در یک سرور واحد نیز به کار می‌رود؛ اگر سرور توزیع شده ندارید بهتر است از Alternative PHP Cache)APC) استفاده کنید، چون در این حالت سرعت بالاتری دارد.گام های زیر در سیستم عامل لینوکس نسخه CentOS کاملا تست شده و جواب داده است
ابتدا وارد SSH سرور می شویم.
قبل ار نصب خود ممکش نیاز است که دستورات زیر را اجرا کنیم چون ممکش وابسته است به پکیج های libevent می باشد
[php]
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
[/php]
یا
[php]
yum install libevent
[/php]
سپس دستورات زیر را وارد میکنیم:
[php]
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]
حال نوبت به نصب خود ممکش میرسد با اجرای دستورات زیر ممکش روی php نصب می شود:
[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
[/php]
توجه کنید در خط دوم دستورات بالا باید فایل مم کش که اخرین نسخه است را از حالت فشرده خارج کنید.
مثلا اگر نسخه ۱.۳.۳ را دانلود کردید دستور
[php]
tar -zxvf memcached-1.3.3.tar.gz
[/php]
را وارد کنید
بعد از وارد کردن دستورات بالا به شما در خروجی مسیری که extension ممکش اضافه شده رو میده ، مثلا:
[php]
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"
[/php]
سپس فایل extension=memcache.so را در php.ini اضافه میکنیم و وب سرور را ریستارت میکنیم، اگه تا اینجا درست پیش رفته باشین دستور php -m رو وارد کنین ، باید بهتون درخروجی memcached رو نشون بده و عملا نصب ممکش به پایان رسیده.
با دستور
[php]
memcached -h
[/php]
میتونین راهنمایی ها برای کانفیگ ممکش رو مشاهده کنین.
—————————————————
نصب ممکش پایان یافت ، در صورت تمایل میتونین با ارسال تیکت به بخش پشتیبانی میهن هاستینگ ، نصب ممکش رو به همکاران مابسپارید.
در ادامه به شما آموزش می دهیم تا اگر در حین نصب با خطاهای احتمالی مواجه شدید ، چه اقدامی انجام دهید؟ پس هنوز با ما همراه باشین
توجه: ممکن است با اشکال زیر مواجه شوید
[php]
Error: Missing Dependency: libevent-1.1a.so.1 is needed by package 1: nfs-utils-1.0.9-40.el5.i386 (installed)…
[/php]
برای رفع آن دستور زیر را اجرا می کنیم تا برنامه nfs-utils و portmap packages حذف شود
[php]
yum remove portmap nfs-utils
[/php]
ممکن است با خطای زیر مواجه شوید:
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
بنابراین فایل زیر  را باز کنید:
[php]
nano /etc/ld.so.conf.d/libevent-i386.conf
[/php]
و
/usr/local/lib/
را در ان وارد کنید و فایل را ذخیره کنید.سپس دستور زیر را اجرا کنید:
ldconfig
همچنین دستور زیر را وارد کنید
[php]
memcached -d -u nobody -m 1024127.0.0.1-p 11211
[/php]
ممکش نصب شد حالا چطور آن را کنترل کنیم:
ریست کردن ممکش
[php]
service memcached restart
[/php]
قرار دادن اجرای خود به خود ممکش در هنگام بوت
[php]
chkconfig memcached on
[/php]
اجرای ممکش
[php]
service memcached start
[/php]
یا
[php]
memcached -u root -d
[/php]
توقف ممکش
[php]
service memcached stop
[/php]
یا
pkill memcached
اطلاع از اجرای ممکش
[php]
ps aux | grep memcached
[/php]
که اگر در دو خط مانند زیر خروجی دهد متوجه می شویم که ممکش در حال اجراست
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 ممکش را نیز به سرورتان اضافه کنید. پس دستور زیر را اجرا کنید
[php]
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
[/php]
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 مربوطه استفاده کنید

[php]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/
[/php]
در ادامه با اجرای دستور زیر مرحله بعدی نیز تمام می شود
[php]
touch /etc/php.d/memcached.ini
echo ‘extension=memcache.so’ > /etc/php.d/memcached.ini
/etc/init.d/httpd restart
[/php]
حال برای اطمینان از موفقیت نصب ممکش کافی است دستور زیر را در 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 خوانده و نوشته شوند که این خود بسیار سرعت را بالا خواهد برد.
برای اثر گذاری این تغییر دوباره مرحله ۷ را انجام دهید
نسخه های انگلیسی اموزش نصب:
۱-
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–۱.۴.۱۳–stable.tar.gz
cd libevent–۱.۴.۱۳–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–۱.۴.۵.tar.gz
tar –xvf memcached–۱.۴.۵.tar
cd memcached–۱.۴.۵
./configure;make;make install;
For me, I got an error below :
error while loading shared libraries: libevent–۱.۴.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–۰.۴۰.tar.gz
cd libmemcached–۰.۴۰
./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–۲۰۰۶۰۶۱۳
But what most module for PHP 5.2 installed will compile into
/usr/local/lib/php/extensions/no–debug–non–zts–۲۰۰۶۰۶۱۳
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=“۱۲۷.۰.۰.۱:۱۱۲۱۱”
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
———————–
۲-
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.
۱) 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=”۱۱۲۱۱″ #define on which port to urn
USER=”nobody” #same as apache user
MAXCONN=”۱۰۲۴″ #maximum number of connections allowed
CACHESIZE=”۶۴″ #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
۲) 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

مطالب مرتبط

نظر شما