CentOS7安裝memcached

三臺linux服務器系統CentOS7
一臺memcached IP:192.168.155.134
一臺Apache    IP:192.168.155.130
一臺nginx     IP:192.168.155.131


memcached服務器
memcached
下載地址http://memcached.org/
wget下載路徑http://www.memcached.org/files/memcached-1.4.25.tar.gz
這裏用到的是
memcached-1.4.25.tar.gz


memcached基於libevent的事件處理:libevent是個程序庫,他將Linux 的epoll、BSD類操做系統的kqueue等時間處理功能封裝成統一的接口。memcached使用這個libevent庫,所以能在Linux、BSD、Solaris等操做系統上發揮其高性能
libevent
下載地址http://libevent.org/
wget下載路徑http://jaist.dl.sourceforge.net/project/levent/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
這裏用到的是
libevent-2.0.22-stable.tar.gz


用 WinSCP上傳到指定的目錄下,這裏是
/usr/local/src


shell端
查詢系統是否已安裝libevent
RPM是RedHat Package Manager(RedHat軟件包管理工具)相似Windows裏面的「添加/刪除程序」
-i            :install 安裝
-v            :顯示詳細信息
-vv           :顯示更加詳細的信息
-h            :使用#顯示安裝進度
-U            :軟件存在則升級軟件,不存在則安裝軟件
-F            :軟件存在則升級軟件,不存在則不作任何動做
-e            :程序卸載--nodeps  不卸載相關依賴包,可能致使其餘軟件沒法使用
-q            : 查詢某個包是否安裝
--test        :僅測試是否能夠安裝,可是不進行安裝
--nodeps      :不考慮依賴關係進行安裝,可能形成軟件沒法正常使用
--force       :忽略軟件包及文件的衝突
--replacepkge :不管軟件包是否已被安裝,都強行安裝軟件包
--replacepkgs :從新安裝軟件包,如原有配置文件存在,可能沒法覆蓋
以下參數只能配合-q組合使用如-qa在全部已安裝包中查詢是否安裝某個包
-a, --all      : 查詢/驗證全部包
-p, --package  : 查詢/驗證包文件
-l, --list     : 查詢包中的列表文件
-d, --docfiles : 查詢列表全部文檔文件
-f, --file     : 查詢/驗證包擁有的文件
例rpm -ivh zsh-4.3.10-4.1.el6.x86_64.rpm安裝zsh-4.3.10-4.1.el6.x86_64.rpm並顯示詳細信息和安裝進度
|grep 搜索命令的輸出中是否包含某個字符串,加亮顯示(這裏是-qa命令輸出的字符串中查找)
這裏顯示libevent-2.0.21-4.el7.x86_64,說明已安裝libevent-2.0.21-4.el7.x86_64
rpm -qa|grep libevent


卸載已安裝的libevent
rpm -e libevent-2.0.21-4.el7.x86_64


進入到安裝包目錄
cd /usr/local/src


解壓縮libevent到當前文件夾
tar -zxvf libevent-2.0.22-stable.tar.gz


進入解壓縮目錄
cd libevent-2.0.22-stable


配置安裝目錄
./configure --prefix=/usr/local/libevent


編譯
make


安裝
make install


返回上級目錄
cd ../


解壓縮memcached到當前文件夾
這個壓縮包沒有用gzip格式壓縮  因此解壓的時候也不用加上z,直接 tar -xvf 就能夠了
tar -xvf memcached-1.4.25.tar.gz


進入解壓縮目錄
cd memcached-1.4.25


配置安裝目錄,及關聯的libevent庫安裝目錄
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent


編譯
make


安裝
make install


建立文件夾用來保存memcached的進程文件
mkdir -m777 -p /usr/local/memcached/pid


啓動memcached
-d  選項是啓動一個守護進程。
-u  表示啓動memcached的用戶,這裏爲root,能夠指定低權限用戶啓動memcached。
-m  是分配給Memcache使用的內存數量,單位是MB,默認64MB。內容容量達到指定的值以後memcached回自動刪除不適用的緩存
-p  是設置Memcache的TCP監聽的端口,最好是1024以上的端口,memcached默認端口11211。
-c  選項是最大運行的併發鏈接數,按照服務器的負載量來設定,默認是1024。
-P  是設置保存Memcache的pid文件,也就是保存進程ID到指定文件,只有在使用 -d 選項的時候纔有意義。
-vv 輸出詳細信息
也能夠啓動多個守護進程,可是端口不能重複。這樣就能夠在一臺機器上至關擁有多個Memcached服務器
/usr/local/memcached/bin/memcached -d -m 256 -u root -p 11211 -c 1024 -P /usr/local/memcached/pid/memcached.pid -vv


