Fedoracore5でWebDAV設定

昨晩からFC5マシンの設定をはじめてマス。とりあえず、夜中までかかってCatalystのインストールは終了。

FC5のデスクトップ触るの初めてだったけど、FireFoxのフォントがモサモサしてて読みにくい以外は、自分でいつも使っている拡張は大体入ってるし、ターミナルがタブ式になってて使いやすいし、日本語入力も困んないし、いい感じかも。

昨日はapacheとsubversionはrpmでさくっと入ったし、今日はwebdavの設定でもするかなと、、、、

これもRPMでさくっとインストール。らくちんらくちん。

でも、WIndowsでテストしたら、httpで接続するとwebフォルダでなくて共有フォルダとして認識されてしまい、putができん。http://hostnameで認識するのにアイコンのプロパティみると\\hostnameに替わってるの。

共有

うーん、なんでかな?Winが悪いのかFC5が悪いのか?と悩んだが結局深追いせず、軽い気持ちでhttpsで接続してみるとあら不思議、、、

webフォルダとして接続できてるヨ

webfolder

まぁいいや、trac用だから。と、とりあえず深入り禁止の方向で。

あと、mod_encodingの設定すんのメンドイナァと思ってたら、FC5用のRPM作ってる人がいた。

素晴らしい、感謝感謝でインストール。OK!

Apache+WebDAVインストール(1)

WebDAVをFTPの代わりに使うといいことは色々あります

  • HTTPポートを空けておけば、会社とファイルのやり取りが出来るので、多少サイズが大きくなっても、物理的な媒体にたよらなくてイイ
  • 余計なポートをあけなくていい。(家サーバーにFTPポートをあけるのはちょっと躊躇するヨネ)
  • Windows2000だとネットワークフォルダとして見えるのでドラッグドロップでファイル操作が可能
  • subversionでバージョン管理も可能(家では必要ないけど)
  • 仲間内での共有フォルダとして使うことも可能

家イントラとか会社イントラだとSambaでも良いんだけど、大体会社だと普通は外向けにそんなポート番号開いて無いでしょ?かといって、ftpも申請する必要があったりするわけで(色々と)面倒くさい。そこで、WebDAVを使うとこれらのファイル転送の問題がバシッと解決されるわけです。

あとはセキュリティーの設定がapacheの設定を使えるのが嬉しい。もしもapache運用したことがあれば、セキュリティーの設定をゼロから覚える必要がないし、ログ管理も楽なのダ。

まずはapacheのインストール。WebDAVを使うためにはapxsが必要なのでdevもあわせてインストールします。後ろの二つは特に必要ないと思うけど、まぁ入れておく。

# rpm -Uvh httpd-2.0.47-10
# rpm -Uvh httpd-devel-2.0.47-10
# rpm -Uvh httpd-manual-2.0.47-10
# rpm -Uvh redhat-config-httpd-1.1.0-5

外向けに使う場合は、常に最新版をインストールするベシ。最初は自動アップデートとか気になって触ったりしたんだけど???な挙動が多いので、地道にダウンロードしてrpmからインストする従来の方法に戻っています。Fedora Projectから最寄のFTPサーバー探して、最新版を落とします(httpd-2.0.50-1.0とhttpd-devel-2.0.50-1.0)

# rpm -Uvh httpd-2.0.50-1.0
# rpm -Uvh httpd-devel-2.0.50-1.0
# rpm -qa | grep httpd #確認
httpd-2.0.50-1.0
httpd-devel-2.0.50-1.0

/etc/httpd/conf/httpd.confを設定。ServerAdminとServerNameを指定すればとりあえず動くはず

# # ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin Your@E.mail.address

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
ServerName Your.server.Name

確認はapachectl -tでOKがでればOK。なんか色々いわれたら、素直になおすベシ。

# apachectl -t
Syntax OK

ランレベルの確認したら起動。restartするのは僕の癖。普通にstartでもイイ

# /sbin/chkconfig --level 35 httpd on
# /sbin/chkconfig --list httpd
httpd 0:オフ 1:オフ 2:オフ 3:オン 4:オフ 5:オン 6:オフ
#/sbin/service httpd restart

Apache+WebDAVインストール(2)

Apache2でWebDAV使いたければhttpd.confに以下のモジュールがロードされるようになっているか確認すればよい

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

