A、Memcache的服务器端程序:
下载地址:http://code.jellycan.com/memcached/
B、Memcache的安装先决条件:先安装libevent
Libevent介绍:libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名的用于apache的php缓存库memcached据说也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
下载地址:http://libevent.org/
A、编译器要求
Memcache的安装文件是要求安装gcc编译器的。否则我们的libevent和memcache都无法安装。
检查是否有gcc编译器的命令:gcc –v
如果系统的gcc编译器可以用,将会有一段描述,否则提示找不到类库。
成功的例如:
先安装libevent,然后安装memcache
A、libevent安装
[root@localhost]#tar -zxvf libevent-2.0.18-stable.tar.gz
切换到libevent的目录中
root@localhost]#cd libevent-2.0.18-stable
指定安装路径到/usr/目录下
[root@localhost]#./configure --prefix=/usr/local/services/libevent//编译
[root@localhost]#make
//安装
[root@localhost]#.make install
B、memcache服务器安装
//先解压缩memcached-1.4.13.tar.gz
[root@localhost]# tar -zxvf memcached-1.4.13.tar.gz
//切换到memcache的目录中
[root@localhost]# cd memcached-1.4.13
//指定安装路径到/usr/local/services/memcached目录下,同时指定libevent的安装位置
[root@localhost]# ./configure --prefix=/usr/local/services/memcached --with-libevent=/usr/local/services/libevent/
//编译
[root@localhost]# make
//安装
[root@localhost]# make install
C、测试是否安装成功:
测试libevent:
[root@localhost]# ls /usr/local/services/libevent/lib/|grep libevent
[root@localhost]# ls -al /usr/local/services/memcached/bin
A、启动Memcache的服务器端:
[root@localhost]# /usr/local/services/memcached/bin/memcached -d -m 100 -u root -l 192.168.3.107 -p 11211 -c 256 -P /tmp/memcached.pid
-d 选项是启动一个守护进程-m是分配给Memcache使用的内存数量,单位是MB,我这里是100MB
-u 是运行Memcache的用户,我这里是root
-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.3.107
-p 是设置Memcache监听的端口,这里设置了11211,最好是1024以上的端口,这里使用默认端口11211
-c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件,这里是保存在/tmp/memcached.pidB、如果要结束Memcache进程,执行:注意内容(`)符号
[root@localhost]# kill `cat /tmp/memcached.pid`
使用telnet来对我们的memcache服务器进行访问
telnet 192.168.3.107 11211
连接上后,直接敲击stats命令看当前缓存服务器状态
[root@localhost]# yum install httpd httpd-devel
安装完成后,启动apache[root@localhost]# /etc/init.d/httpd start
设为开机启动
[root@localhost]# chkconfig httpd on
[root@localhost]# yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml
启动服务[root@localhost]# /etc/init.d/httpd start
A、下载http://pecl.php.net/package/memcache
# tar -zxvf memcache-3.0.6.tgz
# cd memcache-3.0.6
# /usr/bin/phpize# ./configure --enable-memcache
# make
# make install
显示完成:Installing shared extensions: /usr/lib64/php/modules/B、查看目录/usr/lib64/php/modules/
C、编辑php.ini加入扩展文件
[root@localhost]# vim /etc/php.ini
D、重启Apache
[root@localhost]# service httpd restart
E、注意:若是源码代包安装PHP,需指路径
1、# /usr/local/services/php/bin/phpize
2、# ./configure --enable-memcache --with-php-config=/usr/local/services/php/bin/php-config --with-zlib-dir
3、#make && make install之后得到结果
3、# vim /usr/local/services/php/lib/php.ini
加入模块路径
extension_dir="/usr/local/services/php/lib/php/extensions"
extension=memcache.so
A、下载https://launchpad.net/libmemcached/+download libmemcached-1.0.4.tar.tar(注意:版本1.0.7会报找不到event.h的错误)
B、下载http://pecl.php.net/package/memcached memcached-2.0.1.tgz
C、安装libmemcached
# tar -zxvf libmemcached-1.0.4.tar.tar
# cd libmemcached-1.0.4
# mkdir /usr/local/services/libmemcached
# ./configure --prefix=/usr/local/services/libmemcached/
# make
# make install
D、安装memcached
# cd memcached-2.0.1
# /usr/bin/phpize
# ./configure --with-libmemcached-dir=/usr/local/services/libmemcached/
# make
# make install
生成memcached.so文件
E、编辑php.ini加入扩展文件
# vim /etc/php.ini
F、查看PHPINFO扩展
G、注意:若是源码代包安装PHP,需指路径
# tar -zxvf memcached-2.0.1.tgz
# cd memcached-2.0.1/
# /usr/local/services/php/bin/phpize
# ./configure --enable-memcached --with-php-config=/usr/local/services/php/bin/php-config --with-libmemcached-dir=/usr/local/services/libmemcached/
# make
# make install
然后把生成的模块添加的PHP,见(8、安装PHP的MEMCACHE扩展,E点)
A、基于 PHP5 & JQuery 的 Memcached 管理监控工具
下载http://www.junopen.com/memadmin/
B、解压到Apache访问目录
/var/www/html/
问题:SELinux 导致 PHP 无法使用 fsockopen 连接到 Memcached 服务器
执行
# setsebool -P httpd_can_network_relay=1
检查是否成功
# /usr/sbin/getsebool httpd_can_network_relay
httpd_can_network_relay –> on
# sudo tail /var/log/messagesMay 2 15:10:55 Fedora-jin setsebool: The httpd_can_network_relay policy boolean was changed to 1 by root