二十一.构建memcached服务、LNMP+memcached、PHP的本地Session信息、PHP实现session共享

proxy client web1 web2
 
1.构建memcached服务
]# yum -y install memcached
]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
]# systemctl start memcached
]# netstat -anptu | grep memcached
 
2.使用telnet访问memcached服务器
]# yum -y install telnet
]# telnet 192.168.4.5 11211
##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。
set name 0 180 3 //定义变量,变量名称为name
plj              //输入变量的值,值为plj                
STORED
get name        //获取变量的值
VALUE name 0 3  //输出结果
plj
END
 
add myname 0 180 10  //新建,myname不存在则添加,存在则报错
set myname 0 180 10  //添加或替换变量
replace myname 0 180 10  //替换,如果myname不存在则报错
get myname               //读取变量
append myname 0 180 10   //向变量中追加数据
delete myname           //删除变量
stats          //查看状态
flush_all      //清空所有
quit           //退出登录                                  
 
3.LNMP+memcached(web1 web2)
3.1 部署nginx(前面有)
3.2 部署mariadb
]# yum -y install mariadb mariadb-server mariadb-devel
]# systemctl start mariadb
]# mysqladmin -uroot -p password "123qqq...A"
3.3 部署PHP
]# yum -y install php php-mysql
]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
]# yum -y install php-pecl-memcache
]# systemctl start php-fpm
]# vim /usr/local/nginx/conf/nginx.conf
...
location ~ .php$ {
   root    html;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
 # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
   include        fastcgi.conf;
    }
连接memcache数据库
]# vim /usr/local/nginx/html/test.php
<?php
$memcache=new Memcache;               //创建memcache对象
$memcache->connect('192.168.2.5',11211) or die ('could not connect!!');
$memcache->set('key','test');         //定义变量
$get_values=$memcache->get('key');    //获取变量值
echo $get_values;
?>
检测:
 
4.PHP的本地Session信息
通过Nginx调度器负载后端两台Web服务器,实现以下目标:
部署Nginx为前台调度服务器
调度算法设置为轮询
后端为两台LNMP服务器
部署测试页面,查看PHP本地的Session信息
 
方案:Nginx前端调度器服务器(eth0:192.168.4.5,eth1:192.168.2.5)
Web1服务器(192.168.2.100) Web2服务器(192.168.2.200)
Linux客户机(192.168.4.10)
4.1 proxy搭建nginx(前面有)
web1
]# echo "192.168.2.100" > /usr/local/nginx/html/index.html
web2
]# echo "192.168.2.200" > /usr/local/nginx/html/index.html 
4.2 7层调度
]# vim /usr/local/nginx/conf/nginx.conf
...
upstream webs {
    server 192.168.2.100:80;
    server 192.168.2.200:80;
        }
 
    server {
...
location / {
    proxy_pass http://webs;
...
]# nginx -s reload
client检测:
192.168.2.100
192.168.2.200
192.168.2.100
192.168.2.200
 
4.3 部署测试页面(session)
web1 web2
]# cd php-memcached-demo
]# cp -a * /usr/local/nginx/html/
]# ls
50x.html  images      index.php  README.md  
home.php  index.html  login.php  style.css
web1:(proxy轮询,client方便查看是哪台服务器)
]# vim index.php  --> <body bgcolor="red">
]# vim home.php   --> <body bgcolor="red">
web2:
]# vim index.php  --> <body bgcolor="blue">
]# vim home.php   --> <body bgcolor="blue">
真机goole chrome查看:
http://192.168.4.5/index.php(F5刷新查看登陆页面轮询)
输入账户、密码(2次,以便调度器在两台web服务器都存储session信息)
登陆后:(F5刷新查看登陆页面轮询)
 
5. PHP实现session共享
沿用4,通过修改PHP-FPM配置文件,实现session会话共享.
配置PHP使用memcached服务器共享Session信息.
客户端访问两台不同的后端Web服务器时,Session 信息一致.
在练习三拓扑的基础上,Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享。
5.1 部署memcache
]# yum -y install memcached
]# systemctl restart memcached
]# netstat -anptu | grep memcached
5.2 在后端LNMP服务器上部署Session共享
web1 web2
]# vim /etc/php-fpm.d/www.conf  //文件的最后2行
 
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
//原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)
 
修改后效果如下:
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.2.5:11211"
//定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
//通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
]# systemctl restart php-fpm
 
真机goole chrome查看:
http://192.168.4.5/index.php(F5刷新查看登陆页面轮询)
如果出现错误,查看php日志:
]# ls /var/log/php-fpm/
error.log  www-error.log
原文地址:https://www.cnblogs.com/luwei0915/p/10484533.html