先日取り上げたばかりのInsipidをインストールしてみた。
添付のドキュメントには最低限の情報しかない上、日本語記事が非常に少ないため、予想以上に苦戦。一部問題が残っているが、とりあえず動作させることができた。
ただかなり行き当たりばったりで動かしたため、やり方が間違っている可能性が大。
前提条件
- MySQLまたはPostgreSQLのいずれか
- いくつかPerlモジュールの追加が必要
1.ダウンロード
以下のサイトより最新のInsipidの圧縮ファイルをダウンロードし、ディレクトリ付きで解凍。圧縮ファイルはtar.gz形式(というかgzip形式というのか?)なので、それに対応した解凍ソフトが必要。
Insipid - a web-based bookmark repository
2.各種ファイル修正
insipid-config.cgi修正
insipid-config.cgi.exampleをコピーして作成したinsipid-config.cgiに、DB設定およびInsipid用ユーザ設定を記述。
dbuser = DBユーザ名
dbpass = DBパスワード
dbtype = DBタイプ (mysql or Pg)
pagepath = /insipidルートパス
username = Insipidユーザ名
userpass = Insipidパスワード
htaccess修正
修正点は二つ。
- insipid.cgiを指定しなくてもページが表示できるよう、DirectoryIndex記述を追加
- RewriteBaseにInsipidルートパスを記述
DirectoryIndex insipid.cgi
RewriteEngine On
RewriteBase /Insipidルートパス
RewriteRule ^bookmarks/(.*) insipid.cgi?tag=$1 [QSA]
RewriteRule ^bookmarks insipid.cgi [QSA]
RewriteRule ^feeds/bookmarks/(.*) insipid.cgi?op=rss&tag=$1 [QSA]
RewriteRule ^feeds/bookmarks insipid.cgi?op=rss [QSA]
RewriteRule ^snapshot/(.*) insipid.cgi?op=viewsnapshot&md5=$1 [QSA]
リモートDBサーバ対応(リモートDBサーバ利用時のみ)
ソースを見る限り、InsipidはリモートDBサーバに対応していない(思い切り「localhost」と書いてある)ようなので、一カ所ソースを書き換える。本来は他のパラメータと同じようにinsipid-config.cgiから取得するように変えればいいのだが、面倒なのでソースにサーバ名を直書きした。
修正箇所は、lib/Database.pmの49行目。
変更前 $dsn = "DBI:$dbtype:database=$dbname;host=localhost";
変更後 $dsn = "DBI:$dbtype:database=$dbname;host=リモートサーバ名";
3.アップロード
サーバ上にInsipidインストールディレクトリ(Insipidルートパスに相当)を作成し、Insipidディレクトリの中身を丸ごと転送。
4.htaccessの名前を変更
FTPツールによりhtaccessのファイル名を「.htaccess」に変更。
5.初回アクセス
http://example.com/Insipidルートパス/への初回アクセス時に初期化が行われ、問題がなければリロードを促すメッセージが表示される。リロードを行うと何も登録されていないInsipidのトップページが表示される。
初回アクセス時にPerl moduleが不足していると、以下のようなエラー画面が表示される。
Couldn't find the module "Date/Format.pm".
You may want to search CPAN for the module or check the Insipid homepage for more information.
この場合、The CPAN Search Siteで探して来るか、Perlモジュールのインストールが自由にできる環境であればppmコマンドなどでインストールする必要がある。今回の場合、取ってきた以下のモジュールに含まれるDate、Time、XML(XML-Writer-0.600からリネーム)ディレクトリを、Insipidインストールディレクトリのlib直下にコピーした(正しいやり方か不明)。
- XML-Writer-0.600
- TimeDate-1.16
ログイン
loginリンクをクリックし、表示された画面でユーザ名とパスワードを入力すると、ログイン状態の画面に切り替わり、各種設定やブックマーク登録が可能となる。
ブックマーク登録
Insipid登録画面によるブックマーク登録
Insipid登録画面を表示
ログイン状態にてaddリンクをクリック。
登録内容の入力
登録するページの情報を入力。
- URL
- Title
- Description
- Tags
ブックマーク登録実行
オプションを選択してAddボタンを押下。
- Snapshot : ページキャッシュ取得有無(キャッシュはログイン時のみ参照可能)
- Public : ブックマーク公開/非公開
- Return : 前画面に戻るか否か
Bookmarkletsを利用したブックマーク登録
事前準備
ログイン状態で表示されるbookmarkletsをクリックし、表示されたPost This Pageリンクを、あらかじめブラウザのブックマークまたはお気に入りに登録しておく。
ブックマーク登録実行
Insipidに追加したい画面を表示し、ブックマークより登録したリンクを選択すると、Insipidの登録画面で上書きされる。ここで通常の登録操作をすることによりInsipidにそのページが登録される。なおMTのクイックポストと異なり、別ウィンドウが開かれるわけではないので注意が必要。
ちなみにログインした状態で操作しないとうまくいない模様。
未解決の問題
ブックマークページのキャッシュを取得するsnapshot機能において、UTF-8なページに限って以下のエラーが発生して動作しない。EUC-JPおよびShift-JISなページでは問題なく動作する(まだ動作例は少ないが)。
Parsing page... Content-Type: text/html Couldn't find the module "auto/MyParser/utf8_mode.al".
You may want to search CPAN for the module or check the Insipid homepage for more information.
utf8_mode(1)という記述の問題らしいが、Perlモジュールの不足でもなさそう。以下のページを見る限り、Perl 5.8以降であれば問題ないとあるが、今使っているサーバのPerlは5.8.4なのでクリアしているはず。
blojsom@couer de lion - Parsing of undecoded UTF-8 will give garbage when decoding entities at ほげほげ
HTML::Parserに文字列を食わせるとこういうワーニングを吐くことがある。 utf8_mode(1)を呼べばよいらしい。 こんな感じ。
my $p = new HTML::Parser;
$p->utf8_mode(1);
Perl 5.8以降じゃないと使えない。
正直言ってちょっとお手上げっぽい感じ。
コメントする