2010/11/08

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



これでひとまずサーバができたと思います。