PHP的本地Session資訊

2021-10-04 17:56:25 字數 4757 閱讀 8169

1.1 問題

通過nginx排程器負載後端兩台web伺服器,實現以下目標:

部署nginx為前台排程伺服器

排程演算法設定為輪詢

後端為兩台lnmp伺服器

部署測試頁面,檢視php本地的session資訊

1.2 方案

概念: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),拓撲如圖-2所示。

圖-21.3 步驟

實現此案例需要按照如下步驟進行。

注意:以下部署lnmp伺服器的操作,需要在兩台後端伺服器做相同的操作,下面我們以一台web2伺服器(192.168.2.200)為例,對web1伺服器執行相同操作即可。

1)使用yum安裝基礎依賴包

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

.. ..

2)原始碼安裝nginx

3)安裝mariadb資料庫

[root@web2 ~]# yum -y install  mariadb  mariadb-server  mariadb-devel
4)安裝php

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

[root@web2 ~]# yum -y install php-fpm

5)修改nginx配置檔案(修改預設首頁與動靜分離)

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

location /

location ~ \.php$

1)啟動nginx服務

這裡需要注意的是,如果伺服器上已經啟動了其他監聽80埠的服務軟體(如httpd),則需要先關閉該服務,否則會出現衝突。

[root@web2 ~]# systemctl stop  httpd                //如果該服務存在,則關閉該服務

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

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

步驟三:部署前端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配置檔案,實現**伺服器

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

.. ..

upstream webs

server

}

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

步驟四:測試環境是否配置成功

1)瀏覽器訪問測試頁面驗證。

[root@client ~]# curl                  //檢視是否有資料
步驟五:部署測試頁面

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 -r * /usr/local/nginx/html/

2)瀏覽器直接訪問後端伺服器的測試頁面(web1伺服器)。

[root@web1 ~]# firefox     /index.php        //填寫賬戶資訊

[root@web1 ~]# cd /var/lib/php/session/ //檢視伺服器本地的session資訊

[root@web1 ~]# ls

sess_ahilcq9bguot0vqsjtd84k7244 //注意這裡的id是隨機的

[root@web1 ~]# cat sess_ahilcq9bguot0vqsjtd84k7244

注意:可用修改index.php和home.php兩個檔案的內容,新增頁面顏色屬性,以區別後端兩台不同的伺服器:。

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 -r * /usr/local/nginx/html/

4)瀏覽器直接訪問後端伺服器的測試頁面(web2伺服器)。

[root@web2 ~]# firefox     /index.php         //填寫賬戶資訊

[root@web2 ~]# cd /var/lib/php/session/ //檢視伺服器本地的session資訊

[root@web2 ~]# ls

sess_qqek1tmel07br8f63d6v9ch401 //注意這裡的id是隨機的

[root@web2 ~]# cat sess_qqek1tmel07br8f63d6v9ch401

注意:可用修改index.php和home.php兩個檔案的內容,新增頁面顏色屬性,以區別後端兩台不同的伺服器:。

5)瀏覽器訪問前端排程器測試(不同後端伺服器session不一致)。

真實主機使用google瀏覽器測試。

[root@room9pc01 ~]# google-chrome /index.php

//填寫註冊資訊後,重新整理,還需要再次註冊,說明兩台計算機使用的是本地session

//第二台主機並不知道你再第一台主機已經登入,第一台主機的登入資訊也沒有傳遞給第二台主機

PHP的本地Session資訊

1.1 問題 通過nginx排程器負載後端兩台web伺服器,實現以下目標 部署nginx為前台排程伺服器 排程演算法設定為輪詢 後端為兩台lnmp伺服器 部署測試頁面,檢視php本地的session資訊 1.2 方案 概念 session 儲存在伺服器端,儲存使用者名稱 登陸狀態等資訊。cookie...

PHP的本地Session資訊 萬金油 新浪部落格

通過nginx排程器負載後端兩台web伺服器,實現以下目標 部署nginx為前台排程伺服器 排程演算法設定為輪詢 後端為兩台lnmp伺服器 部署測試頁面,檢視php本地的session資訊 使用4臺rhel7虛擬機器,其中一台作為nginx前端排程器伺服器 eth0 192.168.4.5,eth1...

使用session儲存資訊

session物件可以儲存和讀取客戶資訊,到客戶關閉瀏覽器或長時間不傳送請求時釋放。簡單的說就是,session物件儲存的資訊是跨頁面的,儲存上了就一直有。在.jsp頁面中儲存account資訊 account type text value session.setattribute account...