31 07 2013 Fastladder Tweet
5年くらい動かしているオープンソース版Fastladderだけど、この5年のうちにヒトの異動なんかでゴミユーザーが溜まりまくったり、メンテも大変だったり(今はsupervisordで動かしている)と、そろそろ新しくしたくなったので、昨日今日で仮想環境から稼働までさせた。
尚OSはFedora17で、FastladderはGithub版です。
Rubyのインストール
2.0.0-p247を入れたんだけど、OS側のライブラリのヘッダファイルが足りなくて何度もコンパイルしなおしたのでストレスフルだった。ちなみにrbenvは使ってない。
yum install sqlite sqlite-devel yum install zlib zlib-devel yum install openssl openssl-devel yum install libxml2 libxml2-devel yum install libxslt libxslt-devel yum install libcurl libcurl-devel yum install gcc-c++ gcc-c++-devel yum install mysql mysql-devel yum install readline readline-devel
くらいはやっておく必要があった。それからnode.jsも必要なので入れておきましょう。
Fastladderを動かすまで
Fastladder を VPS の CentOS5.8 に入れてみた。を参考にすればよいです。
イントラもインターネットもきちんと巡回させる
クローラーはオープンソース版もGithub版もそのままではイントラの巡回をうまくやってくれないです。environment.rbのあたりにプロキシを使わない設定があるのだけどそれを書くとエラーで止まるので、
fastladder.rb(だったかな)に直接正規表現を書き込んだ。
Fastladder.const_set(:HTTP_PROXY_EXCEPT_HOSTS, ["XXXXXXX"]) #Fastladder.const_set(:HTTP_PROXY_EXCEPT_HOSTS, []) unless defined? (Fastladder::HTTP_PROXY_EXCEPT_HOST)
プロキシのとこも何故かコメントアウトされているので、ドキュメントを参考に書き換えておいた
@@ -58,13 +59,13 @@ module Fastladder def fetch(link, options = {}) uri = link.kind_of?(URI) ? link : URI.parse(link) - http_class = Net::HTTP - #if proxy = uri.find_proxy || Fastladder::HTTP_PROXY - # unless Fastladder::HTTP_PROXY_EXCEPT_HOSTS.any? { |pettern| uri.host =~ pettern } - # http_class = Net::HTTP.Proxy(proxy.host, proxy.port, proxy.user, proxy.password) - # end - #end - http = http_class.new(uri.host, uri.port) + if proxy = uri.find_proxy || Fastladder::HTTP_PROXY + if Fastladder::HTTP_PROXY_EXCEPT_HOSTS.any? { |pettern| uri.host =~ pettern } + http = Net::HTTP.new(uri.host, uri.port, nil, nil, nil, nil) + else + http = Net::HTTP.new(uri.host, uri.port, proxy.host, proxy.port, proxy.user, proxy.password) + end + end http.open_timeout = options[:open_timeout] || Fastladder::HTTP_OPEN_TIMEOUT http.read_timeout = options[:read_timeout] || Fastladder::HTTP_READ_TIMEOUT
OPMLの移行
オープンソース版Fastladderにはフォルダに入ってないとフィードがエクスポート出来ないというバグがあるのだけどすっかり忘れていた。少しハマった後思い出して解決。
今後やりたいこと
- ログインをOpenIDにしたい(社内OpenIDサーバー立ててあるので)
- ブックマークサービスとかtwitter系の社内SNSみたいなものとの連携をさせたい
まぁ社内ブックマークサービスも社内SNS(しゃべる)も一度か二度ほどコケてるけどね。