實驗查看PHP本地的Session信息


通過Nginx調度器負載后端兩台Web服務器,實現以下目標:

- 部署Nginx為前台調度服務器

- 調度算法設置為輪詢

- 后端為兩台LNMP服務器

- 部署測試頁面,查看PHP本地的Session信息

概念:Session:存儲在服務器端,保存用戶名、登陸狀態等信息。Cookies:由服務器下發給客戶端,保存在客戶端的一個文件里。保存的內容主要包括:SessionID

拓撲環境:使用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)

拓撲圖:

步驟:

一, 部署后端LNMP服務器相關軟件

注意:以下部署LNMP服務器的操作,需要在兩台后端服務器做相同的操作,下面以Web2服務器(192.168.2.200)為例,對Web1服務器執行相同操作即可。

[root@web2 ~]# yum -y install gcc openssl-devel pcre-devel   #yum安裝基礎依賴包

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

[root@web2 ~]# cd nginx-1.12.2

[root@web2 nginx-1.12.2]# ./configure \      #源碼安裝Nginx

> --with-http_ssl_module

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

[root@web2 ~]# yum -y install mariadb mariadb-server mariadb-devel     #安裝MariaDB數據庫

[root@web2 ~]# yum -y install php php-mysql php-fpm     #安裝PHP

[root@web2 ~]# 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;      #修改默認文件為fastcgi.conf

                          }

二, 啟動LNMP服務器相關的服務

[root@web2 ~]# systemctl stop httpd      #如果該服務存在,則關閉,以避免端口沖突

[root@web2 ~]# systemctl start mariadb    #啟動MySQL服務

[root@web2 ~]# systemctl status mariadb

[root@web2 ~]# systemctl start php-fpm     #啟動PHP-FPM服務

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

三, 修改Nginx配置文件,實現代理服務器

- 通過upstream定義后端服務器地址池,默認調度策略為輪詢,使用proxy_pass調用upstream定義的服務器地址池

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

...

http{

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@client ~]# curl http://192.168.4.5/index.html    #瀏覽器訪問,查看默認頁面加載是否成功

四, 部署web1與web2的測試頁面

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服務器

1.1 瀏覽器訪問后端服務器 web1 的測試頁面

[root@web1 ~]# firefox http://192.168.2.100       #在web1網站上注冊用戶,密碼

[root@web1 ~]# cd /var/lib/php/session/      

[root@web1 ~]# ls     #查看服務器本地生成的Session信息

sess_ahilcq9bguot0vqsjtd84k7244       #Session信息是隨機分配的

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服務器

2.1 瀏覽器訪問后端服務器 web2 的測試頁面

[root@web2 ~]# firefox http://192.168.2.200       #在web2網站上注冊用戶,密碼

[root@web2 ~]# cd /var/lib/php/session/  

[root@web2 ~]# ls     #查看服務器本地生成的Session信息

sess_qqek1tmel07br8f63d6v9ch401    #Session信息是隨機分配的

五, 瀏覽器訪問前端調度器Nginx,查看頁面

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

-  填寫注冊信息后,刷新,還需要再次注冊,說明兩台計算機使用的是本地Session.

- 因為,第二台主機並不知道你在第一台主機已經登錄,第一台主機的登錄信息也沒有傳遞給第二台主機.

- 也就是當前存在的問題: 不同后端web服務器的Session不一致,即沒有實現Session的共享.

- 如何實現Session共享,在后面的隨筆再介紹.

結束.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM