本文所用源碼包皆為當時最新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查找原文