• 二十一.构建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
  • 相关阅读:
    Makefile学习
    Tmux使用
    Linux进程管理学习资料
    Linux内存管理学习资料
    Python常用的软件包
    Docker 学习
    Intel处理器技术文档
    Firefly-RK3399笔记
    Linux Kernel API
    ARM 技术文档
  • 原文地址:https://www.cnblogs.com/luwei0915/p/10484533.html
Copyright © 2020-2023  润新知