准备:
IP地址 | 环境 |
192.168.63.252 | memcache |
192.168.63.251 | web |
192.168.63.250 | mysql |
三台服务器均关闭防火墙:systemctl stop firewalled //临时关闭
systemctl disable firewalld //永久关闭
如果配置了iptables防火墙,也要关闭。
setenforce 0 //关闭selinux
同步三台服务器的时间
Web服务器(192.168.63.251)
安装好mysql
安装inmp环境
yum install httpd php php-gb php-mysql php-memcache
启动apache服务
systemctl restart httpd
systemctl enable httpd
(没有请安装)
Mysql服务器(192.168.63.250)
在数据库中创建用户
create user 'memcache'@'%' identified by 'Nebula@123';
修改密码插件
ALTER USER'memcache'@'%' IDENTIFIED WITH mysql_native_password BY 'Nebula@123';
重载用户权限
flush privileges;
查看用户及密码插件
select Host,user,plugin from mysql.user;
Web服务器(192.168.63.251)
Web网页:vim /var/www/html/index.html //随意添加内容
主机浏览器访问192.168.63.251
默认为80端口
测试php
创建文件:vim /var/www/html/index.php
添加内容:
<?php
phpinfo();
?>
主机访问:192.168.63.251/index.php
测试mysql
创建并填写文件
cat /var/www/html/mysql.php
<?php
$link=mysql_connect(‘192.168.42.28:3306','memcache',‘Nebula@123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
主机访问:192.168.63.251/mysql.php
505表示代码编写错误,Fail表示无法连接
查看报错文件:此目录下的/var/log/hpptd中的error_log文件
Memcache服务器(192.168.63.252)
安装memcache
yum install gcc gcc-c++ libevent-devel //安装依赖
yum install memcached //安装memcache
查看ps -ef |grep memcached
多余memcached就将其关闭
memcached -d -l 0.0.0.0 -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached.pid
启动memcached
再次查看ps -ef |grep memcached
Web服务器(192.168.63.251)
创建文件并添加内容
vi /var/www/html/memcache.php
<?php
$memcache = new Memcache;
$memcache->connect('192.168.63.252', 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);
?>
Ip为memcache服务器的IP地址
本机浏览器上访问:192.168.63.251/memcache.php
配置session(web端192.168.63.251)
在vim /etc/php.ini文件的最后加入:
session.save_handler = memcache
session.save_path="tcp://192.168.63.251:11211persistent=1&weight=1&timeout=1&retry_interval=15"
session.save_handler:设置session的储存方式为memcache。默认以文件方式存取session数据,如果想要使用自定义的处理来存取session数据,比如 memcache方式则修为session.save_handler =memcache
session.save_path:设置session储存的位置,多台memcache用逗号隔开
测试memcached的可用性
创建文件并添加:vi /var/www/html/memcached1.php
<?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 />";
?>
在主机浏览器中访问192.168.63.251/memcached1.php
mysql服务器(192.168.63.250)
进入数据库
创建数据库:create database testab1;
进入:use testab1;
创建表:create table test1(id int not null auto_increment,name varchar(20) default null,primary key(id)) engine=innodb auto_increment=1 default charset=utf8;
添加数据:insert into test1(name) values ('tom1'),('tom2'),('tom3'),('tom4'),('tom5');
对memcache用户赋予库testab1的查看权限
grant select on testab1.* to memcache@'%';
查看:show grants for memcache@'%';
Web服务器(192.168.63.251)
创建目录并添加:vi /var/www/html/memcached2.php
<?php
$memcachehost = '192.168.63.252';
//memcache服务器的ip
$memcacheport = 11211;
$memcachelife = 60;
//缓存时间,秒
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$query="select * from test1 limit 10";
//查询语句(最多10行)
$key=md5($query);
if(!$memcache->get($key))
{
$conn=mysql_connect("192.168.63.250","memcache","Nebula@123");
//mysql服务器ip,用户,密码
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>";
}
?>
主机浏览器访问:192.168.63.251/memcached2.php
刷新网页mysql会发生改变为memcache