通过修改PHP-FPM配置文件,实现session会话共享:
- 配置PHP使用memcached服务器共享Session信息
- 客户端访问两台不同的后端Web服务器时,Session 信息一致
环境:
- 部署LNMP+memcached网站平台, 参考之前的随笔,这里不做介绍
- Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享
拓扑图:
一, 在后端的两台LNMP服务器上部署Session共享, 以 web1为例(web也需做如下相同操作)
1.为PHP添加memcache扩展
[root@web1 ~]# yum -y install php-pecl-memcache #两台web服务器都要安装
2.修改PHP-FPM配置文件,并重启服务
[root@web1 ~]# 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 #定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
php_value[session.save_path] = "tcp://192.168.2.5:11211" #通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
[root@web1 ~]# systemctl restart php-fpm
二, 客户端使用浏览器访问web1和web2,验证Session是否一致
1. 部署 web1 的测试页面
[root@web1 ~]# tar -xf php-memcached-demo.tar.gz #找一个php的测试页面
[root@web1 php_scripts]# cd php-memcached-demo
[root@web1 php-memcached-demo]# ls
home.php images index.php login.php README.md style.css
[root@web1 php-memcached-demo]# cp -r * /usr/local/nginx/html/ #拷贝php页面到Nginx的网页目录下
[root@web1 php-memcached-demo]# vim home.php
<body bgcolor=blue> #定义home.php的页面颜色为blue, 以便于区分后端两台不同的web服务器
[root@web1 php-memcached-demo]# vim index.php
<body bgcolor=red> #定义index.php的页面颜色为red,以便于区分后端两台不同的web服务器
2. 部署 web2 的测试页面
[root@web2 ~]# tar -xf php-memcached-demo.tar.gz #找一个php的测试页面
[root@web2 php_scripts]# cd php-memcached-demo
[root@web2 php-memcached-demo]# ls
home.php images index.php login.php README.md style.css
[root@web2 php-memcached-demo]# cp -r * /usr/local/nginx/html/ #拷贝php页面到Nginx的网页目录下
[root@web2 php-memcached-demo]# vim home.php
<body bgcolor=blue> #定义home.php的页面颜色为blue, 以便于区分后端两台不同的web服务器
[root@web2 php-memcached-demo]# vim index.php
<body bgcolor=red> #定义index.php的页面颜色为red,以便于区分后端两台不同的web服务器
3. 浏览器访问后端服务器web1和web2 的测试页面
[root@web1 ~]# firefox http://192.168.2.100 #在web1网站上注册用户,密码
[root@web1 ~]# cd /var/lib/php/session/
[root@web1 ~]# ls #查看服务器本地生成的Session信息
sess_qqek1tmel07br8f63d6v9ch401
[root@web2 ~]# firefox http://192.168.2.200 #在web2网站上注册用户,密码
[root@web2 ~]# cd /var/lib/php/session/
[root@web2 ~]# ls #查看服务器本地生成的Session信息
sess_qqek1tmel07br8f63d6v9ch401
4. 总结
可以看到, 客户端访问两台不同的后端Web服务器时,Session 信息一致,实现共享.
结束.