CentOS6 安裝Memcached PHP安裝Memcache擴展
Memory Cache
Memory Cache — 使用內存作為數據的緩沖,加快數據的讀取,減少DB服務器的負擔。
在無數的大型網站中,Memory Cache起着至關重要的作用,往往這些大型網站會用上百台Memory Cache服務器。
而在中小型的項目中,適當使用Memory Cache(性能與成本之間的妥協)也是非常有必要的。
之前寫過一篇文章《自己動手,寫一個簡單PHP框架 (番外2)》,介紹了Adodb在查詢數據時使用HD作為緩沖,雖然這樣也能對性能起到一定提升作用,但會使磁盤I/O增加,磁盤的性能往往隨着I/O遞增呈現指數級下降,所以在有條件的情況下使用Memory Cache是明智之舉。
#############
centos 6 第一二步省略,直接yum安裝
1. 安裝第三方軟件庫
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.rf.src.rpm
rpm -ivh rpmforge-release-0.5.2-2.rf.src.rpm
2. 查找Memcached
yum search memcached
3. 安裝Memcached
yum -y install memcached
4. 驗證安裝
memcached -h
應該會輸出一些幫助信息
5. 將memcache加入啟動列表
chkconfig --level 2345 memcached on
6. 配置Memcache
vi /etc/sysconfig/memcached
文件中內容如下
PORT=”11211″ 端口
USER=”root” 使用的用戶名
MAXCONN=”1024″ 同時最大連接數
CACHESIZE=”64″ 使用的內存大小
OPTIONS=”" 附加參數
7. 查看memcache狀態
memcached-tool [Memcache Server IP]:[Memcache Server Port] stats
如:memcached-tool 127.0.0.1:11211 stats
=====至此,我們將Memcache服務配置完畢,接着我們配置PHP的擴展,以便在程序中來調用=====
PHP共有2種Memcache擴展,一個叫Memcache(2002年發布),另一個叫Memcached(2008年發布)
Memcached比較新,它依賴於limemcached庫才能運行,不過它能完成基於Memcache服務的幾乎所有功能,比如:Memcached::getResultCode ,它能返回上一次操作Memcache的結果,而Memcache則沒有這個功能
Memcache(沒有d)不依賴任何庫就能運行,安裝相對簡單,同時也能完成Memcache服務的大部分主要功能。
下面分別介紹2者的安裝方式。
8. 安裝PHP的Memcache擴展(yum安裝php已安裝此擴展)
wget http://pecl.php.net/get/memcache-2.2.6.tgz
wget http://pecl.php.net/get/memcache-3.0.6.tgz
tar vxzf memcache-2.2.6.tgz
cd memcache-2.2.6
/usr/bin/phpize (如果不知道phpize在什么位置,可以用find / -name phpize查找)
./configure –enable-memcache –with-php-config=/usr/bin/php-config –with-zlib-dir
make
make install
記錄下安裝成功后的提示,類似於:
Installing shared extensions: /usr/lib/php/modules/
把這個地址記錄下來
增加擴展extension配置文件
查看是否存在 /etc/php.d/memcache.ini 這個文件,如果不存在,我們就自己建立一個
vi /etc/php.d/memcache.ini
增加1行
extension=memcache.so
最后驗證一下是否安裝完成
php -m|grep memcache
應該會顯示memcache
如果出現類似的錯誤:PHP Warning: Module ‘memcache’ already loaded in Unknown on line 0
那可以把php.ini新增加的extension=/usr/lib/php/modules/memcache.so注釋掉
9. PHP的Memcached擴展安裝(沒有實驗)
首先確認一下json頭文件是否正確配置
ls /usr/include/php/ext/json/php_json.h (這是默認路徑,如果安裝php是指定了其他路徑,則查看其他路徑)
如果文件不存在,那我們需要先配置json頭文件;如果已經存在,那就不需要下面這步操作了
確認一下json的版本,我們在phpinfo()中可以查看,
wget wget http://pecl.php.net/get/json-1.2.1.tgz (確認下載了正確的版本)
tar xzvf json-1.2.1.tgz
mkdir -R /usr/include/php/ext/json/
cp json-1.2.1/php_json.h /usr/include/php/ext/json/
安裝libmemached
wget http://launchpad.net/libmemcached/1.0/0.50a/+download/libmemcached-0.50.tar.gz (不要下載0.51版,它無法完成編譯)
launchpad.net/libmemcached/1.0/1.0.10/+download/libmemcached-1.0.10.tar.gz這個是最新版
tar -xzvf libmemcached-0.50.tar.gz
cd libmemcached-0.50.tar.gz
./configure –prefix=/usr/local/libmemcached –with-memcached
make
make install
再安裝Memcached擴展
wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar xzvf memcached-1.0.2.tgz
cd memcached-1.0.2
./configure –enable-memcached –with-php-config=/usr/bin/php-config –with-zlib-dir –with-libmemcached-dir=/usr/local/libmemcached –prefix=/usr/local/phpmemcached
make
make install
記錄下安裝成功后的提示,類似於:
Installing shared extensions: /usr/lib/php/modules/
增加擴展extension配置文件
vi /etc/php.d/memcached.ini
增加1行
extension=memcached.so
最后驗證一下是否安裝完成
php -m|grep memcached
應該會顯示memcached
如果在添加擴展so文件時,直接修改php.ini,那么可能會出現下面的錯誤:
/usr/lib/php/modules/memcached.so: undefined symbol: php_json_encode in Unknown on line 0
這 個錯誤是因為在 memcached.so 加載之前必須加載 json.so ,而json.so是在/etc/php.d/json.ini中加載,這樣會導致json.so在memcached.so之后加載;可以刪除/etc /php.d/json.ini文件,而在php.ini中直接添加extensino=json.so來解決
=====PHP中配置MemCache就是這些======
10. 配置selinux
selinux是一套linux的安全系統,它指定了應用程序可以訪問的磁盤文件、網絡端口等等。
如果裝有selinux,那么默認的selinux會阻止memcache程序訪問11211端口,所以必須對selinux進行配置才行。
方法1: 臨時降低selinux運行級別,以便我們進行測試
命令:setenforce [Enforcing | Permissive]
Enforcing表示不允許違反策略的操作
Permissive表示允許違反策略的操作,但會記錄下來
我們使用 setenforce Permissive
方法2: 修改selinux配置文件,關閉selinux
編輯 /etc/selinux/config 文件,將 SELINUX=enforcing 改為 SELINUX=disabled
方法3: 修改selinux的http策略,使得httpd進程可以訪問網絡,這樣也就可以使用memcache了
命令:setsebool -P httpd_can_network_connect true
參數P的意思是保持設置的有效性,這樣在重啟之后這個設置依然有效,不會改變
11. 查看selinux狀態
sestatus -bv
12. 配置防火牆
如果Memcache和Web服務器不是同一台服務器,那么或許還需要配置iptables
登錄Memcache服務器,並取得root權限
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p tcp -s Web服務器1的IP地址 –dport 11211 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -s Web服務器2的IP地址 –dport 11211 -j ACCEPT
……
:wq
/etc/init.d/iptables restart
附:在Windows開發環境中,也能使用Memcached
1. 到 http://splinedancer.com/memcached-win32/ 下載memcache,如果無法打開鏈接,可在本文最后下載;
2. 解壓后在運行框內執行以下命令:
e:\memcached\memcached.exe -d install
e:\memcached\memcached.exe -d start
3. 然后將 php_memcache.dll(在本文最后下載) 復制到 system32 和 PHP安裝目錄下的ext文件夾內;
4. 在php.ini文件中增加 extension=php_memcache.dll;
5. 重啟Apache
以上是Memcache擴展在Windows中的安裝!
我無法找到Memcached擴展在windows如何安裝,如果你知道,請告知,謝謝!!!
下載:Memcached for Windows
下載:php_memcache.dll