木曜日, 6 4 月 2006
| WebDAVでファイル共有 |
|
同じネットワーク内でファイルを共有する場合
個々のPCでフォルダを公開するかSambaなどのファイルサーバを使えばいいけど
共有したい相手が離れたネットワークにいる場合はこの方法は使えない。
こういう場合はWebDAVを使うと簡単便利です。
WebDAVはWebサーバのプロトコルを拡張しファイル共有を行えるようにしたもので
Webサーバにアクセスできる環境であれば問題なく使えるのでネットワークが離れていても大丈夫。
今回apache2.0系に設定する機会があったのでそのときの備忘録を書いておきます。
まずはhttpdのインストールから。
ファイル名が文字化けしてしまうためmod_encodingを別途インストールする。
まずWebDAV Resources JPから mod_encoding-20021209.tar.gzと mod_encoding.c.apache2.20040616を落としてくる。
で、mod_encoding-20021209.tar.gzを展開後、中のmod_encoding.cをmod_encoding.c.apache2.20040616と差し替える。
cp: cannot stat `mod_encoding.so': No such file or directory
とかエラーが出る場合は手動でmod_encoding.soファイルを作ります。
次にhttpd.confをWebDAVが使用できるように書き換える。
http://xxx.xxx.xxx.xxx/webdav/を指定してやると共有フォルダが見られるようになります。
でも最初この設定でファイルを置いてみようとすると
作られるファイルのプレフィックスだということに気付きました。
つまり/usr/local/apache2/logs/DavLockをtouchで作ってnobody所有にしても意味がなく
そのディレクトリに対して書き込む権限が必要だ、ということです。
で、DavLockDBを/tmp/DavLockに変えてやることによって無事動作するようになりました。
ただこの状態だと認証もないし暗号化もされていないのでBASIC認証を掛けてSSLにも対応させるべきですね。
この辺の設定は通常のApacheと同じ方法で出来るので楽チンです。
VPNもいいけど手軽にファイルを共有するならWebDAVがオススメです。
個々のPCでフォルダを公開するかSambaなどのファイルサーバを使えばいいけど
共有したい相手が離れたネットワークにいる場合はこの方法は使えない。
こういう場合はWebDAVを使うと簡単便利です。
WebDAVはWebサーバのプロトコルを拡張しファイル共有を行えるようにしたもので
Webサーバにアクセスできる環境であれば問題なく使えるのでネットワークが離れていても大丈夫。
今回apache2.0系に設定する機会があったのでそのときの備忘録を書いておきます。
まずはhttpdのインストールから。
$ ./configure --enable-module=so --enable-dav $ make # make installこれで一応インストールは完了で使えるようにはなるけど、このままだと日本語名のファイルを置いた場合に
ファイル名が文字化けしてしまうためmod_encodingを別途インストールする。
まずWebDAV Resources JPから mod_encoding-20021209.tar.gzと mod_encoding.c.apache2.20040616を落としてくる。
で、mod_encoding-20021209.tar.gzを展開後、中のmod_encoding.cをmod_encoding.c.apache2.20040616と差し替える。
$ tar zxvf mod_encoding-20021209.tar.gz $ cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c次にアーカイブに同梱されているiconv_hookライブラリをコンパイル、インストールする。
$ cd mod_encoding-20021209/lib $ ./configure $ make # make installその後、mod_encodingのコンパイル、インストール。
$ cd . $ ./configure --with-apxs=/usr/local/apache2/bin/apxs $ make # make installこのインストール時に
cp: cannot stat `mod_encoding.so': No such file or directory
とかエラーが出る場合は手動でmod_encoding.soファイルを作ります。
$ gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook # make installこれでインストールは完了。
次にhttpd.confをWebDAVが使用できるように書き換える。
LoadModule encoding_module modules/mod_encoding.so <IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "cadaver/" EUC-JP </IfModule> DavLockDB /usr/local/apache2/logs/DavLock <Directory "/usr/local/apache2/htdocs/webdav"> Dav on </Directory>これでWindowsの[マイネットワーク]→[ネットワークプレースの追加]で
http://xxx.xxx.xxx.xxx/webdav/を指定してやると共有フォルダが見られるようになります。
でも最初この設定でファイルを置いてみようとすると
[error] The locks could not be queried for verification against a possible "If:" header. [500, #0] [error] Could not open the lock database. [500, #400] [error] (13)Permission denied: Could not open property database. [500, #1]と言われてしまって何が悪いのか調べてみるとDavLockDBで指定するのはファイルではなく
作られるファイルのプレフィックスだということに気付きました。
つまり/usr/local/apache2/logs/DavLockをtouchで作ってnobody所有にしても意味がなく
そのディレクトリに対して書き込む権限が必要だ、ということです。
で、DavLockDBを/tmp/DavLockに変えてやることによって無事動作するようになりました。
ただこの状態だと認証もないし暗号化もされていないのでBASIC認証を掛けてSSLにも対応させるべきですね。
この辺の設定は通常のApacheと同じ方法で出来るので楽チンです。
VPNもいいけど手軽にファイルを共有するならWebDAVがオススメです。
Posted by at 11:59 午後 in Linux/