殺死memcached進程
kill `cat /usr/local/memcached/pid/memcached.pid`


/*
或者能夠查看11211端口使用狀況獲取使用進程ID
lsof -i:11211


直接用kill 進程ID 來殺死進程,這裏memcached的進程ID是20146
kill 20146
*/


將memcached放到service控制中將下面代碼新建保存到/etc/init.d/memcached中
#!/bin/bash
# memcached MemCached
# it is v.1.4.25 version.
# chkconfig: - 85 15
# description: memcached is very good
# processname: memcached
MEMCACHED="/usr/local/memcached/bin/memcached"
PID_FILE="/usr/local/memcached/pid/memcached.pid"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
start()
{
    $MEMCACHED -d -m 256 -u root -p 11211 -c 1024 -P ${PID_FILE}
}
stop()
{
    kill `cat $PID_FILE`
}
restart(){
    stop
    start
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    *)
    echo $"Usage: 0 {start|stop|restart}"
    exit 1
esac
exit 0
:wq  保存並退出
vim /etc/init.d/memcached


設置文件的訪問權限
chmod 755 /etc/init.d/memcached


可使用service控制memcached啓用關閉了
service memcached start


讓memcached服務加入到開機啓動指令管理的服務列表中
chkconfig --add memcached


設置開機啓動
chkconfig memcached on


開啓防火牆11211端口的外部訪問
firewall-cmd --zone=public --add-port=11211/tcp --permanent


重啓防火牆
firewall-cmd --reload






Apache和nginx服務器
memcache是PHP的memcached擴展
下載地址http://pecl.php.net/package/memcache
wget下載路徑http://pecl.php.net/get/memcache-2.2.7.tgz
這裏用到的是
memcache-2.2.7.tgz


用 WinSCP上傳到指定的目錄下,這裏是
/usr/local/src


shell端
先安裝m4,autoconf。m4是autoconf必要程序,一會要使用phpize會用到autoconf
yum install m4 autoconf


進入到安裝包目錄
cd /usr/local/src


解壓縮memcache到當前文件夾
tar -zxvf memcache-2.2.7.tgz


進入解壓縮目錄
cd memcache-2.2.7


執行phpize,動態加載PHP擴展模塊
phpize在PHP安裝路徑下的bin文件夾中(執行phpize及下面的配置,編譯,安裝時,當前路徑位置必定要在PHP擴展程序的解壓縮目錄中執行,這裏是/usr/local/src/memcache-2.2.7目錄中)
/usr/local/php/bin/phpize


配置,php-config在PHP安裝路徑下的bin文件夾中
./configure --with-php-config=/usr/local/php/bin/php-config


編譯
make


安裝擴展後會在PHP安裝路徑裏/usr/local/php/lib/php/extensions下自動生成一個文件夾(apache,nginx下生成的文件夾名不同),裏面包含memcache.so
make install



修改php.ini文件,加載memcache.so模塊
在一堆extension下面添加
extension=memcache.so
vim /usr/local/php/php.ini


重啓服務器
apache用service httpd restart,nginx用service php-fpm restart
service httpd restart 或者 service php-fpm restart


在Apache和nginx服務器上新建PHP頁面添加以下內容,執行測試memcached
<?php
$mem = new Memcache;//建立一個memcache對象
//'127.0.0.1'表示安裝 Memcache 的機器IP,11211 鏈接 Memcache 所需的端口號,也是 Memcache 的默認端口號
$mem->connect('192.168.155.134', 11211);

