2011年6月17日金曜日

Enju Leafをインストールしてみるか

会社で買った本の管理をもっと楽にやりたいなと思いまして、
たどり着いたのがオープンソース図書館システムEnju Leafでした。

インストール方法に関しては、以下に載ってます。
https://github.com/nabeta/enju_leaf/wiki/Install
なんとなく引っかかった部分もあったので、書いてみようかと。

今回の環境は、
Ubuntu 10.04
データベースはMySQLを使います。

はじめに、必要なパッケージのインストールですが、これは手順そのまま。
$ sudo apt-get install memcached imagemagick w3m xpdf xlhtml ppthtml build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev
(sqlite3は必要ないかもしれません。)

さらに今回はMySQLを使いますので
$ sudo apt-get install mysql-server
MySQLの"root"のパスワードを設定せよと聞かれますね。
まあ空でもいいんですが、ふつーは何か設定しておくと思いますので"password"などと入れておきますか。(あくまで例ですので)

続いてrubyのインストールでありますが、enju_leafでの推奨は1.9.2。対してapt-getで入手できるのは1.8.xらしいです。迷うところでもないのでrubyの本家からダウンロードしてビルドしましょう。
http://www.ruby-lang.org/ja/downloads/
より、最新安定版である1.9.2-p180のtar.gz圧縮ファイルを適当な場所にダウンロードしましょう。

インストール方法についてはお馴染み
$ tar xvzf ruby-1.9.2-p180.tar.gz
$ cd ruby-1.9.2-p180
$ ./configure
$ make
$ sudo make install
(インストール確認は以下を実行して、バージョンが表示されればOKです。)
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
rubygemsが必要なのかと思いましたが、rubyをインストールするともれなく入っているみたいですね。
$ gem -v
1.3.7
らしいです。
気になるようであれば、
$ sudo gem update --system
$ gem -v
1.8.5
と最新版にアップデートは簡単にできます。

手順の方に戻りまして("Railsをインストールし、..."の部分です)
githubのリポジトリからenju_leafをいただいてきます。
$ sudo gem install bundler
$ git clone git://github.com/nabeta/enju_leaf.git
$ cd enju_leaf
$ git checkout 1.0
(続けて、MySQL用に初期設定ファイルコピースクリプトを実行します)
$ script/enju_setup mysql

以降、enju_leafディレクトリで作業を行います。

ではMySQLデータベースの設定です。
Gemfile(依存関係のあるGemを記述するファイルのようです)の編集を行います。
$ gedit Gemfile
(などで適当にファイルをテキストエディタで開きまして)
---9行目をコメントアウトし、代わりにその下に1行追記する---
# gem 'pg'
  gem 'ruby-mysql'
----上書き保存して閉じます。
手順と少し違うので注意

MySQLの設定ファイルmy.confの修正です(ubuntuの場合は/etc/mysql/my.confにあります)
以前書いたようにUTF8をデフォルトエンコードにします

$ sudo gedit /etc/mysql/my.conf
(デフォルトエンコードをUTF8にするよう修正して上書き保存します)

$ sudo service mysql restart
(mysqlサーバを再起動させます)
Ubuntuの場合はmysqlサーバをインストールすると勝手にサービス起動しています。

続いてはenju_leafデータベース用にMySQLユーザ追加です。
今回はMySQLのコンソールでやってみましょうか。
$ mysql -u root -p
Enter password: password
(rootで入ります。)

mysql> create user enju@localhost;
("enju"というユーザを作成します)

mysql> create database enju_leaf default character set 'utf8';
("enju_leaf"というデータベースを作成します)

mysql> grant all privileges on enju_leaf.* to enju@localhost identified by 'enjupass' with grant option;
(ユーザ"enju"に"enjupass"というパスワードでデータベース"enju_leaf"への全権限を付与する)

mysql> \q
(管理コンソールから抜ける)
ユーザ名やデータベース名はお好みでどうぞ。

続いてはconfig/database.ymlの編集です。ここはだいぶ変更があります。
$ gedit config/database
(以下に該当する箇所を修正します。)
---40行目からのproduction設定を修正します---
production:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: enju_leaf
  pool: 5
  username: enju
  password: enjupass
  host: 127.0.0.1
---以上を修正して上書き保存します。
データベース名と、ユーザ名・パスワードは、先ほど設定したものを使います。

進めます。
$ bundle
(依存gemが一挙にインストールされます。)

んで進めますが。
$ rake db:creaete RAILS_ENV=production
/usr/local/lib/ruby/gems/1.9.1/gems/extractcontent-0.0.1/lib/extractcontent.rb:2: warning: variable $KCODE is no longer effective; ignored
WARNING: 'task :t, arg, :needs => [deps]' is deprecated. Please use 'task :t, [args] => [deps]' instead.
 at /usr/local/lib/ruby/gems/1.9.1/gems/sunspot_rails-1.2.1/lib/sunspot/rails/tasks.rb:41:in `block in <top (required)>'
enju_leaf already exists
となにやら警告が出ていますね。いちおう最後までは終わっているので気にしなくてもよいのかもしれません。

$ rake db:migrate RAILS_ENV=production
(上記と同じように警告は出ますが)
まあ一応できたっぽい。(enju_leafデータベースを覗いてみるとテーブルが生成されてました)

続いては
$ rake secret
(警告は出ますが、その部分は無視しまして)
なにやら文字列が1行表示されますのでこれを選択して右クリックでコピーしておきます。
続いてはファイル編集
$ gedit config/initializers/secret_token.rb
---7行目の'change this'という部分に先ほどコピーしたテキストを貼り付けます---
EnjuLeaf::Application.config.secret_token = 'change this'

いよいよ
$ rake sunspot:solr:start RAILS_ENV=production
(先ほどと同じく警告は表示されますが、エラーなく抜けます)
$ rake db:seed RAILS__ENV=production
(警告は略としますが..)
rake aborted!
Solr is not running.

らしいです。
はい。ここが今回最大の落とし穴ですよー

solrにはjavaが必要です
というわけで
$ sudo apt-get install sun-java6-jre
(パッケージのリポジトリをアレしとく必要がありますがどっかに書いたのでそれは略です。)

気を取り直して
$ rake sunspot:solr:start RAILS_ENV=production
(略)
$ rake db:seed RAILS__ENV=production
(警告は出ますが..)
Administrator account created.
と成功したっぽいです。

後は手順そのまま
$ gedit config/schedule.rb
--- 22行目を今作業をしているenju_leafディレクトリへのパスに変更します ---
set :path, '/path/to/enju_leaf'

$ whenever --update-crontab
$ RAILS_ENV=production script/delayed_job start

最後はhttpサーバの起動です
$ rails server -e production
起動にはやや時間がかかるようです。少し待ってあげましょう。

http://localhost:3000 にアクセスしてみましょう。ログインユーザ名は"admin"、パスワードは"adminpassword"です。
(※「ウィンドウを閉じてもログインしたままにする」のチェックを入れなければログインできないようです?)


しかし、使い方はよくわかってなし
ぼちぼちやってみますよ