memcached主机: 192.168.181.5
web主机: 192.168.181.4
mysql主机: 192.168.181.6
首先需要将三台主机上的时间进行同步,可以使用ntp服务.
同时,需要将三台主机防火墙全部关闭,:
systemctl disable firewalld
systemctl stop iptables
在这里将seLinux 中的配置也关了.文件路径: /etc/selinux/conf
1.在web服务器上,卸载系统默认的mysql版本
rpm -e mariadb-libs postfix
安装数据库软件,如果是克隆过来的因为已经安装过了则不需要安装
过程略,如果没有安装参考之前的mysql课件安装
安装lnmp环境
yum install httpd php php-gb php-mysql php-memcache
启动apache服务
systemctl restart httpd
stemctl enable httpd
2在数据库端创建用户,和修改用户权限.
mysql> create user 'memcache'@'%' identified by 'Nebula@123';
mysql> ALTER USER'memcache'@'%' IDENTIFIED WITH mysql_native_password BY 'Nebula@123';
mysql> flush privileges;
- 在web服务器上测试http的状态,在/var/www/html/ 下创建页面index.html文件
然后进行访问测试,在浏览器中访问web主机的ip地址,测试,成功显示,页面内容则是配置正确.
- 再在目录下创建,index.php文件测试: 文件内容代码如下:
<?php
phpinfo();
?>
然后继续用浏览器测试,页面显示成功如下:
在这个页面上可以看到很多的配置信息和版本信息.
php链接正常,后可以进行测试,mysql的链接.
新建一个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();
?>
- 页面出现success则是成功链接.
这里如果出现失败或者其他错误可以查看: /var/log.httpd/error_log
也可以使用追踪: tail -f /var/log/httpd/error_log 查看最新的日志信息.
这里一般出错原因就是在: 数据连接数过多, 防火墙 ,数据库用户名和密码错误.
上述步骤成功后
开始配置memcache服务
在memcache主机上,
下载并安装memcache服务.
yum安装
yum install gcc gcc-c++ libevent-devel
yum install memcached
测试;
首先终结之前启动的memcache进行.
然后重新启动; /usr/local/memcached/bin/memcached -d -l 0.0.0.0 -p 11211 -u root -m 64 -c 1024 -P /var/run/memcached.pid
如果是yum安装的则不需要添加路径.,然后可以使用ps-ef| grep memcache 查看一下进程是否存在.
然后再回到web服务器上: 做代码测试;
在 var/www/html 下创建memcache.php
代码如下;这里的IP地址为memcached端,和他的端口号
<?php
$memcache = new Memcache;
$memcache->connect('192.168.42.29', 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(在web端配置)
vim /etc/php.ini
// 把这段放在最下面即可,IP地址为memcache端地址
session.save_handler = memcache
session.save_path ="tcp://192.168.181.5:11211?persistent=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的可用性; vim/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 />";
?>
到数据主机上创建测试数据库;
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的查看权限
mysql> grant select on testab1.* to memcache@'%';
查看结果如下:
创建好了之后, 在web主机上, 在创建文件: /var/www/html/memcched2.php
这里需要注意,所选择的数据库和表是在mysql主机已经创建的,同时是该用户拥有权限查看的.
第一次浏览器访问页面,(可以看出第一次访问缓存中没有内容,所以是从mysql中直接访问数据源)
刷新页面之后,可以看到当前访问的是memcache内存中的东西,即是在刷新,也是从内存中来获取数据,以此达到了数据缓存的方式.