【Rails4】【heroku】【CentOS】sessionストアにRedisを使う
目的
- RailsアプリのセッションストアをキャッシュからRedisに切り替える
- 開発環境にRedisサーバを立てる
- 本番環境はherokuでRedisのアドオンを入れる
1. 開発環境(CentOS)にRedisサーバを立てる
# 参考にしたサイトの手順通り # EPALが入っていなかったのでEPALもインストールする rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum --enablerepo=epel -y install redis # サービスの起動と自動起動の設定 /etc/init.d/redis start chkconfig redis on # 確認 redis-cli
2. 開発環境(Rails)にRedisのgem(redis-rails)をインストールする
# Gemfile gem 'redis-rails’ # デフォルト(cookieストア)の設定をコメントアウト # config/initializers/session_store.rb # Rails.application.config.session_store :cookie_store, key: '_XXXXXX_session' # 開発環境用のRedisの設定追加 # config/enviroments/development.rb config.session_store :redis_store, servers: 'redis://localhost:6379/0', expire_in: 60.minutes # expire_inはセッションの有効期限 # この後アプリで実際にsessionを使う操作をし、実際にsessionが入っているか確認した。手順は下記サイト参照
RailsのセッションストアとしてRedisを使う(Mac/EC2:AmazonLinux) - Qiita
3. herokuでRedisが利用できるようにする
# アドオンをインストールする(今回はredis-cloudを使用。freeプランあり) heroku addons:add rediscloud # herokuに環境変数が設定されているか確認 heroku config:get REDISCLOUD_URL # config/enviroments/production.rb # 先程確認した環境変数は以下のようにheroku上で参照できる config.session_store :redis_store, servers: ENV["REDISCLOUD_URL"], expire_in: 60.minutes # 変更をherokuにpush git push heroku master
あとはheroku上でもアプリを動かしてみる。herokuのマイページから、redisのダッシュボードが参照できるので動いているか確認する。
redis−cloudのfreeプランは30MB、Max 10接続。
メモリ、接続が8割を超えるとアラートメールが飛ぶようにデフォルトでなっていた。とりあえずこれで逼迫するようなたプラン変更かDBストアにするか検討する。
herokuから削除された場合
- herokuのredis cloud上から新しいDBを登録する
- DB名とパスワードを入力する
- Endpoint を確認する
- herokuコマンドでherokuの環境変数を変更する
heroku config:set REDISCLOUD_URL=redis://rediscloud:[パスワード]@[Endpoint]