ついカッとなって自前のWeave同期用サーバを構築

Firefoxでブックマークなどの同期をするのにMozillaのWeaveというアドインを使ってます。
サーバに蓄積したデータと同期を取るタイプで、Mozillaのサーバにログインして使います。

まだβ版なので動作保証はあまりないですが、特に問題なく同期できてます。最初のうちは。
しばらくすると、ユーザが増えたせいかサーバにログイン出来なくなって役に立たないので自分でサーバを立てられないものか?とちょっと調べてみました。
Weave同期用サーバの構築自体の話は見つけられなかったんだけど、どうやらプロトコルはWebDAVでBasic認証を使っているようなので、頑張れば自分でサーバたてられるんじゃ無いの?と考え試行錯誤。

結果からいうと、どうやらうまくいったようだというレベル。
見た目は同期できてるのでたぶん大丈夫だろうと思われます。
同期もかなり速くなってなかなか快適。
しかし久しぶりにサーバのログとにらめっこしながら試行錯誤したなぁ・・・

以下は構築方法。

環境は以下のような感じ
Debian Linux Lenny 2008/09/25時点の最新
Firefox 3.0.2 + Weave 0.2.6

ちなみにLAN内のローカルサーバにつき、セキュリティとか一切無視してるのでご注意を。

Web側から見えるディレクトリ構成は以下のようにする必要があるみたいです。

/usrUSERID1
   USERID2
   USERID3

Apahce2はインストール済みなので省略。
こちらを参考にWebDAVを導入。

# cd /etc/apache2/sites-available
# cp -p /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-dav.conf .
# mv httpd-dav.conf webdav
# mkdir /var/www/user
# chown -R www-data:www-data /var/www/user
# a2enmod dav
# a2enmod dav_lock
# a2enmod dav_fs

webdavファイルの変更点は以下。
<Directory>だとうまくいかなかったので、<Location>に変更しています。
diff /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-dav.conf  /etc/apache2/sites-available/webdav
15c15,17
< DavLockDB "/var/DavLock"
---
> DavLockDB "/tmp/DavLock"
> DavMinTimeout 600
> Alias /user "/var/www/user"
17,19c19
< Alias /uploads "/uploads"
<
< <Directory "/uploads">
---
> <Location /user>
25,26c25,26
<     AuthType Digest
<     AuthName DAV-upload
---
>     AuthType Basic
>     AuthName WebDAV
30,31c30,32
<     AuthUserFile "/user.passwd"
<     AuthDigestProvider file
---
>     #AuthUserFile "/user.passwd"
>     #AuthDigestProvider file
>     AuthUserFile "/etc/apache2/webdav.passwd"
35,38c36,40
<     <LimitExcept GET OPTIONS>
<         require user admin
<     </LimitExcept>
< </Directory>
---
>     #<LimitExcept GET OPTIONS>
>     #    require user admin
>     #</LimitExcept>
>     require valid-user
> </Location>

下のコマンドでパスワードのファイルを作っておく。
USERID1はWeaveで設定するユーザ名に置き換え。
# htpasswd -c /etc/apache2/webdav.passwd USERID1

ここまで出来たらApache2を再起動して動作を試してみる。
試す用のアプリはCarotDAVあたりがおすすめ。
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

ログインできてファイルの書き込みも出来るようになったら、以下のコマンドでユーザのディレクトリを作成しておく。
# mkdir /var/www/user/USERID1
# chown -R www-data:www-data /var/www/user/USERID1

ここまで出来ればあとはWeave側の設定だけで行けるはず。
ツール→オプションからWeave設定画面を開いて、AdvancedタブのServer LocationにサーバのURLを入力。ここではルートまででいいみたい。
例:http://xx.xx.xx.xx/
Accountタブに戻って、Sign Inボタンを押して設定したユーザIDとパスワードを入力してログイン。
あとはApacheのログと、Weaveのログを見ながらうまくいってるかどうかを確認。

ここまでやれば同期まで出来るはずだけど、Weave側のログに以下のようなものが出てるはず。

2008-09-xx 00:xx:xx    Bookmark Share    INFO    Got Shares: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /api/share/get.php was not found on this server.</p>
<hr>
<address>Apache/2.2.9 (Debian) DAV/2 PHP/5.2.6-3 with Suhosin-Patch Server at xx.xx.xx.xx Port 80</address>
</body></html>

Apacheのログと見比べてみると、どうやら「/api/share/get.php」にあるファイルに対してPUTをしているみたい。
なんじゃこりゃー と思ってググってみると、外国のサイトでこの記事を発見。
なんとWeave同期用サーバ構築用の解説みたいです。日本じゃ見つからないけど外人さんはやってんのねーと思いつつ斜め読みしてみるとget.phpの解説があった。
簡単に訳すと
Weaveのフォーラムで聞いてみても教えてくれない。
無くても問題ないみたいだから、気にするな!
気になるなら/api/share/get.phpにテキトーなファイルを置いておけばメッセージでなくなるよ!

このget.phpが何をやっているのかは気になりますが、とりあえず無くてもWeaveの動作には支障が無いらしいので放置。

とりあえずこれで完成~
・・・なんだけど、うちの環境だとすべてのデータを同期させるとエラーが出て同期に失敗する・・・
Dataタブのチェックをいじって、Bookmarks、Cookies、Save Passwords、Saved Form Dataだけにするとエラーが出なくなった。
ブックマークとパスワード以外は別にいらないかなとも思うのでとりあえずこれでいくことに。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ついカッとなって自前のWeave同期用サーバを構築

このブログ記事に対するトラックバックURL:

コメントする


最近のコメント

RSS feed meter for http://blog.eternalmiracle.net/taka/
Powered by Movable Type 4.21-ja