あとはhttpd.confにWebDAV用の記述を追加すればよいのだが、これだと、日本語が化けるし、一度バケルと消すのが面倒になる。そもそも今回WebDAV導入の目的の一つが「会社-家間での快適なファイル移動」なので、日本語はちゃんと扱えないとダメデショウということで、mod_encodingを導入(自然な流れともイエル)。

WebDAV Resources JPから、Apache 2.0用のmod_encoding-20020611a.tar.gzとmod_encoding.c.apache2.20040616をダウンロード

# tar xvfz mod_encoding-20020611a.tar.gz
# cd mod_encoding-20020611a/lib
# ./configure
# make
# make install #suで
# cd ..

でもって、mod_encoding.c.apache2.20040616をmod_encoding.cとして上書きしたら

# ./configure --with-apxs=/usr/sbin/apxs
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
# mv mod_encoding.so /etc/httpd/modules/mod_encoding.so #su

下のようになるかチェック

# ldd mod_encoding.so
libiconv_hook.so.1 => /usr/local/lib/libiconv_hook.so.1 (0x00373000)
libc.so.6 => /lib/libc.so.6 (0x00a6c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00a57000)

おかしい場合は/etc/ld.so.confに/usr/local/libを追加して

# ldconfig

ここまで終わったら、httpd.confにdav用の設定を追加

#モジュール追加
LoadModule encoding_module modules/mod_encoding.so

Alias /mydav "/usr/local/dav"

<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
</IfModule>

# DAVアクセスされるディレクトリの設定
<Location "/mydav">
DAV On
AuthType Basic
AuthName "WebDAV Folder"
AuthUserFile "/usr/local/passwd/davpwd"
AuthGroupFile "/dev/null"
Require valid-user
Options Indexes
</Location>

認証を入れるとこんな感じになります。後は構文チェックしてOKでたら再起動

# apachectl -t
Syntax OK
# /sbin/service httpd reastart

モジュールをロードしないとSyntax OKが出ても動きません。いくつかDAVサーバーを設定しているんだけど、一度そのおとぼけミスで30分ほどハマッタことがあるヨ。

WindowsXPでWebDAVを使うには

Windows2000からWindowsXPに替えてから、WebDAVが使えなくなっていることに気づく。

というより、ネットワークプレースの追加でDAVのURL選ぶと認証画面が出てくるが、パスワードが正しいにもかかわらず、認証がケラレテしまう。そうすると、再度パスワード入力を促すプロンプトが出てくるんだが、その際、ドメイン名@ユーザー名に変わっているヨ。

これ絶対アヤシイな!

ということで、ググるとビンゴだった。 AuthUserFileにユーザー名とドメイン名@ユーザー名の2つ記述すればお手軽解決するらしい。ちなみにドメイン名(ホスト名)は大文字だゾ。

[root@domain passdb]# htpasswd davpwd DOMAIN@kzfm New password: Re-type new password: Adding password for user DOMAIN@kzfm [root@domain passdb]# more davpwd kzfm:Y7tJoDRk1Yb.M DOMAIN@kzfm:b8tvXh16IY2Zg

エー、でもこれってどうなのかにゃぁ?もちっとスマートなやり方はないのか?

Subversion導入してみた

WebDAVを導入した際には、さすがにsubversionは使わないだろうと思っていたが、結局、使う羽目になった。というか使えば手放せなくなるヨ。まず、neonが必要なのでyumでインストール。subversion関連はsubversionからrpmをダウンロードしておく。

  • mod_dav_svn
  • subversion-devel
  • subversion
  • subversion-perl
# yum install neon # rpm -Uvh mod_dav_svn-1.2.1-0.1.1.fc1.rf.i386.rpm subversion-*.rpm Preparing... ########################################### [100%] 1:subversion ########################################### [ 25%] 2:mod_dav_svn ########################################### [ 50%] 3:subversion-devel ########################################### [ 75%] 4:subversion-perl ########################################### [100%]

特にDAVがなくてもCVSみたいに動くので、これでも十分使える。WebDAVで使いたい場合は、/etc/httpd/conf.d/subversion.confを編集する。

neon

neonはWebDAV client library

そしてsubversionでproxyを扱うには~/.subversion/serversを書き換えればいいらしく、あっさりとうまくいった。

自宅からチェックアウトできるようになると、仕事と家の境がさらになくなるナァ。開発環境は家のほうがいいし、あんま会社にいたくなくなる。