1. 程式人生 > >Linux基本服務Nginx——day05——Session叢集配置

Linux基本服務Nginx——day05——Session叢集配置

session---cookie 網站搭建

    很多登陸資訊的網站,在登陸一次後,不管怎麼重新整理,也許處理的web伺服器變了,但是登陸資訊一直在,不需要我們再次輸入,這就用到session-cookie的技術,其原理就是,服務端用session記錄使用者登陸的資訊,然後生成一個sid,然後把sid放到cookie裡,再把cookie發給客戶端,這樣客戶端重新整理或者短時間後再開啟,就會把cookie發給服務端,服務端根據其kid就可以掉出儲存的session檔案裡的資訊,這樣就不需要客戶端再次輸入

    模擬完成這個web伺服器,需要搭建叢集,一個nginx的web排程伺服器,多個web伺服器

    其中 nginx排程伺服器搭建方法可以檢視nginx總結;

    然後 搭建兩個web伺服器,可以用Apache,也可以用nginx,
    如果用Apache,只需要修改配置檔案中的DirectoryIndex,使其預設訪問index.php即可
    而如果用nginx,需要修改/下的index,還要作動靜分離才可以    然後在PHP檔案中寫上session的呼叫語句

<?php
session_start(); # Starting Session

$username=$_POST['username'];
$password=$_POST['password'];

# Assume user authenticated successfully. Store session variables

$_SESSION['login_user']= $username; 
$_SESSION['logged_in'] = "true";
$_SESSION['id'] = session_id();

header("Location: home.php"); 

?>

    這樣就可以實現單臺伺服器可以和客戶端session會話連線,不過預設session把資訊資料儲存在本地伺服器,
    也就是說,訪問排程伺服器,排程伺服器把資料轉發給一個web伺服器,這個web伺服器生成session資訊,傳送cookie給客戶端,但這時候,如果客戶端重新整理,排程器把資料轉發給其他web伺服器,這些伺服器裡面沒有相應的session檔案,導致又要輸入,這時候,我們就要把session資訊互通,具體方法就是,在排程器中建立一個memcache資料庫,然後所有的web伺服器session資訊都存入資料庫

   PHP---memcache
     php連線資料庫需要相應的包 yum install -y php-pecl-memcache

      裝包後,就可以測試連線了,用下面的php檔案測試一下

<?php
$memcache=new Memcache;                //建立memcache物件
$memcache->connect('IP',11211) or die ('could not connect!!');
$memcache->set('key','test');             //定義變數
$get_values=$memcache->get('key');        //獲取變數值
echo $get_values;
?>

    然後就是配置php的session配置,其配置檔案: /etc/php-fpm.d/www.conf,修改最後兩行

php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://排程器IP:11211"

    這樣就實現了全部的web叢集的任務