Linux下安裝Memcache以及安裝過程中一些問題的解決方法
阿新 • • 發佈:2019-01-29
一、下載安裝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`