//能夠用connect方法鏈接單個memcached服務器,也能夠用addServer組成分佈式memcached。addServer方法可替代connect來鏈接memcached服務器
//addServer至關把全部用addServer的memcached服務器合成一個大memcached服務器,內存累加,不用關心往哪一個memcached服務器添加數據,客戶端memcache擴展模塊會自動控制往某臺memcached服務器存值,取值
//memcached服務器不互通訊的分佈式:memcached儘管是「分佈式」緩存服務器,但服務器端並無分佈式功能。各個memcached不會互相通訊以共享信息。他的分佈式主要是經過客戶端實現的。
//這裏只有一臺memcached服務器,以添加端口模擬添加一臺memcached服務器
$mem->addServer('192.168.155.134', 11211);
$mem->addServer('192.168.155.134', 11212);//要使用此端口需在memcached服務器上添加該端口的memcached服務 /usr/local/memcached/bin/memcached -d -m 256 -u root -p 11212 -c 1024 -P /usr/local/memcached/pid/memcached.pid -vv

//經常使用操做
//不一樣客戶端可共享memcached服務器裏保存的鍵及值
//往Memcache中自定義鍵值中存入數據
$mem->set('keyName', ' a value', 0, 60);
//獲取Memcache中指定鍵值的值
$val = $mem->get('keyName');
echo $val;
exit;

//替換
$mem->set('keyName', ' a value', 0, 60);
$mem->replace('keyName', 'This is replace value', 0, 60);
$val = $mem->get('keyName');
echo $val;
exit;

//保存數組數據
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('keyName', $arr, 0, 60);
$val = $mem->get('keyName');
var_dump($val);
exit;

//刪除數據
$mem->set('keyName', ' a value', 0, 60);
$mem->delete('keyName');
$val = $mem->get('keyName');
echo $val;
exit;

//清除全部數據
$mem->set('keyName', ' a value', 0, 60);
$mem->set('keyName2', ' a value', 0, 60);
$mem->flush();
$val  = $mem->get('keyName');
$val2 = $mem->get('keyName2');
echo $val,$val2;
exit;

//關閉鏈接
$mem->close();
?>




附
linux啓動memcached選項
-p   : 監聽的TCP端口(默認: 11211)
-U   : 監聽的UDP端口(默認: 11211, 0表示不監聽)
-s   : 用於監聽的UNIX套接字路徑(禁用網絡支持)
-a   : UNIX套接字訪問掩碼,八進制數字(默認:0700-l   : 監聽的IP地址。(默認:INADDR_ANY,全部地址)
-d   : 做爲守護進程來運行。
-r   : 最大核心文件限制。
-u   : 設定進程所屬用戶。(只有root用戶可使用這個參數)
-m   : 單個數據項的最大可用內存,以MB爲單位。(默認:64MB)
-M   : 內存用光時報錯。(不會刪除數據)
-c   : 最大併發鏈接數。(默認:1024-k   : 鎖定全部內存頁。注意你能夠鎖定的內存上限。試圖分配更多內存會失敗的,因此留意啓動守護進程時所用的用戶可分配的內存上限。(不是前面的 -u  參數;在sh下,使用命令"ulimit -S -l NUM_KB"來設置。)
-v   : 提示信息(在事件循環中打印錯誤/警告信息。)
-vv  : 詳細信息(還打印客戶端命令/響應)
-vvv : 超詳細信息(還打印內部狀態的變化)
-h   : 打印這個幫助信息並退出。
-i   : 打印memcached和libevent的許可。
-P   : 保存進程ID到指定文件,只有在使用 -d 選項的時候纔有意義。  
-f   : 塊大小增加因子。(默認:1.25-n   : 分配給key+value+flags的最小空間(默認:48-L   : 嘗試使用大內存頁(若是可用的話)。提升內存頁尺寸能夠減小"頁表緩衝(TLB)"丟失次數,提升運行效率。爲了從操做系統得到大內存頁,memcached會把所有數據項分配到一個大區塊。
-D   : 使用  做爲前綴和ID的分隔符。這個用於按前綴得到狀態報告。默認是":"(冒號)。若是指定了這個參數,則狀態收集會自動開啓;若是沒指定,則須要用命令"stats detail on"來開啓。
-t   : 使用的線程數(默認:4-R   : 每一個鏈接可處理的最大請求數。
-C   : 禁用CAS。
-b   : 設置後臺日誌隊列的長度(默認:1024-B   : 綁定協議 - 可能值:ascii,binary,auto(默認)
-I   : 重寫每一個數據頁尺寸。調整數據項最大尺寸。
相關文章
相關標籤/搜索