Linux下安装Memcache以及安装过程中一些问题的解决方法

一、下载安装libevent

 1 cd /tmp                                                     #切换到tmp目录
 2 
 3 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz      #下载
 4 
 5 tar zxvf libevent-1.2.tar.gz                                #解压
 6 
 7 cd libevent-1.2                                             #切换到libevent目录
 8 
 9 ./configure --prefix=/usr                                   #配置安装路径
10 #如果此步骤报错,检查一下有没有安装编译器,没有的话运行以下命令进行安装
11 yum install gcc
12 
13 make                                                        #编译
14 #如果提示:make: *** 没有指明目标并且找不到 makefile。 停止。   即为没有安装编译器
15 
16 make install                                                #安装
17 
18 ls -al /usr/lib | grep libevent                             #测试是否安装成功
19 
20 lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
21 -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
22 -rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a
23 -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
24 lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
25 
26 显示以上信息,即已安装成功

二、下载安装memcache

 1 cd /tmp                                                             #切换到tmp目录
 2 wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz     #下载
 3 tar zxvf memcached-1.2.0.tar.gz                                     #解压
 4 cd memcached-1.2.0                                                  #切换到解压目录
 5 ./configure --with-libevent=/usr                                    #配置
 6 make                                                                #编译
 7 make install                                                        #安装
 8 
 9 ls -al /usr/local/bin/mem*                                          #测试是否安装成功
10 
11 -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
12 -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
13 
14 显示以上信息,即已安装成功

三、安装php的memcache扩展 
http://pecl.php.net/package/memcache 去这个网站下载memcache安装包,我下载的是3.0.8 
下载完之后拷贝到linux上

 1 #切换到所在目录
 2 tar vxzf memcache-3.0.8.tgz     #解压
 3 
 4 cd memcache-3.0.8               #切换到目录
 5 
 6 find / -name 'phpize'               #先找出phpize的位置
 7 ./usr/bin/phpize                #我的查找结果是这个
 8 
 9 /usr/bin/phpize                 #执行此文件
10 
11 Can't find PHP headers in /usr/include/php
12 The php-devel package is required for use of this command.
13 #如果出现以上提示,即需要安装php-devel
14 
15 yum install php-devel           #安装php-devel
16 /usr/bin/phpize                 #安装完后再执行此文件
17 
18 find / -name 'php-config'           #查找这个文件
19 ./usr/bin/php-config            #我的查找结果是这个
20 
21 ./configure --enable-memcache --with-php-config=/usr/bin/php-config --with-zlib-dir
22 #把/usr/bin/php-config改成查找出来的路径,然后执行
23 
24 make                            #编译
25 #如果出现一大堆报错,而且其中有一句是:错误:zlib.h:没有那个文件或目录。    即需要安装zlib-devel
26 
27 yum install zlib-devel          #安装zlib-devel
28 #然后再编译安装就ok了
29 make
30 make install
31 
32 安装完之后会有,类似这样的提示
33 Installing shared extensions:     /usr/lib64/php/modules/
34 
35 把php.ini中的extension_dir修改为这个路径就可以了
36 extension_dir = "/usr/lib64/php/modules/"
37 
38 再在php.ini中添加一行
39 extension=memcache.so

三、启动memcache

 1 /usr/local/bin/memcached -P /tmp/memcached.pid -d -m 20 -p 11211 -u root
 2 
 3 各参数说明:
 4 -d:启动一个守护进程
 5 -m:分配给Memcache的内存大小,单位是M
 6 -u:运行Memcache的用户
 7 -l:监听的服务器IP地址
 8 -p:Memcache的监听端口,最好是1024以上的端口
 9 -c:最大并发数,默认是1024
10 -P:设置保存Memcache的pid文件,我设置的是保存在/tmp/memcached.pid
11 
12 如果出现如下错误:
13 /usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory
14 即原因可能是memcached找不到libevent的位置
15 
16 查看libevent的位置在哪
17 find / -name libevent-1.2.so.1
18 /usr/lib/libevent-1.2.so.1      查出来是在这里
19 
20 然后查看memcache是在哪查找libevent的
21 LD_DEBUG=libs memcached -v
22 然后输出了一大堆信息
23 15008:  find library=libevent-1.2.so.1 [0]; searching
24      15008:  search cache=/etc/ld.so.cache
25      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)
26      15008:   trying file=/lib64/tls/x86_64/libevent-1.2.so.1
27      15008:   trying file=/lib64/tls/libevent-1.2.so.1
28      15008:   trying file=/lib64/x86_64/libevent-1.2.so.1
29      15008:   trying file=/lib64/libevent-1.2.so.1
30      15008:   trying file=/usr/lib64/tls/x86_64/libevent-1.2.so.1
31      15008:   trying file=/usr/lib64/tls/libevent-1.2.so.1
32      15008:   trying file=/usr/lib64/x86_64/libevent-1.2.so.1
33      15008:   trying file=/usr/lib64/libevent-1.2.so.1
34 
35 看到memcache是在/usr/lib64/查找libevent的
36 
37 所以创建链接
38 ln -s /usr/lib/libevent-1.2.so.1 /usr/lib64/libevent-1.2.so.1
39 
40 再启动memcache
41 /usr/local/bin/memcached -P /tmp/memcached.pid -d -m 20 -p 11211 -u root
42 
43 启动成功

四、测试

 1 重启apache
 2 service httpd restart
 3 
 4 创建php文件
 5 <?php
 6 $m = new Memcache;
 7 if(!$m->connect('127.0.0.1', 11211)){
 8     die('连接失败');
 9 }
10 $m->set('key', 'memcache安装成功', 0, 60);
11 echo $m->get('key');

至此,memcache已安装完成

设置开机自启动: 
在/etc/rc.d/rc.local中加入启动命令即可

关闭memcache:

1 kill `cat /tmp/memcached.pid`

文章转自:http://blog.csdn.net/codercwm/article/details/52625669

posted @ 2018-02-26 12:01  huohuohiahia  阅读(185)  评论(0编辑  收藏  举报