読者です 読者をやめる 読者になる 読者になる

高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

UserDirを使って個人用WebDAVフォルダ

今日は遅い夏期休暇(明日の学校行き用)ということで年休中。まあ、引っ越しのための準備もありますが。
――引っ越しに当たって今までのファイルを全部サーバ経由でアクセスできるようにしなければいけない。この辺についてあんまり良い手段が思いつきませんでした。
とりあえず、WebDAVフォルダを作ってPatchGooさん紹介のNetDriveを使って仮想ドライブ化、拡張コピーを使って一括コピー という形で運用します。まあ、元が実ファイルなので、そのうちそこにrsyncを持ち込むことも出来るかな と(やっぱり出来れば使いたいし)。


さて、そこで出来れば、外部コンテンツのほかに、ユーザーディレクトリ配下にWebDAVプレースを作って、そこにファイルを配置したい。ということで、ApacheのUserDirモジュールを使って、ユーザーディレクトリ配下にApacheの影響の及ぶディレクトリを作ってみました。
うちのApache/2.2.4では、UserDirに関する設定はextra/httpd-userdir.confにまとめられているので、そこを編集します。
わたしは各ユーザーディレクトリにwebというディレクトリを作り、web/davがWeb-DAV用。web/wwwが通常のサイト用(使うのか?)として作ってみたい。ということで、UserDirにはwebを設定し、別途以下のようなディレクティブを追加しました。

# ルートディレクトリにはアクセス不可
<Directory /home/*/web>
    Order deny,allow
    Deny from all
</Directory>

そして、WebDAV用に以下のディレクティブを追加
# 一般公開WebDAV

<Directory /home/*/web/dav>
    AllowOverride FileInfo AuthConfig Limit Indexes
    Dav on
    Order allow,deny
    Allow from all
</Directory>

Dav svnとしておけば、現状のサーバ全体用のSubversionリポジトリ用ディレクトリのほかに、各ユーザー用のリポジトリディレクトリも作れて良かったかもしれません(^_^;


そして、ここからが詰まるところで、なぜかどうアクセスしてもForbiddenになってしまう。まあ、一部もっと良い方法があるような気もしますが、ひとまず以下のようにして対処。
webディレクトリ配下のオーナーをApache実行ユーザに変更します。これについてはディレクトリのパーミッションで、Apacheに操作権限を与えられれば良いだけだったのかもしれませんが、その辺がよく分からなかった(さすがにo+rwxという訳にはいかないし)ので、このようにしました。
のちのちコンソール上で作成するファイルは、apacheユーザーではログインが出来ないので、sudoで作るかrootになって作るかする必要がある=所有者がデフォルトでrootになってしまいます。なので、ファイルを作る場合はchownを忘れず実施すること。

そして、最後に。ユーザーディレクトリのパーミッションに、o+xを追加すること。これについてはid:ir9Exさんの情報より。情報どうもありがとうございました。


とりあえず、このディレクトリに定期的に必要なデータをバックアップして、管理するようにしておしまいでしょうか。次はバックアップですね、ひとまず
rsync -a -z --delete /home /var/backupとして、/var/backupを暗号化&認証付き&読み取り専用で外部からのアクセス許可を与え、外部から定期的に吸い出す という感じでしょうか。このままではApacheの設定ファイルなどが対象外となってしまうので、何らかの方法で管理しなければいけませんね(出来ればこれこそSubversionで管理したいところですが、ファイルが散逸しているのでどうにもいかないんですよね)。