栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Sisson与Cookie、共享(memcached)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Sisson与Cookie、共享(memcached)

一、基本概念 1、Session & cookies

Session:存储在服务器端,保存客户端的登录状态信息,浏览历史等信息

Cookies:由服务器下发给客户端,保存在客户端的一个文件里。保存的内容主要包括:SessionID、账号名,过期时间等

2、案例拓扑

二、配置web1服务器 1、安装软件

参见前面环境部署文档:虚拟机搭建centos7.5-Nginx七层代理及环境部署_*_花非人陌_*的博客-CSDN博客

2、配置Nginx动静分离
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;     #php-fpm的IP端口
            fastcgi_index  index.php;
           # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;       #加载Fast-CGI参数文件
        }
[root@web1 ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@web1 ~]# systemctl enable --now mariadb
[root@web1 ~]# systemctl enable --now php-fpm
3、部署测试页面

下载测试测试页面文件:链接:https://pan.baidu.com/s/1m_qK61j1OymtRoJTccM2yQ 
提取码:8888 

将测试页面包拷贝到对应文件夹下
[root@web1 ~]# tar -xf lnmp_soft.tar.gz 
[root@web1 ~]# cd lnmp_soft/php_scripts/
[root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz   
[root@web1 php_scripts]# cp -r php-memcached-demo/* /usr/local/nginx/html/
4、验证Session

 登录成功后查看,在web1服务器查看Session文件信息

        -   访问成功后会在session目录下会生成文件

        -  需要清楚网页cook数据,每一次重新登录对应一个session

[root@web1 php_scripts]# cd /var/lib/php/session/
[root@web1 session]# ls
sess_c6bind3cpt3mc3vrdeih42ikn3  sess_pg05i0qs3522mea5cp78mjs7u0
#浏览2次,清过cook数据,所以产生两个文件
二、网站重复登录问题 1、部署第二台服务器

参照web1部署,或者直接克隆web1

 2、修改网页代码(便于区分2台服务器区别)
[root@web2 ~]# sed -ie "// a " /usr/local/nginx/html/index.php #添加颜色属性
[root@web2 ~]# sed -ie "// a " /usr/local/nginx/html/home.php  #添加颜色属性
3、部署Nginx代理服务器(7层)

 参见前面环境部署文档:虚拟机搭建centos7.5-Nginx七层代理及环境部署_*_花非人陌_*的博客-CSDN博客

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
http {                    
    upstream servers {          #注意,upstream模块要写到http的里面
        server 192.168.5.106:80;
        server 192.168.5.107:80;
}
...
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://servers;  #通过proxy_pass将用户的请求转发给servers集群,他的语句优先级高于root,放root前面和后面都可以
            root   html;
            index  index.php index.html index.htm;
        }
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
4、测试

客户端反复测试代理服务器:http://192.168.5.108/index.php    效果如下

 三、Session共享 1、拓扑图

2、memcached概述
高性能的分布式缓存服务器;缺点重启后所有数据丢失
        - 用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度
        - 官方网站:http://memcached.org/
        - memcached支持许多平台:Linux、FreeBSD、Solaris (memcached 1.2.5以上版本)、Mac OS X、Windows

3、部署memcached
[root@proxy ~]# yum -y install memcached
[root@proxy ~]# systemctl enable --now memcached
[root@proxy ~]# cat /etc/sysconfig/memcached     #配置文件定义的变量
PORT="11211"
USER="memcached"
MAXCONN="1024"     #最大连接数
CACHESIZE="64"     #最大缓存数64M
OPTIONS=""
[root@proxy ~]# cat /usr/lib/systemd/system/memcached.service  #服务配置文件
[Unit]
Description=Memcached 
Before=httpd.service
After=network.target

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached   #加载配置文件定义的变量文件路径
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
                    启动服务                         内存大小      并发量      
[Install]
WantedBy=multi-user.target
4、使用telnet测试memcached服务器
[root@proxy ~]# yum -y install telnet
[root@proxy ~]# telnet  192.168.4.5  11211
Trying 192.168.4.5...
……
##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。
set name 0 180 3                //定义变量,变量名称为name
plj                            //输入变量的值,值为plj                
STORED
get name                        //获取变量的值
VALUE name 0 3                 //输出结果
plj
END
##提示:0表示不压缩,180为数据缓存时间,3为需要存储的数据字节数量。
add myname 0 180 10            //新建,myname不存在则添加,存在则报错
set myname 0 180 10            //添加或替换变量
replace myname 0 180 10        //替换,如果myname不存在则报错
get myname                    //读取变量
delete myname                    //删除变量
flush_all                        //清空所有
quit                            //退出登录 
5、PHP+Memcached
安装PHP扩展
        - 默认PHP无法连接memcached数据库
        - 需要安装扩展软件包,才能让PHP连接memcached数据库
        - 为web1/2主机安装扩展包

#Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享
[root@web1 ~]# yum -y install php-pecl-memcache
#修改php文件
[root@web1 ~]# grep  'php_value[' /etc/php-fpm.d/www.conf  #修改前
php_value[session.save_handler] = files                #存储方式为文件
php_value[session.save_path] = /var/lib/php/session    #指定本地目录,保存到此目录下

[root@web1 ~]# sed -i '224s/files/memcache/' /etc/php-fpm.d/www.conf
[root@web1 ~]# sed -i '225s%/var/lib/php/session%"tcp://192.168.4.5:11211"%' /etc/php-fpm.d/www.conf
[root@web1 ~]# grep  'php_value[' /etc/php-fpm.d/www.conf #修改后 
php_value[session.save_handler] = memcache                #存储方式保存到缓存数据库里
php_value[session.save_path] = "tcp://192.168.4.5:11211"  #指定网络路径
[root@web1 ~]# systemctl restart php-fpm

web2同web1操作一致
6、测试
客户端测试效果
反复测试访问代理服务器:http://192.168.4.5/index.php
实际实现的是负载均衡效果,输入用户名和密码进入反复测试,web1和web2会来回切换,但是sessionID不会变化

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号