技術情報

79. 負荷分散環境でのセッション処理に対し Redis を設定するには ?

2015年12月24日 How To

※注 この記事は Piwik1.8~2.17のアーカイブ情報です

デフォルトで Piwik はセッションハンドラーとしてファイルシステムを使用します。あなたの Piwik 環境が複数のサーバで構成されている場合、複数回ログイン・ログアウトしているユーザーが、実際には 1 つのサーバー上で 1 人のユーザーがログイン・ログアウトしているかもしれないという問題があります。これを回避するには、以下の 2 つの選択肢があります。

セッションハンドルのためにデータベースを使用する
・セッションハンドルのために Redis を使用する(こちらの FAQ で説明されています)。Redisはたいていデータベースより速く、私たちは Redis がすでにキャッシュとしてまたはキューに入れられたトラッキングのために設定されている場合にこれをおすすめします。
・Redis をセッションハンドラーとして使用するには、以下のステップに従ってください。

・Redis をインストールしてください。Redis クイックスタートを確認。
・PHP 拡張機能 phpredis をインストールしてください。
・Redis をあなたの各サーバーの php.ini で PHP セッションハンドラーとして設定してください。

php.ini に以下を追加してください。

 
session.save_handler = redis 
session.save_path    = tcp://127.0.0.1:6379?database=10
; In case you are using queued tracking or Redis as a cache: Make sure to configure a different database! Otherwise queued requests will be flushed

; multiple servers can be configured comma separated
session.save_path = "tcp://host1:6379?weight=1&database=2, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"

Redis セッションハンドラについての詳細をドキュメントで確認する。

・ウェブサーバーを必ず再起動してください。
・セットアップ成功後、config/config.ini.phpファイルの空の変数にsession_save_handler により設定された Piwik デフォルトセッションハンドラー が存在しないことを確認してください。

あなたの config/config.ini.php は、あなたのそれぞれのサーバーでこの変更を行必う要があります。

config/config.ini.phpで以下を設定します。

 
[General]
session_save_handler = ""