2015年3月29日 星期日

[Linux]CentOS上安裝memcached

Memcached是一個linux下的快取服務機制
根據Wiki介紹
=======================
memcached是一套分布式的快取系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網站使用。
這是一套開放原始碼軟體,以BSD license授權釋出
memcached缺乏認證以及安全管制,這代表應該將memcached伺服器放置在防火牆後

memcached的API使用三十二位元的循環冗餘校驗(CRC-32)計算鍵值後,將資料分散在不同的機器上。當表格滿了以後,接下來新增的資料會以LRU機制替換掉。由於memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是後端的資料庫)需要額外的程式碼更新memcached內的資料。

=======================
雖然這個memcache服務是在linux上開發的,但是目前也有提供給win環境IIS上支援
但IIS的機制上還需要再找時間研究,目前先在linux上做架設動作

OS:CentOS 6.3 + LAMP
WebServer:Apache
測試語言:PHP
透過SSH登入後直接先透過指令安裝memcached
1.
yum install memcached
還有安裝支援php的extension <<這個套件是要在執行PHP的主機上安裝
yum install php-pecl-memcache
然後就會開始安裝所需要的套件了

2.安裝完成後檢查一下php上是否已經支援memcached模組
php -m|grep memcache

如果成功會顯示memcache
3.設定memcached服務開機時自動啟動
chkconfig memcached on

4.檢查memcached是否啟動正常
chkconfig --list memcached
成功的話2~5項會顯示on

5.檢查一下是否正確的Listen,預設會是port 11211
netstat -ntulp | grep 11211

6.memcached設定檔的位置會在/etc/sysconfig/memcached
可以透過vi去開啟看一下
vi /etc/sysconfig/memcached

PORT="11211"           #設定memcached使用的port
USER="memcache"         #配置啟動時使用的用戶
MAXCONN="1024"     #最大連接數
CACHESIZE="64"      #最大使用暫存,預設是64M
OPTIONS=""          #其它設定,EX:有兩台以上的memcached主機就要設定這個。
(OPTIONS目前用不到之後再研究有什麼其他設定)

7.設定好後就可以啟動Memcached
service memcached start

服務其他指令
*service memcached start 啟動
*service memcached stop 停止
*service memcached restart 重新啟動
*service memcached status 啟動狀態
**service可替代成/etc/init.d/**

8.重新啟動httpd
service httpd restart

####目前memcached server都已經設定完成了#####
再來就是利用PHP測試
用PHP要使用memcached有兩種做法
一、修改php.ini讓session預設就放在memcached上
二、要用memcached功能時才call function

先做第一種方式
1.修改php.ini
vi /etc/php.ini

2.找到以下兩行,建議將原本的session.save_handler和session.save_path 在最前面加上;
然後再輸入下面的設定
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15

*save_path是指定session存放的位置因為這裡是在同一台server上所以是127.0.0.1

3.然後在往下找display_errors,並改如下設定
display_errors = on 

*display_errors = on是當PHP程式執行有錯誤時是否顯示在畫面上
*這功能可以幫忙等下測試的除錯,但網站正式上線記得要關掉

4.離開php.ini設定
ESC  >> : >> wq!

5.重新啟動httpd
service httpd restart

以上就是設定php預設session存放位置
接下來放程式,查看設定並測試memcached怎麼做
Apache預設的網站目錄為/var/www/html
一、查看PHP當下所支援的模組
1.新增一個檔案phpinfo.php
vi /var/www/html/phpinfo.php

2.輸入以下程式
  phpinfo();
?>

3.存檔離開
ESC  >> : >> wq!

4.開啟網頁檢視模組是否有成功
*有改session存放的位置多看第二張圖

























二、直接呼叫memcached的功能使用
$memcache = new Memcache();
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$memcache->set('mdata', 'Memcache test OK', 0, 60);
$result = $memcache->get('mdata');
unset($memcache);
echo $result;
?>


清除memcached的暫存
nc localhost 11211
flush_all
exit

如果第二程式執行時出現Permission denied
是因為SELinux這個安全機制把權限鎖住了
就用以下指令解開應該就可以了
setenforce 0

監控 memcache 的工具:
1.memcached-tool 查看memcached的資源
memcached-tool 192.168.1.216:11211 stats

完成



沒有留言:

張貼留言