企業級memcached部署(session共用)

来源:http://www.cnblogs.com/clsn/archive/2017/11/07/7799600.html
-Advertisement-
Play Games

服務端部署 第一個裡程碑:安裝依賴關係 Memcache用到了libevent這個庫用於Socket的處理。 [root@nfs01 ~]# yum install libevent libevent-devel nc -y 第二個裡程碑:安裝memcache [root@nfs01 ~]# yum ...


服務端部署

   第一個裡程碑:安裝依賴關係

      Memcache用到了libevent這個庫用於Socket的處理。

[root@nfs01 ~]# yum install libevent  libevent-devel nc -y

   第二個裡程碑:安裝memcache

[root@nfs01 ~]# yum install memcached -y
[root@nfs01 ~]# which memcached
/usr/bin/memcached

   第三個裡程碑:啟動memcached服務

[root@nfs01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192
[root@nfs01 ~]# lsof -i :11211
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
memcached 10796 root   26u  IPv4  85717      0t0  TCP *:memcache (LISTEN)
memcached 10796 root   27u  IPv6  85718      0t0  TCP *:memcache (LISTEN)
memcached 10796 root   28u  IPv4  85721      0t0  UDP *:memcache
memcached 10796 root   29u  IPv6  85722      0t0  UDP *:memcache
[root@nfs01 ~]# netstat -lntup |grep memca
tcp        0      0 0.0.0.0:11211        0.0.0.0:*      LISTEN      10796/memcached    
tcp        0      0 :::11211               :::*           LISTEN      10796/memcached    
udp        0      0 0.0.0.0:11211      0.0.0.0:*                      10796/memcached    
udp        0      0 :::11211                    :::*                    10796/memcached   

註:memcached可以同時啟動多個實例,埠不一致即可。

[root@nfs01 ~]# memcached -m 16m -p 11212 -d -u root -c 8192

   第四個裡程碑:寫入開機自啟動

echo 'memcached -m 16m -p 11211 -d -u root -c 8192' >>/etc/rc.local

客戶端部署(web伺服器)

   第一個裡程碑:安裝PHP memcache 擴展插件

命令集如下:

cd /server/tools
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar xf memcache-2.2.7.tgz
cd memcache-2.2.7
/application/php/bin/phpize
./configure -enable-memcache --with-php-config=/application/php/bin/php-config
make && make install

完整操作過程:

[root@web01 ~]# cd /server/tools/
[root@web01 tools]# wget http://pecl.php.net/get/memcache-2.2.7.tgz
[root@web01 tools]# tar xf memcache-2.2.7.tgz
[root@web01 tools]# cd memcache-2.2.7

[root@web01 memcache-2.2.7]# /application/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@web01 memcache-2.2.7]# ./configure -enable-memcache --with-php-config=/application/php/bin/php-config
[root@web01 memcache-2.2.7]# make && make install

查看是否安裝成功

[root@web01 memcache-2.2.7]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20121212/
total 252

-rwxr-xr-x 1 root root 258048 Nov  7 10:03 memcache.so

   memcache.so表示插件安裝成功。

   第二個裡程碑:配置memcache客戶端使其生效

[root@web01 memcache-2.2.7]# cd /application/php/lib/
[root@web01 lib]# vim php.ini
……
[root@web01 lib]# tail -2 php.ini
extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts-20121212/"
extension = memcache.so

   第三個裡程碑:檢測語法,重啟服務

[root@web01 lib]# /application/php/sbin/php-fpm  -t
[07-Nov-2017 10:20:44] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful

#重啟服務 

killall php-fpm
killall php-fpm
/application/php/sbin/php-fpm

   瀏覽器訪問phpinfo頁面出現memcache信息表示配置成功

 

   第四個裡程碑:編寫測試memcache文件

[root@web01 blog]# cat  test_memcache.php
<?php
     $memcache = new Memcache;
     $memcache->connect('172.16.1.31', 11211) or die ("Could not connect NFS server");
     $memcache->set('key', 'Memcache connect OK');
     $get = $memcache->get('key');
     echo $get;
?>

   測試出現Memcache connect OK 表示連接成功

[root@web01 blog]# /application/php/bin/php   test_memcache.php 
Memcache connect OK

   第五個裡程碑:修改php配置(設置session共用)

[root@web01 ~]# vim /application/php/lib/php.ini

原配置

session.save_handler = files
session.save_path = "/tmp"

修改為:

session.save_handler = memcache
session.save_path = "tcp://172.16.1.31:11211"

⚠修改完成之後要重啟php服務

killall php-fpm
killall php-fpm
/application/php/sbin/php-fpm

修改之前phpinfo信息

修改之後phpinfo信息

 

到此企業級memcache(session共用)部署完畢

1.1.1 Memcached在集群中session共用存儲的優缺點

優點:

    1)讀寫速度上會比普通文件files速度快很多。

     2)可以解決多個伺服器共用session的難題。

