1. 程式人生 > >Linux下安裝Memcache以及安裝過程中一些問題的解決方法

Linux下安裝Memcache以及安裝過程中一些問題的解決方法

一、下載安裝libevent

cd /tmp                                                     #切換到tmp目錄

wget http://www.monkey.org/~provos/libevent-1.2.tar.gz      #下載

tar zxvf libevent-1.2.tar.gz                                #解壓

cd libevent-1.2                                             #切換到libevent目錄

./configure --prefix=/usr                                   #配置安裝路徑
#如果此步驟報錯,檢查一下有沒有安裝編譯器,沒有的話執行以下命令進行安裝 yum install gcc make #編譯 #如果提示:make: *** 沒有指明目標並且找不到 makefile。 停止。 即為沒有安裝編譯器 make install #安裝 ls -al /usr/lib | grep libevent #測試是否安裝成功
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3 -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3 -rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so
-> libevent-1.2.so.1.0.3 顯示以上資訊,即已安裝成功

二、下載安裝memcache

cd /tmp                                                             #切換到tmp目錄
wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz     #下載
tar zxvf memcached-1.2.0.tar.gz                                     #解壓
cd memcached-1.2.0                                                  #切換到解壓目錄
./configure --with-libevent=/usr                                    #配置
make                                                                #編譯
make install                                                        #安裝

ls -al /usr/local/bin/mem*                                          #測試是否安裝成功

-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

顯示以上資訊,即已安裝成功

三、安裝php的memcache擴充套件
http://pecl.php.net/package/memcache 去這個網站下載memcache安裝包,我下載的是3.0.8
下載完之後拷貝到linux上

#切換到所在目錄
tar vxzf memcache-3.0.8.tgz     #解壓

cd memcache-3.0.8               #切換到目錄

find / -name 'phpize'               #先找出phpize的位置
./usr/bin/phpize                #我的查詢結果是這個

/usr/bin/phpize                 #執行此檔案

Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
#如果出現以上提示,即需要安裝php-devel

yum install php-devel           #安裝php-devel
/usr/bin/phpize                 #安裝完後再執行此檔案

find / -name 'php-config'           #查詢這個檔案
./usr/bin/php-config            #我的查詢結果是這個

./configure --enable-memcache --with-php-config=/usr/bin/php-config --with-zlib-dir
#把/usr/bin/php-config改成查找出來的路徑,然後執行

make                            #編譯
#如果出現一大堆報錯,而且其中有一句是:錯誤:zlib.h:沒有那個檔案或目錄。    即需要安裝zlib-devel

yum install zlib-devel          #安裝zlib-devel
#然後再編譯安裝就ok了
make
make install

安裝完之後會有,類似這樣的提示
Installing shared extensions:     /usr/lib64/php/modules/

把php.ini中的extension_dir修改為這個路徑就可以了
extension_dir = "/usr/lib64/php/modules/"

再在php.ini中新增一行
extension=memcache.so

三、啟動memcache

/usr/local/bin/memcached -P /tmp/memcached.pid -d -m 20 -p 11211 -u root

各引數說明:
-d:啟動一個守護程序
-m:分配給Memcache的記憶體大小,單位是M
-u:執行Memcache的使用者
-l:監聽的伺服器IP地址
-p:Memcache的監聽埠,最好是1024以上的埠
-c:最大併發數,預設是1024
-P:設定儲存Memcache的pid檔案,我設定的是儲存在/tmp/memcached.pid

如果出現如下錯誤:
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory
即原因可能是memcached找不到libevent的位置

檢視libevent的位置在哪
find / -name libevent-1.2.so.1
/usr/lib/libevent-1.2.so.1      查出來是在這裡

然後檢視memcache是在哪查詢libevent的
LD_DEBUG=libs memcached -v
然後輸出了一大堆資訊
15008:  find library=libevent-1.2.so.1 [0]; searching
     15008:  search cache=/etc/ld.so.cache
     15008:  search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64        (system search path)
     15008:   trying file=/lib64/tls/x86_64/libevent-1.2.so.1
     15008:   trying file=/lib64/tls/libevent-1.2.so.1
     15008:   trying file=/lib64/x86_64/libevent-1.2.so.1
     15008:   trying file=/lib64/libevent-1.2.so.1
     15008:   trying file=/usr/lib64/tls/x86_64/libevent-1.2.so.1
     15008:   trying file=/usr/lib64/tls/libevent-1.2.so.1
     15008:   trying file=/usr/lib64/x86_64/libevent-1.2.so.1
     15008:   trying file=/usr/lib64/libevent-1.2.so.1

看到memcache是在/usr/lib64/查詢libevent的

所以建立連結
ln -s /usr/lib/libevent-1.2.so.1 /usr/lib64/libevent-1.2.so.1

再啟動memcache
/usr/local/bin/memcached -P /tmp/memcached.pid -d -m 20 -p 11211 -u root

啟動成功

四、測試

重啟apache
service httpd restart

建立php檔案
<?php
$m = new Memcache;
if(!$m->connect('127.0.0.1', 11211)){
    die('連線失敗');
}
$m->set('key', 'memcache安裝成功', 0, 60);
echo $m->get('key');

至此,memcache已安裝完成

設定開機自啟動:
在/etc/rc.d/rc.local中加入啟動命令即可

關閉memcache:

kill `cat /tmp/memcached.pid`