UbuntuでWebDAVサーバの構築
たまたま手元にあるPowerMac G5でWebDAVサーバを作ろうかと思ったのですがMacOSX Server版を持っていません。通常のMaxOSXを手作業で設定しようとしたのですが、いろいろ細かいセキュリティの問題にぶつかりました。結局面倒なのでUbuntuで行くことにしました。下記説明はPowerPC用のUbuntuでの設定ですが、通常のUbuntuでも同様な設定でできるはずです。
MacOSXのFinderなどを含む一部のWebDAVクライアントソフトはSSLだと繋がらないので今回はSSL無しの設定です。認証はDigestを用いました。
まずはubuntuのインストールです。10.04のデスクトップ版にしました。一つ古いバージョンですがLTS(Long Term Support)なので安心感があります。
そしてまずは「システム→システム管理→アップデート・マネージャ」からアップデートをしました。
次に、ウェブサーバソフト「apache2」のインストールです。
左上の「Ubuntuメニュー??」の一番したにある「Ubuntuソフトウェアセンター」で「apache2」と検索します。いくつもヒットしますが「Apache HTTP Server metapackage」というのをインストールすれば良いはずです。
次に公開するWebDAVディレクトリを作成します。
どこでも良いと思いますが僕は以下のようにしました。
$ sudo mkdir /var/www/webdav
$ sudo chown www-data:www-data /var/www/webdav/
ダイジェスト認証に用いるパスワードファイルを作っておきます。
作成する場所も任意ですが公開ディレクトリの外の方が安心です。
ここで設定した「WebDAV」というrealmと、後の設定ファイル中で指定する「AuthName」が同一である必要があります。
$ sudo htdigest -c /etc/apache2/.htdigest "WebDAV" ユーザ名
一番大切な設定ファイルを作ります。
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/webdav
$ sudo gedit /etc/apache2/sites-available/webdav
エディタで以下のように今回のサーバ用の新しい設定ファイルを作成しました。
CGIやdocの部分は削除しました。
ここから
ここまでServerName abcde.fghij.jp:80
<virtualhost *:80>
ServerAdmin webmaster@localhost
#DocumentRootを書き換えました。
DocumentRoot /var/www/webdav
<directory var/www/webdav>
# Indexesにマイナスを付けました。
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
<location>
DAV On
AuthType Digest
AuthName "WebDAV"
AuthUserFile /etc/apache2/.htdigest
Require valid-user
DavMinTimeout 600
<LimitExcept GET PUT HEAD OPTIONS POST>
Require valid-user
</limitexcept>
</location>
</virtualhost>
インストールされているWebDAV用のモジュールを有効化します。
それとファイルロック用のモジュール。
もう一つ、ダイジェスト認証のモジュールも有効化します。
$ sudo a2enmod dav_fs
$ sudo a2enmod dav_lock
$ sudo a2enmod auth_digest
まず今までの設定を無効化します。
次に先ほど作った設定ファイルを有効化します。
$ sudo a2dissite default
$ sudo a2ensite webdav
最後にApacheを再起動します。
$ sudo /etc/init.d/apache2 restart
これでひとまずサーバができたと思います。