PHP的本地session信息

3案例3:PHP的本地session信息

3.1问题

通过Nginx调度器负载后端两台web服务器,实现以下目标:

  1. 部署Nginx为前台调度服务器
  2. 调度算法设置为轮询
  3. 后端为两台LNMP服务器
  4. 部署测试页面,查看PHP本地的session信息

3.2方案

使用4台RHEL7虚拟机,其中一台作为Nginx前端调度器服务器(eth0:192.168.4.5,eth1:192.168.2.5)、两台虚拟机部署为LNMP服务器,分别为web1服务器(192.168.2.100)和web2服务器(192.168.2.200),另外一台作为测试用的Linux客户机(192.168.4.10),拓扑如图所示。

3.3步骤

实现此案例需要按照如下步骤进行。

步骤一:部署后端LNMP服务器相关软件(如果已经安装完成,则忽略此步骤)

注意:以下部署LNMP服务器的操作,需要在两台后端服务器做相同的操作,下面我们以一台web2服务器(192.168.2.200)为例,对web1服务器执行相同操作即可。 

1)使用yum安装基础依赖包

[root@web2 ~]# yum -y install gcc openssl-devel pcre-devel

 2)源码安装Nginx

[root@web2 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web2 ~]# cd nginx-1.12.2
[root@web2 nginx-1.12.2]#  ./configure   \
> --with-http_ssl_module 
[root@web2 nginx-1.12.2]# make && make install

3)安装Mariadb数据库

[root@web2 ~]# yum -y install  mariadb  mariadb-server  mariadb-devel

4)安装PHP(php-fpm软件包在lnmp_soft中有提供)

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

5)修改Nginx配置文件(修改默认首页与动静分离)

[root@web2 ~]# 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;
        }

步骤二:启动LNMP服务器相关的服务

1)启动Nginx服务

这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会 出现冲突。

[root@web2 ~]# systemctl stop  httpd                //如果该服务存在,则关闭该服务
[root@web2 ~]# /usr/local/nginx/sbin/nginx
[root@web2 ~]# netstat -utnlp | grep :80
tcp    0    0 0.0.0.0:80        0.0.0.0:*        LISTEN        32428/nginx         

2)启动MySQL服务

[root@web2 ~]# systemctl start mariadb
[root@web2 ~]# systemctl status mariadb

3)启动PHP-FPM服务

[root@web2 ~]# systemctl start  php-fpm
[root@web2 ~]# systemctl status php-fpm

4)关闭SELinux、防火墙

[root@web2 ~]# setenforce 0
[root@web2 ~]# firewall-cmd --set-default-zone=trusted

步骤三:部署前端Nginx调度服务器

1)使用源码安装Nginx软件(如果Nginx软件包已经存在可以忽略此步骤)

[root@proxy ~]# yum  -y  install   gcc pcre-devel openssl-devel
[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

2)修改Nginx配置文件

Nginx配置文件中,通过upstream定义后端服务器地址池,默认调度策略为轮询,使用proxy_pass调用upstream定义服务器地址池:

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
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;
          }
}

3)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

4)关闭SELinux、防火墙

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

步骤四:测试环境是否配置成功

1)浏览器访问测试页面验证。

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

步骤五:部署测试页面

1)部署测试页面(web1服务器)

测试页面可以参考lnmp_soft/php_scripts/php-memcached-demo.tar.gz

[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/

2)浏览器直接访问后端服务器的测试页面(web1服务器)

[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两个文件的内容,添加页面颜色属性,以区别后端两台不同的服务器:<body bgcolor=blue>

3)部署测试页面(web2服务器)

测试页面可以参考lnmp_soft/php_scripts/php-memcached-demo.tar.gz

[root@web2 ~]# cd lnmp_soft/php_scripts/
[root@web2 php_scripts]# tar -xf php-memcached-demo.tar.gz
[root@web2 php_scripts]# cd php-memcached-demo
[root@web2 php-memcached-demo]# cp -a  *  /usr/local/nginx/html/

4)浏览器直接访问后端服务器的测试页面(web2服务器)

[root@web2 ~]# firefox http://192.168.2.100             //填写账户信息
[root@web2 ~]# cd /var/lib/php/session/            //查看服务器本地的Session信息
[root@web2 ~]# ls
sess_qqek1tmel07br8f63d6v9ch401                        //注意这里的ID是随机的
[root@web2 ~]# cat sess_qqek1tmel07br8f63d6v9ch401    

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

5)浏览器访问前端调度测试(不同后端服务器session不一致)

推荐使用Google浏览器测试。

[root@client ~]# google-chrome http://192.168.4.5
//填写注册信息后,刷新,还需要再次注册,说明两台计算机使用的是本地Session
//第二台主机并不知道你再第一台主机已经登录,第一台主机的登录信息也没有传递给第二台主机

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值