天天看點

源碼安裝Memcached伺服器及其2種PHP用戶端

本文所用源碼包皆為當時最新stable穩定版。

安裝memcached伺服器

先安裝libevent, 最新版為2.0.21

tar -zxvf libevent-2.0.21-stable.tar.gz 

./configure # make &&  make install      

再安裝Memcached, 最新版為1.4.17

./configure  make && make  install      

檢視版本

./memcached -h memcached 1.4.17      

啟動Memcached伺服器端的指令為(其中192.168.220.137為我的IP):

memcached -d -m   10 -u root -l 192.168.220.137 -p 11211   -c 256 -P /tmp/memcached.pid      

memcached -d -m 512 -u root  -p 11211 -c 1024 -P /tmp/memcached.pid

yum安裝的預設啟動:

memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid      

其中:

  • -d選項是啟動一個守護程序,
  • -m是配置設定給Memcache使用的記憶體數量,機關是MB,我這裡是10MB,
  • -u是運作Memcache的使用者,我這裡是root,
  • -l是監聽的伺服器IP位址,如果有多個位址的話,我這裡指定了伺服器的IP位址192.168.0.200,
  • -p是設定Memcache監聽的端口,我這裡設定了12000,最好是1024以上的端口,
  • -c選項是最大運作的并發連接配接數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定,
  • -P是設定儲存Memcache的pid檔案,我這裡是儲存在 /tmp/memcached.pid,

啟動時如果出現如下異常:

error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory       

可vim /etc/ld.so.conf加上/usr/local/lib後ldconfig

安裝用戶端memcache

目前最新穩定版是2.2.7

cd memcache-2.2.7 whereis phpize找到其路徑然後執行: # /usr/bin/phpize ./configure --with-php-config=/usr/bin/php-config make      
# make install      

在php.ini(/etc目錄下)檔案中添加一行

extension=memcache.so      

安裝用戶端memcached

memcached的1.2.4及以上增加了CAS(Check and Set)協定,用于同一key的多程序并發處理問題。這種情況其實跟資料庫很像,如果同時有幾個程序對同一個表的同一資料進行更新的話,那會不會打架呢。資料庫裡面可以鎖定整張表,也可以鎖定表裡面的一行,其實memcached加入的CAS與此差不多。

php的擴充memcache,不支援cas,是以我們要裝memcached擴充,memcached擴充是基于libmemcached,是以要先安裝libmemcached。

有一點不要搞混了,服務端的memcached包和php的擴充memcached包是不一樣的,注意下,目前服務端的memcached官網最新版是1.4.17,而php的擴充memcached包最新版是2.1.0.

Memcached 與Memcache的差別參見Memcache與Memcached的差別

libmemcached的安裝

目前最新版是1.0.18

cd libmemcached-1.0.18 ./configure --prefix=/usr/local/libmemcached --with-memcached      
make && makeinstall      

先檢查phpize和php-config工具有沒有安裝,如果沒有直接yum install php-devel就行了... 找到安裝位置

#which phpize      
#which php-config      

我的都是在/usr/bin/... 目錄下 phpize是用來編譯安裝擴充庫用的...

安裝memcached用戶端

最新版是2.1.0

cd memcached-2.1.0  #/usr/bin/phpize 注意libmemcached路徑的指定跟前面的安裝目錄一緻.   #./configure --prefix=/usr/local/phpmemcached --enable-memcached --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached #make  && make install      

為了以防混淆,這裡指定php的memcached擴充的安裝路徑為/usr/local/phpmemcached

修改php的配置檔案php.ini,加上子產品extension=memcached.so

看看extension_dir指定的子產品路徑下是否有memcached.so檔案.

extension_dir一般是/usr/lib/php/modules/..... 如果沒有看下是否在lib64下,ln -s做下軟連結.如:

ln -s /usr/lib64/php/modules  /usr/lib/php/modules      

但最好的做法是在 /etc/php.d/目錄下添加一個檔案:memcached.ini

vi /etc/php.d/memcached.ini      

寫入:extension=memcached.so

加這個檔案要注意檔案權限。否則,phpinfo中additional .ini files parsed 中沒有這個檔案時,證明權限不對,PHP不能打開這個檔案。

重新開機web服務.

./nginx -s reload service php-fpm restart      

在phpinfo中可以看到已經有上面2個用戶端擴充了。

藝搜參考

時間寶貴,隻能複制+粘貼,若圖檔無法顯示或排版混亂,請通路elesos.com查找原文