メモ: るりまのローカル環境へのインストール

Rubyリファレンスマニュアル刷新計画 (通称るりま)、普段はWebからオンラインで参照していますが、地下などのオフライン環境で参照できるように、ローカルのPC上にインストールして閲覧環境を構築してみました。


作業環境

まず何も考えずに入れてみる

るりまの配布パッケージは、Webrickベースのサーバ (BitClust) を含んでおり、これを起動することでHTTPサーバとして動作します。

~> sudo mkdir /usr/local/share/doc
~> cd /usr/local/share/doc
/usr/local/share/doc> sudo tar jxvf ~/tmp/ruby-refm-1.9.1-dynamic-20100228.tar.bz2
/usr/local/share/doc> sudo mv ruby-refm-1.9.1-dynamic-20100228 ruby-refm
/usr/local/share/doc> cd ruby-refm
/usr/local/share/doc/ruby-refm> ruby server.rb

この場合、ポート番号10080でサーバプロセスが起動して、ブラウザからは http://localhost:10080/ のようなURLで参照できます。

自動起動の設定

OS起動のたびに手動でBitClustを立ち上げるのは面倒なので、OS起動時に自動的に立ち上げるように設定します。

ここは安直に、/etc/rc.local に以下の1行を追加します。

/usr/local/bin/ruby /usr/local/share/doc/ruby-refm/server.rb &

(おまけ) Apacheとの連携

ポート番号10080というのが多少気持ち悪いので、ローカルホスト上のApacheと同居させて、http://localhost/doc/ruby-refm/ のようなURLでマニュアルを参照できるように設定してみます。

apache2インストール直後の状態では、Apacheをリバースプロキシとして動作させるのに必要なモジュールmod_proxy, mod_proxy_httpがロードされない設定になっているので、シンボリックリンクを貼ってモジュールを有効化します。

% /etc/apache2/mods-enabled/
% sudo ln -s ../mods-available/proxy.load . 
% sudo ln -s ../mods-available/proxy.conf . 
% sudo ln -s ../mods-available/proxy_http.load . 

さらに、初期状態の proxy.conf では、以下の設定によりリクエスト転送が禁止されているので、該当する部分をコメントアウトします (試してみた限りでは、これを残して新しい を追加してもオーバーライドされなかった)。

/etc/apache2/mods-available/proxy.conf

<Proxy *>
  AddDefaultCharset off
  Order deny,allow
  Deny from all
  #Allow from .example.com
</Proxy>

RubyリファレンスマニュアルのBitClustサーバ用に、以下のリバースプロキシ設定ファイルを新規作成します。

~> cd /etc/apache2/sites-available/
/etc/apache2/sites-available/> cat ruby-refm 
<Proxy /doc/ruby-refm/*>
Order Deny,Allow
Allow from all
</Proxy>

ProxyPass /doc/ruby-refm http://localhost:10080/doc/ruby-refm
ProxyPassReverse /doc/ruby-refm http://localhost:10080/doc/ruby-refm

/etc/apache2/sites-available/> cd ../sites-enabled/
/etc/apache2/sites-enabled/> sudo ln -s ../sites-available/ruby-refm 999-ruby-refm

上の設定は、Webブラウザから見えるURLが http://localhost/doc/ruby-refm/ で、BitClust上のURLが http://localhost:10080/doc/ruby-refm であることを前提としています (こうしないと、BitClustにより出力されるHTMLドキュメント中のリンクが存在しないURLになってしまう)。
これに対応して、BitClust側の設定を変更して、ベースURLを /doc/ruby-refm に指定します。

(変更前) /usr/local/share/doc/ruby-refm/server.rb

ARGV.unshift "--baseurl="

(変更後) /usr/local/share/doc/ruby-refm/server.rb

ARGV.unshift "--baseurl=/doc/ruby-refm"

この状態でserver.rbおよびApacheを再起動すると、Webブラウザから http://localhost/doc/ruby-refm/Rubyリファレンスマニュアルを参照できます。