Solrの良いガワを作ろうと思っていたけど既存のがあるらしいので使ってみようと。
Docker にインストールしたが、trevormunoz/docker-blacklightは使え無さそうだったので自分で書いた。そのうちGitHubにあげる。
はじめは README_SOLR · projectblacklight/blacklight Wiki 読んで solr-jetty を別に入れようとしていたけれど、Quickstart · projectblacklight/blacklight Wiki の easy 側に従っていくと、それさえいらなかったっぽい。
- For the initial install of Blacklight you may need to download Jetty by running before starting it:
$ rake jetty:clean
が https://raw.githubusercontent.com/projectblacklight/blacklight/master/template.demo.rb に含まれているからかな。
例によって Docker 上で動かしていたら、最後は IP を明示的に指定しないと
で書いていた直接 IP を叩く方法が機能しなかった。
Setup Ruby On Rails on Ubuntu 14.10 Utopic Unicorn - GoRails で rvm を選択。
apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev libgdbm-dev libncurses5-dev automake libtool bison libffi-dev python-software-properties software-properties-common add-apt-repository -y ppa:chris-lea/node.js apt-get update apt-get install nodejs curl -sSL https://rvm.io/mpapis.asc | gpg --import - curl -L https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh rvm install 2.2.2 rvm use 2.2.2 --default ruby -v gem install rails -v 4.2.1 # ここでユーザ変えた方がいい # easywayだとjettyも勝手についてくる rails new search_app -m https://raw.github.com/projectblacklight/blacklight/master/template.demo.rb cd search_app rake jetty:start rake solr:marc:index_test_data rails server -p 3000 -b 172.17.0.51 -d
イェイ!
RoR のキソ
Ruby on Rails のアプリは全然自分で書いたことが無い(共同でプログラミングするのにRubyを使ったことある程度)なので、いろいろ躓く。mod_rails for Apacheを利用する手もあるが、今回はRubyの簡便なサーバ webrick を用いて、そこに Apache をリバースプロキシとして噛ませるという形にした。
# ls config/environments/ development.rb production.rb test.rb
設定ファイル(config) - - Railsドキュメント にあるようにRoRの設定は開発環境、テスト環境、本番環境に分かれていて、例えば URL のパスをいじるような作業がしたければ自分がどの環境で作業しているかを把握しなければならない。開発環境だと 404 Not Found の代わりに
みたいな画面が出てきたりする。
<%= Rails.env %>
をレイアウトファイルのどこかで出力してみると確実にそれが分かる。rails server
コマンドで立ち上げたものは開発環境だったので、config/environments/development.rb
に
config.action_controller.relative_url_root = "/blacklight"
の一行を足すことで、app/views/layouts/application.html.erb
の stylesheet_link_tag や javascript_include_tag という ActionView::Helpers::AssetTagHelper が生成する URL に適切に相対URLの Rootが付く。つまり、href="/assets/..."
が href="/blacklight/assets/..."
になるというわけだ。
このように設定できる変数はさっきの 設定ファイル(config) - - Railsドキュメント に説明がある。
これは、ページで生成するリンクのURLを変更するものだが、変更したURLできちんとアクセスするようにするには、
config.ru
の
run Rails.application
を
map '/blacklight' do run Rails.application end
に変更してやる必要がある。また、Apache の /etc/apache2/sites-enabled/000-default.conf
も
<Location /blacklight> ProxyPass http://localhost:3000/blacklight ProxyPassReverse http://localhost:3000/blacklight ProxyPreserveHost On </Location>
のようにしてやる。編集したらsudo service apache2 restart
。reload
では上手くいかなかった。
webrick の起動はrails server -p 3000 -b 0.0.0.0 -d
0.0.0.0
の代わりに、docker ps -q | xargs docker inspect --format='{{.NetworkSettings.IPAddress}} -- {{.Name}}'
で調べられる Docker コンテナの IP
を入れても機能するが、毎回変わるので、0.0.0.0 が楽。
停止は ps aux | grep ruby
で出てきた pid を使って、kill -9 [pid]
参考:
- ruby - how to change rails to development mode - Stack Overflow
- RubyOnRails - Ruby on Railsのアプリをサブディレクトリで動かす場合のメモ - Qiita
- Apache as proxy for webrick - Ruby Forum
- ruby on rails - Rails3 application behind a Proxy - Stack Overflow
- Rails with Relative URL Root - Quickhack Diary
- 3. Railsアプリケーションの作成 | TECHSCORE(テックスコア)
- WEBrickを使うためのメモ - 再帰の反復
- WEBrickを使ったアプリケーションの起動 - Ruby on Rails入門
- How to stop webrick daemon - Ruby Forum
- Changing the base URL for Rails 3 development - Stack Overflow
結局使わなかった手動でjetty
wget以前は docker-solr/Dockerfile at master · makuk66/docker-solr と同じ。
FROM java:8 ENV SOLR_VERSION 4.10.4 ENV SOLR solr-$SOLR_VERSION ENV SOLR_USER solr RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get -y install \ curl \ lsof \ procps && \ groupadd -r $SOLR_USER && \ useradd -r -g $SOLR_USER $SOLR_USER && \ mkdir -p /opt && \
wget -nv --output-document=/opt/solr-4.10.4.zip https://github.com/projectblacklight/blacklight-jetty/archive/v4.10.4.zip unzip -d /opt /opt/solr-4.10.4.zip rm /opt/solr-4.10.4.zip ln -s /opt/blacklight-jetty-4.10.4 /opt/solr chown -R solr:solr /opt/solr /opt/blacklight-jetty-4.10.4 java -jar start.jar