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...