memcache 安装部署
1.环境配置:
192.168.239.140 :memcache 192.168.239.141:web 192.168.239.142:mysql
2.进行时间同步:
yum install ntp ntpdate ntpdate cn.pool.ntp.org
3.关闭防火墙:
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config [root@localhost ~]# setenforce 0
前提条件:
rpm -e mariadb-libs postfix
4.在web端服务器配置:
yum install mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm yum install http php php-gb php-mysql php-memcache systemctl restart httpd systemctl enable httpd systemctl restart httpd systemctl enable mysql
5.在MySQL服务端创建用户
create user 'memcache'@'%' identified by 'WANGYUFENG@mysql123'; alter user 'memcache'@'%' identified with mysql_native_password by 'WANGYUFENG@mysql123'; flush privileges;
6.在web服务端测试http功能:
vim /var/www/html/index.html this is a test
去百度开启无痕浏览模式测试
7.在web服务端测试php连接功能:
<?php phpinfo(); ?>
~
8.在web服务端测试MySQL
<?php $link=mysql_connect('192.168.239.142','superadmin','WANGYUFENG@mysql123'); if($link) echo "<h1>Success!!</h1>"; else echo "Fail!!"; mysql_close(); ?>
9.在memcache端进行软件下载安装:
libevent安装: wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gz tar zxvf libevent-1.4.14b-stable.tar.gz yum install make gcc gcc-c++ cd libevent-1.4.14b-stable ./configure --prefix=/usr/local/libevent/ make make install
memcache安装: wget https://memcached.org/files/memcached-1.5.16.tar.gz tar -zxvf memcached-1.5.16.tar.gz cd memcached-1.5.16 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ make make install
启动:
cd /etc/rc.d/init.d/ /usr/local/memcached/bin/memcached -d -l 127.0.0.1 -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached.pid -d:启动一个守护进程 -l:监听的服务器IP地址 -p:是设置memcache的TCP监听的端口,最好是1024以上的端口 -u:是运行memcache的用户,如果当前为root的话,需要使用此参数指定用户 -m:是分配给memcache使用的内存数量,单位是MB,默认是64MB -c:选项是最大与模型的最大连接数,默认是1024 -P:是设置保存memcache的pid文件 -M:return error on memory exhausted(rather than removing items) -f:chunk size growth factor (default : 1.25) -I override the size of each sllab page. Adjusts max item size(1.4.2版本新增) 也可以启动多个守护进程,但是端口不能重复
<?php $memcache = new Memcache; $memcache->connect('192.168.239.140',11211) or die ("could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object,false,10) or die ("Failed to save data at the server"); echo "Store data in the cache(data will expire in 10 seconds)<br/>"; $get_result = $memcache->get('key'); echo "Data from the cache:<br/>"; var_dump($get_result); ?>
测试成功结果如下:
Server's version: 1.5.16 Store data in the cache(data will expire in 10 seconds) Data from the cache: object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }
在web端配置session:
vim /etc/php.ini session.save_handler = memcache session.save_path = "tcp://192.168.239.141:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
测试memcache的可用性:
<?php session_start(); if (!isset($——SESSION['session_time'])) { $_SESSION['session_time']=time(); } echo "session_time:".$_SESSION['session_time']."<br/>"; echo "now_time:".time()."<br/>"; echo "session_id:".session_id()."<br/>"; ?>
在MySQL端创建测试数据库:
create user ‘user’@‘%’ identified by ‘WANGYUFENG@mysql123’; create database testab1; use testab1; create table test1( id int not null auto_increment, name int not null, primary key(id)) innodb=engine
测试memcache存储数据库
<?php $memcachehost='192.168.239.140'; $memcacheport=11211; $memcachelife=60; $memcache=new Memcache; $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect"); $query="select * from test1 limit 10"; $key=md5($query); if(!$memcache->get($key)) { $conn=mysql_connect("192.168.239.142","user","WANGYUFENG@mysql123"); mysql_select_db(testab1); $result=mysql_query($query); while($row=mysql_fetch_assoc($result)) { $arr[]=$row; } $f='mysql'; $memcache->add($key,serialize($arr),0,30); $data=$arr; } else{ $f='memcache'; $data_mem=$memcache->get($key); $data=unserialize($data_mem); } echo $f; echo "<br/>"; echo "$key"; echo "<br/>"; //print_r($data); foreach($data as $a) { echo "number is <b><font color=#FF0000>$a[id]</font></b>"; echo "<br/>"; echo "name is <b><font color=#FF0000>$a[name]</font></b>"; echo "<br>"; } ?>
10.memcache管理与监控:
memcache的管理工具:MemAdmin
搭建LAMP环境
php-pear-1.9.4-4.e16.noarch.rpm php-pecl-memcache-3.0.5-4.e16.x86_64.rpm
在web端配置
vim /etc/php.ini 在配置文件末尾追加extension = memcached.so
关闭防火墙,关闭selinux
下载MemAdmin
http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz
解压文件至根目录下
[root@web ~]# tar -xzvf memadmin-1.0.12.tar.gz
打开config.php文件,设置你的管理账号和密码
在浏览器访问memadmin目录,这样就完成了memcache的配置
http://example.com/memadmin/index.php
memcached 监控方法
(1)memcache.php
下载地址 http://pecl.php.net/get/memcache-2.2.7.tgz
(2)memcache自身命令检查 telnet localhost 11211