缺點:

     1)session數據都保存在memory中,持久化方面有所欠缺,但對session數據來說不是問題。

     2)一般是單台,如果部署多台,多台之間數據無法同步。通過hash演算法分配依然有session丟失的問題。

替代方案:

     1)可以用其他的持久化系統存儲session,例如redis,ttserver來替代memcached.

     2)高性能併發場景,cookies效率比session要好很多,因此,大網站都會用cookies解決會話共用的問題.

     3)一些不好的方法:lvs-p,nginx  ip_hash,不推薦使用.

 DedeCMS使用memcache問題

問題:
    上述文件進行修改後,DedeCMS發現無法訪問後臺 http://www.etiantia.org/dede

解決辦法:

   修改文件一:

[root@web01 include]# pwd
/application/nginx/html/www/include

[root@web01 include]# vim common.inc.php
135 //Session保存路徑
136 $enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);
137 //$sessSavePath = DEDEDATA."/sessions_{$enkey}";
138 $sessSavePath = "tcp://172.16.1.31:11211";
139 if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);

   修改文件二:

[root@web01 include]# vim vdimgck.php
24 $enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);
25 //$sessSavePath = DEDEDATA."/sessions_{$enkey}";
26 $sessSavePath = "tcp://172.16.1.31:11211";
27 if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);

   讓DedeCMS直接使用memcache的共用.解決問題.

特別感謝:元芳


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Makefilen內容1. 顯示規則:顯示規則說明瞭,如何生成一個或多個目標。這是由Makefile指出要生成的文件和文件依賴的文件。2. 隱晦規則:基於Makefile的自動推導功能3. 變數的定義:一般是字元串4. 文件指示:一般是在Makefile中引用另外一個makefile文件;根據某些規 ...
  • 前些天,Windows系統出現了故障,需要重新安裝,由於之前在硬碟上同時安裝了Windows 7和centos 7,在安裝了Windows後Windows系統重寫了MBR導致centos無法引導,因為centos裡面有資料,不願意重裝,於是決定自己動手修複MBR和grub。 1、系統環境 Windo ...
  • 簡介 MongoDB[1] 是一個基於分散式文件存儲的資料庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 mongoDB mongoDB MongoDB[2] 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支持的數據結構非 ...
  • 一、Linux的根”/ 處於Linux文件系統樹形結構的最頂端,我們稱它為Linux文件系統的root,它是Linux文件系統的入口。所有的目錄、文件、設備都在/之下,它是Linux文件系統最頂層的唯一的目錄; 一般建議在根目錄下麵只有目錄,不要直接存放文件;根目錄是linux系統啟動時系統第一個載 ...
  • 我們知道localhost綁定的是本地主機IP(127.0.0.1),那麼我們能不能自定義綁定本地主機IP地址呢?答案是肯定的,同修改hosts文件,我們可以實現上面的需求。 打開本地C盤,找到Windows文件夾-->System32文件夾-->drivers文件夾-->etc文件下的hosts文 ...
  • qcow2是最小使用,raw是置零使用 。 raw格式是原始鏡像,會直接當作一個塊設備給虛擬機來使用,至於文件裡面的空洞,則是由宿主機的文件系統來管理的,linux下的文件系統可以很好的支持空洞的特性, 所以,如果你創建了一個100G的raw格式的文件,ls看的時候,可以看到這個文件是100G的,但 ...
  • 若請求 Head 信息中存在自定義信息並且以 "_" 下劃線間隔,則必須配置underscores_in_headers 否則 Head 無法向 Tomcat 轉發 解決辦法: 在nginx.conf的http塊中添加以下參數 underscores_in_headers on; ...
  • 筆記內容:CentOS7配置IP和網路問題排查 筆記日期:2017.8.1 CentOS7配置IP: 因為是我們安裝的CentOS操作系統是最小化安裝的,所以沒有圖形界面和一些軟體或插件的。IP也是沒有配置的我們需要手動配置IP,然後使用遠程終端通過這個IP去連接操作系統,在終端上操作要比在虛擬機里 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...