こんにちは
RSS リーダの livedoor Reader がオープンソースソフトウェアとして公開されている、オープンソース版 Fastladder というものがあり、自分で持っているサーバにインストールして使うことができます。
Fastladder Open Source / Free Download
これは ruby で書かれているので CentOS で動作させるのは(バージョンとかの関係で)非常に面倒だと思っていのですが、 RVM (Ruby Version Manager) を使用することにより、非常に簡単に導入することができましたので、その手順を紹介します。
今回は passenger を使って、 apache 上で動かすことにします。
それではまず、 RVM を用意しましょう。 apache の権限で動かなければいけないので、 root で作業します。 root やるとすべてのユーザから使用できるようになるようです。
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
これだけで RVM はインストールされるはずです。 /etc/bashrc あたりに以下のような記述がされていれば完璧!
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" # Load RVM function
たぶん、一度ログアウトしてログインし直せば上のコマンドが実行されて RVM が使えるようになると思いますが、よくわからない僕は一度上のコードをそのまま実行しました。
次に ruby とライブラリの準備です。基本的には fastladder についてる INSTALL.txt に従って問題ないはずです。今回は MySQL を使用したいので、 sqlite 関係をそれに変更します。 MySQL のインストールなどは事前にしておきます。また、 rfeedfinder を入れる前に hpricot version 0.7 を入れておきます。さらに、 passenger に httpd-devel が必要そうなので、なければ yum などで入れておきましょう。
rvm install 1.8.7 rvm 1.8.7 gem install rails -v=2.0.2 gem install hpricot -v=0.7 gem install rfeedfinder gem install feed-normalizer gem install opml gem install mongrel gem install mysql gem install passenger
全てが正常に終了すれば、 passenger 用に apache の設定に行います。 passenger-install-apache2-module –snippet で表示される文字列をどこかに書いておけば大丈夫でしょう。
次に FreeImage を入れます。
wget http://downloads.sourceforge.net/freeimage/FreeImage3151.zip unzip FreeImage3151.zip cd FreeImage make make install
あとは、 fastladder の config/database.yml を環境に合わせて書き換え、データベースを初期化して、クローラを起動します。ただし、 passenger を使用するので INSTALL.txt にあるサーバの起動は行いません。
RAILS_ENV=production rake db:migrate RAILS_ENV=production script/crawler > /dev/null &
これで、だいたい完了なのですが、 RSS の追加の際にエラーが出たりします。これは rfeedfinder のどこかの引数の数が合わないとか、 URL のチェックが厳しすぎるとか、そういう理由らしいので、ログ(場所は log/production.log )を見ながら適宜修正してみればいいと思います。私はとりあえず、 rfeedfinder.rb を以下のように修正しました。行数は両方とも変更後なので、だいたいそのあたり、と思ってください。 open_doc で検索するのがいいかもです。
#data = Rfeedfinder.open_doc(fulluri, options) data = Rfeedfinder.open_doc(fulluri)
#data = Rfeedfinder.open_doc(uri, options) data = Rfeedfinder.open_doc(uri)
と、こんな感じで動くと思います。ただ、環境によってもかなり変わってくると思いますし、一緒に Redmine の構築も行ったのでいろいろと抜けや無駄があるかもしれませんが、 Redmine も同時に動かすことができるというのは確認しているので、やりたい方はやってみるといいともいます。
簡単に動かせたと思っても、作業を思い出してみるといろいろ試行錯誤してますね(笑)。でも、 RVM は本当に便利だと思うので、使ってみると良いと思います。ではでは!