centos 安装memcache服务后memcahce本机连接Permission

时间:2021-09-12 14:42:23

自己手动在虚拟机下装了下memcache,整个过程真是充满波折,本身用php5.3安装memcache扩展就麻烦很多,无法通过yum直接安装,安装方法详见http://chenwei.me/blog/server/69.html,接下来安装memcache服务,安装成功后,telnet可以成功,不过好像不是立即成功生效,过一会用stats才会有详细显示。

本机用

<?php

$mem = new Memcache;

$mem->connect(‘192.168.124.129′,11211) or die("连接失败");

$mem->getVersion();

?>

不管怎么调试始终都无法成功,后来用母机连接却连接成功了。

所以怀疑是服务器memcache扩展的问题,但是phpinfo()里面确实有了这个扩展,采用

ini_set(‘display_errors’, true);

error_reporting(E_ALL);

之后,可以显示详细错误。

"Memcache::get() [function.Memcache-get]: Server 127.0.0.1 (tcp 11211) failed with: Permission denied (13) in /var/www/.."

百度上找不到相关信息,不过google强大很多,得知这是selinuxd的问题,

selinux是一套linux的安全系统,它指定了应用程序可以访问的磁盘文件、网络端口等等。

如果装有selinux,那么默认的selinux会阻止memcache程序访问11211端口,所以必须对selinux进行配置才行。

方法1: 临时降低selinux运行级别,以便我们进行测试

命令:setenforce [Enforcing | Permissive]

Enforcing表示不允许违反策略的操作

Permissive表示允许违反策略的操作,但会记录下来

我们使用 setenforce Permissive

方法2: 修改selinux配置文件,关闭selinux

编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled

方法3: 修改selinux的http策略,使得httpd进程可以访问网络,这样也就可以使用memcache了

命令:setsebool -P httpd_can_network_connect true

参数P的意思是保持设置的有效性,这样在重启之后这个设置依然有效,不会改变

我采用的是改/etc/selinux/config  SELINUX=0 重启后成功。

附:centos 安装memcache服务的方法

1.编译安装Libevent

cd ~

curl -O http://www.monkey.org/~provos/libevent-2.0.13-stable.tar.gz

tar -zxvf libevent-2.0.13-stable.tar.gz

cd libevent-2.0.13-stable-tar.gz

./configure –prefix=/usr

make && make install

检测一下查看是否安装:

ls -al /usr/lib | grep libevent

#显示

libevent.so -> libevent-2.0.so.5.1.2

2.安装Memcache

cd ~

curl -O http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz

tar -zxvf memcached-1.4.0.tar.gz

cd memcached-1.4.0.tar.gz

./configure –with-libevent=/usr/

make && make install

检测是否成功安装

ls -al /usr/local/bin/mem*

#显示

/usr/local/bin/memcached

开启Memcached守护进程

memcached -d -u root

完整命令

/usr/local/bin/memcached -d -m 200 -u root -c 256 -p 11211 -P /tmp/memcache.pid

#无提证明开启成功

#连接参数

-p 监听端口

-l 连接的IP地址,默认是本机

-d start启动memecache服务

-d restart重启

-d stop|shutdown关闭服务

-d install 安装

-d uninstall 卸载

-u 以身份运行仅在root下有效

-m 最大内存使用,单位MB,默认64MB,最大2G

-M 内存耗尽时返回错误

-c 最大同时连接数量,默认是1024

-f 块大小增长因为,默认是1.25

-n 最小分配空间,key+value+flags默认48

-h 显示帮助

#使用telnet连接

telnet localhost 11211

#直接按回车会出现客户端错误.

#查看当前状态命令

stats

stats参数参考

STAT pid 22459                             进程ID

STAT uptime 1027046                        服务器运行秒数

STAT time 1273043062                       服务器当前unix时间戳

STAT version 1.4.4                         服务器版本

STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)

STAT rusage_user 0.040000                  进程累计用户时间

STAT rusage_system 0.260000                进程累计系统时间

STAT curr_connections 10                   当前打开连接数

STAT total_connections 82                  曾打开的连接总数

STAT connection_structures 13              服务器分配的连接结构数

STAT cmd_get 54                            执行get命令总数

STAT cmd_set 34                            执行set命令总数

STAT cmd_flush 3                           指向flush_all命令总数

STAT get_hits 9                            get命中次数

STAT get_misses 45                         get未命中次数

STAT delete_misses 5                       delete未命中次数

STAT delete_hits 1                         delete命中次数

STAT incr_misses 0                         incr未命中次数

STAT incr_hits 0                           incr命中次数

STAT decr_misses 0                         decr未命中次数

STAT decr_hits 0                           decr命中次数

STAT cas_misses 0                          cas未命中次数

STAT cas_hits 0                            cas命中次数

STAT cas_badval 0                          使用擦拭次数

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785                      读取字节总数

STAT bytes_written 15222                   写入字节总数

STAT limit_maxbytes 1048576                分配的内存数(字节)

STAT accepting_conns 1                     目前接受的链接数

STAT listen_disabled_num 0

STAT threads 4                             线程数

STAT conn_yields 0

STAT bytes 0                               存储item字节数

STAT curr_items 0                          item个数

STAT total_items 34                        item总数

STAT evictions 0                           为获取空间删除item的总数