Sharedanceでセッションの共有
複数のウェブサーバ間でセッションの共有をしたかったのでSharedanceを試してみた。
Sharedanceのインストール
% sudo portinstall /usr/ports/databases/Sharedance
Sharedanceの起動
Sharedanceのインストールが終ったら起動する。事前にSharedanceでのセッション保存ディレクトリを用意しておかないと起動しないので作成しておく。
% sudo mkdir -p /var/tmp/sharedance % sudo sharedanced -d /var/tmp/sharedance -B
-Bオプションで、バックグラウンドで実行してくれる。もしもテストなどで、色々なデバッグメッセージを表示させたい場合は-Dオプションを付ければ良い。
% sudo sharedanced -d /var/tmp/sharedance -D
クライアントの設定
Sharedanceのサーバが起動したら、次はそれを使用するプログラム側の設定をする。
必要なファイルのコピー
FreeBSDでportsからインストールすると、/usr/local/share/sharedanceにPHPで使うSharedanceのクライアントプログラムがあるのでそれを適当な場所にコピーする。
% sudo cp -Rp /usr/local/share/sharedance /usr/local/www/data/sharedance
設定ファイルの編集
php.iniで以下の2箇所を変更する。
% sudo vim /usr/local/etc/php.ini auto_prepend_file = /usr/local/www/data/sharedance/session_handler.php session.save_handler = user
これだと、そのサーバで動く全てのPHPアプリケーションに影響が有るので、特定のアプリケーションだけSharedanceを使いたい場合は.htaccessに設定を書けば良い。
% cd {APP_DIR} % cp -Rp /usr/local/www/data/sharedance ./sharedance % vim .htaccess php_value auto_prepend_file ./sharedance/session_handler.php php_value session.save_handler user
※auto_prepend_fileがPHP_INI_PERDIRな為、php.iniかhttpd.conf(.htaccess)でしか設定出来ない。
クライアントファイルの編集
session_handler.phpにSharedanceサーバのIPを指定する部分が有るので、変更する。
% sudo vim /usr/local/share/sharedance/session_handler.php define('SESSION_HANDLER_HOST', '192.168.0.81');
Apacheの再起動
php.iniに書いた場合はApacheを再起動しないと反映されないので再起動する。
% sudo /usr/local/etc/rc.d/apache restart
終わり
これで複数のサーバでセッションを共有することが出来た。
ただ、portsから入れても起動スクリプトとかはないみたいなので、自分で適当に書かないといけないっぽい。