読者です 読者をやめる 読者になる 読者になる

Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

blacklight試し中

Solrの良いガワを作ろうと思っていたけど既存のがあるらしいので使ってみようと。

projectblacklight/blacklight

Docker にインストールしたが、trevormunoz/docker-blacklightは使え無さそうだったので自分で書いた。そのうちGitHubにあげる。

はじめは README_SOLR · projectblacklight/blacklight Wiki 読んで solr-jetty を別に入れようとしていたけれど、Quickstart · projectblacklight/blacklight Wiki の easy 側に従っていくと、それさえいらなかったっぽい。

  1. 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 を明示的に指定しないと

cm3.hateblo.jp

で書いていた直接 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

f:id:cm3ak:20150509070549p:plain

イェイ!

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 の代わりに

f:id:cm3ak:20150510025430p:plain

みたいな画面が出てきたりする。

<%= 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 restartreloadでは上手くいかなかった。

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]

参考:

結局使わなかった手動で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