实验:搭建LAMP+memcache

本文详细介绍如何在三台虚拟机上搭建web、mysql和memcached服务,包括环境规划、软件安装、服务测试及session存储配置,实现web与数据库、缓存服务的高效交互。

在这里插入图片描述
环境规划:
准备三台虚拟机
192.168.50.136: web
192.168.50.140: mysql
192.168.50.142: memcached

首先对三台虚拟机进行如下操作:
①关闭防火墙,②且同步时间,③卸载mariadb-libs和postfix;
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

web服务器设置
在192.168.50.136

安装软件httpd,mysql 和 php模块
因本机httpd已安装过所以直接安装mysql和php

 下载mysql安装包 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-1.el8.x86_64.rpm-bundle.tar

在这里插入图片描述

在这里插入图片描述
接着安装php模块
在这里插入图片描述
安装完成后重启服务
在这里插入图片描述
在mysql机上192.168.50.140,创建一个用户
在这里插入图片描述
在返回web机上192.168.50.136
测试httpd功能,php链接功能,和mysql

测试httpd

		vim /var/www/html/index.html
		test1

在这里插入图片描述
测试php链接

	vim /var/www/html/index.php
	 <?php
     phpinfo();
     ?>

在这里插入图片描述

测试web和mysql的连通性

	vim  /var/www/html/mysql.php
	<?php
    $link=mysql_connect('192.168.50.140','memcache','Howie1.com');
    if($link) echo "<h1>Success!!</h1>";
	else echo "Fail!!";
	mysql_close();
	?>

在这里插入图片描述

memcache服务配置
192.168.50.142
首先安装libevent和memcached在这里插入图片描述
安装编译器
在这里插入图片描述
编译安装在这里插入图片描述
执行

	 make
     make install

在这里插入图片描述
执行

	make 
    make install

测试web和memcached的连通性(返回到web机上 192.168.50.136)

①.启用memcached并监听所有地址在这里插入图片描述
②.代码测试

		vim /var/www/html/memcache.php
		<?php
		$memcache = new Memcache;
		$memcache->connect('192.168.50.142', 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);
		?>

测试结果
在这里插入图片描述
配置session,将session的存储方式改为memcache

	vim /etc.php.ini    修改配置文件

修改session.save_handler = memcache
和 session.save_path = “tcp://192.168.50.136:11211?persistent=1&weight=1&timeout=1&retry_interval=15”
在这里插入图片描述

测试memcache的可用性

vim /var/www/html/session.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 />";
	?>

测试结果
在这里插入图片描述
在mysql机上 192.168.50.140
创建数据库

创建表:
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');
select * from test1;

用户授权:
grant select on testab1.* to 'memcache'@'%';

在web机上192.168.50.136
测试memcache是否缓存数据库成功

	vim /var/www/html/test.php
	
	<?php
	$memcachehost = '192.168.50.142';
	$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.50.140","memcache","Howie1.com");
	mysql_select_db(test1);
	$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>";
	}
	?>

测试结果
当用户第一次访问时memcache中没有缓存数据,则直接访问数据库
在这里插入图片描述
第二次访问时,是memcache已经有个缓存数据,所以直接从memcache取出数据在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值