【转】centos安装memcached+php多服务器共享+session多机共享问题
参考博文:
centos安装memcached 源码安装
PHP如何将session保存到memcached中?如何分布式保存PHP session 这个参考价值高
centos系统为php安装memcached扩展 参考价值很高
session多机共享双向备份参考博文(很好):Repcached实现Memcached主从复制功能
一、安装Memcache
1. Yum安装Memcache
查找memcached
yum search memcached
该命令可以查询yum库中有关memcached的安装包信息,以下是搜寻结果截图:
安装 memcached
yum -y install memcached
该命令用来安装memcached,不必关心其中各个安装包之间的依赖。命令执行结果如下图所示:
(备注:如果执行yum –y install memcached报网络解析异常,则说明当前无法联网,或者说明dns服务器没有正确配置,如果因为dns没有配置原因,可以通过 vi /etc/resolv.conf
添加 nameserver 192.98.18.20(dns服务器地址) 来配置dns映射)
验证安装memcached
memcached –h
该命令主要的功能是提供memcached的帮助信息,罗列memcached命令有哪些接口以及接口参数。具体信息参考截图:
修改memcached配置文件
chkconfig --level 2345 memcached on 执行该命令将memcached加入linux服务。添加成功以后,你可以使用service memcached start|stop|restart等命令来启动、关闭、重启memcached服务。
修改memcached的参数,主要涉及memcached启动绑定的端口、用户、最大连接、最大内存等,命令:vi /etc/sysconfig/memcached 命令响应结果如截图:
通过vi命令即可修改上面各个参数。PORT,服务启动端口。USER,服务启动用户。MAXCONN,服务配置支持最大连接数。CACHESIZE,服务支持的最大内存,以M为单位。
重启memcached服务
修改上面的参数以后,需要重启memcached服务,不然参数是无法立即生效的。重启服务,只需执行:service memcached restart。服务重启以后,即可使用memcached-tool来检测memcached服务状态。
使用memcached-tool检测memcached服务
执行memcached-tool 127.0.0.1:11211 stats即可检测memcached的服务状态。如果报错,连接不上,那么说明memcached没有正确安装或者没有启动。执行正常,内容如截图所示:
1. 通过yum安装
yum -y install memcached
#安装完成后执行:
memcached -h
#出现memcached帮助信息说明安装成功
加入启动服务
chkconfig --level 2345 memcached on
2.Memcached是基于libevent实现的,所以要首先确保已经安装libevent
yum install libevent
3. 配置Memcached
vim /etc/sysconfig/memcached
#文件中内容如下,按需要修改:
PORT="" #端口
USER="root" #用户名
MAXCONN="" #最大连接数
CACHESIZE="" #内存大小
OPTIONS="" #附加参数
4. 安装libmemached
wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
tar -zxvf libmemcached-1.0.16.tar.gz
cd libmemcached-1.0.16
./configure -prefix=/usr/local/libmemcached -with-memcached
make && make install
5. 安装php-devel
yum install php-devel
6. 安装PHP Memcached扩展
我的php是yum安装的 所以调整下路径
wget http://pecl.php.net/get/memcached-2.1.0.tgz
tar -zxvf memcached-2.1.0.tgz
cd memcached-2.1.0
/usr/bin/phpize
./configure -enable-memcached -with-php-config=/usr/bin/php-config -with-zlib-dir -with-libmemcached-dir=/usr/local/libmemcached -prefix=/usr/local/phpmemcached
make && make install
配置 php.ini
[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
;session.save_handler = files ;myadd
extension = memcached.so
session.save_handler = memcached
session.save_path = "tcp://192.168.239.128:11211,tcp://192.168.239.130"
打开phpinfot.php 显示session信息如下:
测试配置成功与否:
<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}
$_SESSION['TEST3'] = time();
print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>
可以直接用sessionid 去 memcached 里查询一下:
telnet 127.0.0.1 11211
具体查询参考: 查看 memcached 的 key 與快取資料
由于 memcache 和mecached 命令有所不同 所以网上查的验证代码都测试通不过!
配置中碰到的错误
1、Warning: Unknown: Failed to write session data (memcached). Please verify that the current setting of session.save_path is correct (tcp://127.0.0.1:11211) in Unknown on line 0
决方案是把tcp://去掉
extension = memcached.so
session.save_handler=memcached
session.save_path="127.0.0.1:11211"
cp://开头的是memcache扩展的写法,memchached扩展不需要。
2、Fatal error: Call to undefined function memcache_connect()
应该是memcached的函数 名称 或访问代码不对 待处理!
3、两台虚拟机 一台按照上面的配置 成功,另外一台配置出问题 telnet 后 没有session 数据 郁闷啊!
session多机共享问题
两台服务器互相拷贝session 实现同步双向备份。
由于之前已经安装了 memcached 本人先是把 memcached 卸载 然后按照 参考博文 Repcached实现Memcached主从复制功能
安装 但是考虑到一个问题,php 如何识别 memcached, 后来哥们不管那么多 直接 安装 竟然可以成功复制!
按照参考博文中的 方案2执行如下:
1. 安装libevent:
wget http://downloads.sourceforge.net/levent/libevent-2.0.22-stable.tar.gz
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local/lib
make && make install
2. 将libevent的库文件添加到动态库中:
vi /etc/ld.so.conf 在最后添加如下行:
/usr/local/lib #此处为要添加的libevent库目录
在此注意:/usr/local/lib目录下是否有 libevent-2.0.so* 如果没有 那么libevent-2.0.so*路径为 :/usr/local/lib/lib
重新加载动态lib库
ldconfig
注意:如果无此步骤,在启动memcached时,会提示看不到libevent的库文件。
3. 测试libevent是否安装成功:
ls -al /usr/lib | grep libevent*
4. 创建启动帐号:
groupadd memcached
useradd -g memcached memcached
5. 创建PID进程目录并修改所有者:
mkdir /var/run/memcached
chown -R memcached.memcached /var/run/memcached
6. 安装整合memcached-repcached包:
wget http://softlayer-dal.dl.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
cp memcached-1.2.8-repcached-2.2.1.tar.gz /usr/local
cd /usr/local
tar zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
mv memcached-1.2.8-repcached-2.2.1 memcached
cd memcached
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/lib --enable-replication --enable-64bit
注意:默认memcached单个进程只支持到2G内存,需要更大内存支持的话,需要打开64位支持,编译的时候加参数: --enable-64bit
make && make install
提示编译出错:
make all-recursive
make[1]: Entering directory `/usr/local/memcached'
Making all in doc
make[2]: Entering directory `/usr/local/memcached/doc'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/memcached/doc'
make[2]: Entering directory `/usr/local/memcached'
gcc -DHAVE_CONFIG_H -I. -DNDEBUG -m64 -g -O2 -MT memcached-memcached.o -MD
MP -MF .deps/memcached-memcached.Tpo -c -o memcached-memcached.o `test -f
memcached.c' || echo './'`memcached.c
memcached.c: In function ‘add_iov’:
memcached.c:697: error: ‘IOV_MAX’ undeclared (first use in this function)
memcached.c:697: error: (Each undeclared identifier is reported only once
memcached.c:697: error: for each function it appears in.)
make[2]: *** [memcached-memcached.o] Error 1
make[2]: Leaving directory `/usr/local/memcached'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/memcached'
make: *** [all] Error 2
解决方案:
vi memcached.c
将下面的几行
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
#if defined(__FreeBSD__) || defined(__APPLE__)
# define IOV_MAX 1024
#endif
#endif
修改为
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
# define IOV_MAX 1024
#endif
重新编译和安装:
make && make install
查看帮助:
./bin/memcached -h memcached 1.2.8
repcached 2.2.1
-p <num> TCP port number to listen on (default: 11211)
-U <num> UDP port number to listen on (default: 11211, 0 is off)
-s <file> unix socket path to listen on (disables network support)
-a <mask> access mask for unix socket, in octal (default 0700)
-l <ip_addr> interface to listen on, default is INDRR_ANY
-d run as a daemon
-r maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections, default is 1024
-k lock down all paged memory. Note that there is a
limit on how much memory you may lock. Trying to
allocate more than that would fail, so be sure you
set the limit correctly for the user you started
the daemon with (not for -u <username> user;
under sh this is done with 'ulimit -S -l NUM_KB').
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-h print this help and exit
-i print memcached and libevent license
-P <file> save PID in <file>, only used with -d option
-f <factor> chunk size growth factor, default 1.25
-n <bytes> minimum space allocated for key+value+flags, default 48
-R Maximum number of requests per event
limits the number of requests process for a given con nection
to prevent starvation. default 20
-b Set the backlog queue limit (default 1024)
-x <ip_addr> hostname or IP address of peer repcached
-X <num:num> TCP port number for replication. <listen:connect> (default: 11212)
修改memcached目录所有者:
cd ..
chown -R memcached.memcached memcached
配置主从复制
参数说明:
-x 设置从哪个IP上进行同步。
-X 指定数据同步的端口。
Memcached默认服务端口是11211,默认同步监听端口是11212。
启动Master:
/usr/local/memcached/bin/memcached -d -m 100 -l 192.168.11.51 -p 11211 -u memcached -c 1024 -x 192.168.11.52 -X 11212 -P /var/run/memcached/memcached-rep.pid
查看监听端口:
netstat -tupln | grep memcached tcp 0 0 192.168.11.51:11211 0.0.0.0:* LISTEN 18634/memcached
tcp 0 0 192.168.11.51:11212 0.0.0.0:* LISTEN 18634/memcached
udp 0 0 192.168.11.51:11211 0.0.0.0:* 18634/memcached
启动Slave:
/usr/local/memcached/bin/memcached -d -m 100 -l 192.168.11.52 -p 11211 -u memcached -c 1024 -x 192.168.11.51 -X 11212 -P /var/run/memcached/memcached-rep.pid
说明:-x 192.168.11.51用于同步的Master的IP地址。
查看监听端口:
netstat -tupln | grep memcached tcp 0 0 192.168.11.52:11211 0.0.0.0:* LISTEN 24262/memcached
udp 0 0 192.168.11.52:11211 0.0.0.0:* 24262/memcached
【转】centos安装memcached+php多服务器共享+session多机共享问题的更多相关文章
- centos 安装 memcached
centos 安装 memcached 1. 安装依赖: libeventyum install libevent-devel 2. 获取最新版本wget http://memcached.org/l ...
- windows使用nginx+memcached实现负载均衡和session或者缓存共享
windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...
- 如何在CentOS 7上安装Memcached(缓存服务器)
首先更新本地软件包索引,然后使用以下yum命令从官方CentOS存储库安装Memcached. yum update yum install memcached 接下来,我们将安装libmemcach ...
- Centos安装Memcached和(Nginx)Memcache扩展详细教程
下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 ...
- CentOS安装memcached及配置php的memcache扩展
遇到的问题: 这个问题主要是linux服务器安装memcached服务后,phpinfo信息没有memcache扩展,所以主要是给php安装memcache扩展,教程中是安装memcache扩展,我认 ...
- CentOS 安装memcached
一,安装libevent 安装位置 /usr/lib #tar -zxvf libevent-2.0.21-stable.tar.gz # cdlibevent-2.0.21 # ./configur ...
- Centos安装TFTP/NFS/PXE服务器网络引导安装系统
客户端网卡要求支持以PXE启动,配置都在服务端进行,通过PXE网络启动安装系统流程: 客户端以PXE启动发送DHCP请求: 服务器DHCP应答,包括客户端的IP地址,引导文件所在TFTP服务器: 客户 ...
- centos安装memcached和PHP php-pecl-memcached.x86_64
安装memcached sudo yum install memcached.x86_64 安装php-pecl-memcached php memcache有两个实现类 php-pecl-memca ...
- 烂泥:CentOS安装及配置TFTP服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 为什么要学习有关TFTP服务器的安装及配置呢?主要是为了后续学习有关linux系统的无人值守安装做准备. TFTP简单文件传输协议,使用UDP的69端口 ...
随机推荐
- Eclipse4.3正式版已发布
Eclipse4.3正式版已发布,传送门http://www.eclipse.org/downloads/
- set up blog on github
http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
- linux 命令大全
工作了一段时间,开始整理资料,好记性不如烂笔头啊. linux命令大全下载路径: 1.http://www.pc6.com/SoftView/SoftView_28912.html 2.http:// ...
- Linux第三方源
由于版权等各方面原因,很多时候在基础安装完Linux后,满多软件并不包含在yum(对于Ubuntu可能是apt-get)源中. 因此可以去下载第三方源,安装下载第三方软件.当然,如果习惯了源代码编译安 ...
- CPU卡
CPU卡芯片通俗地讲就是指芯片内含有一个微处理器,它的功能相当于一台微型计算机.人们经常使用的集成电路卡(IC卡)上的金属片就是CPU卡芯片.CPU卡可适用于金融.保险.交警.政府行业等多个领域,具有 ...
- HDU 3328 Flipper
题解:直接建n个栈,模拟过程即可…… #include <cstdio> #include <cstring> #include <stack> using nam ...
- JavaScript闭包理解的关键 - 作用域链
阮一峰的一篇文章已经对闭包的用途.概念讲解地相对清晰了. 闭包就是能够读取其他函数内部变量的函数. 但我认为里面对于作用域链的解释还不够清晰,这里作一些补充. 闭包之所以可以读取外部函数的内部变量,即 ...
- mysql三个应用场景
场景一,数据表自动备份(多个数据表字段同步等),使用触发器.如updatelog记录对资源的所有操作日志,reslastlog记录资源最后操作的日志信息.同步方式实现如下: //创建表 DROP TA ...
- powershell 生成随机用户信息
#生成随机用户信息,包括姓名.QQ.邮箱,手机号 $nameArr=@('一','丁','三','专','世','业','丝','中','丰','临','丹','丽','举','乃','义', '乐' ...
- c 有关N!阶乘的相关问题----陆续补充上来
第一个:求N!结果中末尾0的个数问题.思路是末尾0的产生 5*偶数,阶乘中偶数的个数肯定比5多,所以求出阶乘中5的个数就可以求出末尾0的个数. #include<stdio.h> in ...