こんにちは、tahara です。
Sunspot を導入し Solr がいこーよ本番環境で動くようになりました。
Solr 関連のファイル(jar や xml とか)は、Rails アプリのコードと一緒にリポジトリに入れてあります。 Solr は /var/www/outing/current/solr/start.jar で動かしていました。
特に問題なく動いていたのですが、ある日ブラウザで Solr の管理画面を開こうとしたら 404 Not Found になってしまいました。
デプロイには Capistrano を使っています。 デプロイの度に /var/www/outing/current が切り替てっいき、 やがて Solr が起動した時のディレクトリ (/var/www/outing/releases/20121111121212 とか) は削除されます。 そのため Solr の管理画面が 404 Not Found になってしまったようです。
次のように変えました。
- Solr を /var/www/outing/current の下で動かすのをやめ、/opt/solr で動かす。
- これがそもそもの間違いでした。
- デプロイの時に Solr 関連のファイルを /opt/solr にコピーする。
- after 'deploy:restart' でコピー
- コピー後に Solr をリロードする。
- curl で URL をたたくだけ。
config/deploy/production.rb
# sunspot (sunspot) tasks set :solr_host, 'ec2-123-123-123-123.ap-northeast-1.compute.amazonaws.com' namespace :sunspot do # solr copy & reload task :copy_and_reload, :hosts => solr_host do run "cp -a #{latest_release}/solr/* /opt/solr" run "curl -s 'http://localhost:8983/solr/admin/cores?wt=json&action=RELOAD&core=outing'" end # solr reindex task :reindex, :hosts => solr_host do run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} sunspot:solr:reindex " end end after 'deploy:restart', 'sunspot:copy_and_reload'
URL をたたくだけで、一瞬で設定ファイルをリロードしてくれる Solr に心から感謝しました。