十、构建memcached服务
阅读原文时间:2023年07月13日阅读:1

装包-------配置----起服务---验证

装包:

[root@proxy ~]# yum -y  install   memcached    //安装软件包memcached

[root@proxy ~]# yum -y install telnet    //安装telnet,用来验证memcached

配置:

[root@proxy ~]# vim /usr/lib/systemd/system/memcached.service    //memcached配置文件(查看即可,不需要修改)

ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

[root@proxy ~]# vim /etc/sysconfig/memcached

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS=""

起服务:

[root@proxy ~]# systemctl  start  memcached

[root@proxy ~]# netstat  -anptu  |  grep memcached

tcp    0    0 0.0.0.0:11211        0.0.0.0:*        LISTEN        2839/memcached     

tcp    0    0 :::11211            :::*                LISTEN        2839/memcached     

udp    0    0 0.0.0.0:11211        0.0.0.0:*                    2839/memcached     

udp    0    0 :::11211            :::*                            2839/memcached

[root@proxy ~]# setenforce 0

[root@proxy ~]# firewall-cmd --set-default-zone=trusted

验证:

[root@proxy ~]# telnet  192.168.4.5  11211

Trying 192.168.4.5…

……

set name 0 180 3  //定义变量,名称为name;0表示不压缩,180数据缓存时间,3需要存储的数据字节数量。

plj                            //输入变量的值,值为plj 字符个数必须与上面定义的存储的数据字节数量3一致             

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                            //退出登录                                  

LNMP+memcached

部署LNMP环境

装包:

[root@proxy ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel  //nginx

[root@proxy ~]# tar -xf nginx-1.12.2.tar.gz

[root@proxy ~]# cd nginx-1.12.2

[root@proxy nginx-1.12.2]#  ./configure --with-http_ssl_module

[root@proxy nginx-1.12.2]# make && make install

[root@proxy ~]# yum -y install  mariadb  mariadb-server  mariadb-devel  //数据库

[root@proxy ~]# yum -y install  php  php-mysql         //php

[root@proxy ~]# yum -y install  php-fpm-5.4.16-42.el7.x86_64.rpm

配置:

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

location / {

            root   html;

            index  index.php  index.html   index.htm;

        }

 location  ~  \.php$  {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

           # fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi.conf;

        }

起服务:

[root@proxy ~]# /usr/local/nginx/sbin/nginx

[root@proxy ~]# systemctl start mariadb

[root@proxy ~]# systemctl start php-fpm

权限:

[root@proxy ~]# setenforce 0

[root@proxy ~]# firewall-cmd --set-default-zone=trusted

创建PHP页面:

[root@proxy ~]# vim /usr/local/nginx/html/test.php  //创建测试页面

connect('localhost',11211) or die ('could not connect!!'); $memcache->set('key','test');             //定义变量 $get\_values=$memcache->get('key');        //获取变量值 echo $get\_values; ?>

测试:

[root@client ~]# firefox http://192.168.4.5/test.php    //无memcached的PHP扩展包,失败

[root@proxy ~]# yum -y install  php-pecl-memcache  //为PHP添加memcache扩展

[root@proxy ~]# systemctl restart php-fpm

4)客户端再次测试(结果会成功显示数据结果)

[root@client ~]# firefox http://192.168.4.5/test.php

PHP的本地Session信息

firefox(服务器返回cookie)<-------------------->服务器(firefox用户信息session)

部署后端LNMP服务器(web1、web2):

[root@web1 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel    //nginx

[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz

[root@web1 ~]# cd nginx-1.12.2

[root@web1 nginx-1.12.2]#  ./configure --with-http_ssl_module

[root@web1 nginx-1.12.2]# make && make install

[root@web1 ~]# yum -y install  mariadb  mariadb-server  mariadb-devel   //数据库

[root@web1 ~]# yum -y install  php  php-mysql                       //php

[root@web1 ~]# yum -y install  php-fpm-5.4.16-42.el7.x86_64.rpm

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf       //修改Nginx配置文件(修改默认首页与动静分离)

location / {

            root   html;

            index  index.php  index.html   index.htm;

        }

 location  ~  \.php$  {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

           # fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi.conf;

        }

[root@web1 ~]# /usr/local/nginx/sbin/nginx    //起服务

[root@web1 ~]# systemctl start mariadb

[root@web1 ~]# systemctl start  php-fpm

[root@web1 ~]# setenforce 0                //权限

[root@web1 ~]# firewall-cmd --set-default-zone=trusted

部署前端Nginx调度服务器(proxy)

[root@proxy ~]# yum  -y  install   pcre-devel openssl-devel   //nginx

[root@proxy ~]# tar -xf nginx-1.12.2.tar.gz

[root@proxy ~]# cd nginx-1.12.2

[root@proxy nginx-1.12.2]# ./configure

[root@proxy nginx-1.12.2]# make && make install

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf     //修改Nginx配置文件

.. ..

upstream webs  {                             //定义后端服务器地址池,默认调度策略为轮询

        server 192.168.2.100:80;

        server 192.168.2.200:80;

  }

 server  {

          listen       80;

          server_name  localhost;

          location  /  {

                 proxy_pass http://webs;

            root   html;

            index  index.php index.html index.htm;

          }

}

[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload       //起服务

[root@proxy ~]# setenforce 0                          //权限

[root@proxy ~]# firewall-cmd --set-default-zone=trusted

[root@client ~]# curl http://192.168.4.5/index.html        //验证,查看是否有数据

部署测试页面(web1、web2)

[root@web1 ~]# cd lnmp_soft/php_scripts/

[root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz

[root@web1 php_scripts]# cd php-memcached-demo

[root@web1 php-memcached-demo]# cp  -a  *  /usr/local/nginx/html/      //属性不变拷贝

[root@web1 ~]# firefox http://192.168.2.100            //访问后端服务器,填写账户信息

[root@web1 ~]# cd /var/lib/php/session/            //查看服务器本地的Session信息

[root@web1 ~]# ls

sess_ahilcq9bguot0vqsjtd84k7244                        //注意这里的ID是随机的

[root@web1 ~]# cat sess_ahilcq9bguot0vqsjtd84k7244

注意:可用修改index.php和home.php两个文件的内容,添加页面颜色属性,以区别后端两台不同的服务器:。

测试(不同后端服务器Session不一致)

[root@client ~]# google-chrome http://192.168.4.5

//填写注册信息后,刷新,还需要再次注册,说明两台计算机使用的是本地Session

//第二台主机并不知道你再第一台主机已经登录,第一台主机的登录信息也没有传递给第二台主机

PHP实现session共享

构建memcached服务(proxy)

[root@proxy ~]# yum -y install memcached

[root@proxy ~]# systemctl restart memcached

[root@proxy ~]# setenforce 0

[root@proxy ~]# firewall-cmd --set-default-zone=trusted

在后端LNMP服务器上部署Session共享

[root@web1 ~]# yum -y install  php-pecl-memcache     //web1、web2, 用于连接memcached数据库

[root@web1 ~]# vim  /etc/php-fpm.d/www.conf            //修改PHP-FPM配置文件的两个参数,文件的最后2行

修改前效果如下:

php_value[session.save_handler] = files               //默认定义Sessoin会话信息本地计算机

php_value[session.save_path] = /var/lib/php/session    //默认在/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   

客户端测试

客户端使用浏览器访问两台不同的Web服务器,操作步骤前面一致,最终可以获得相关的Session ID信息。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章