« 2006年5月 | トップページ | 2006年8月 »

2006年7月

2006/07/24

WebサーバのWebDAV化に挑戦

WebサーバのBasic認証で、Basic認証はうまくいったのですが、ファイルサーバの代わりにはいま一歩でした。
マイキャビをネットワークフォルダから使用するで、マイキャビがWindows2000でもネットワークフォルダとして使用可能になりましたが、日本語のフォルダ名やファイル名にするとマイキャビが破壊されるという非常にリスキーなものでこちらも使い物になりませんでした。

・・・そんな紆余曲折を経て、WebサーバをWebDAV化しようと思ったわけです。

WebDAV化するにはApacheにモジュールを追加するのですが、それが普通のWebコンテンツに影響を与えないのかが心配です。でも、ネットで調べてもどこにも情報が無いんですよね・・・。

ま、なんとかなるさ。やってみるべ。
ちなみに、今回の環境です。
VineLinux2.6
ApacheはVineLinux2.6インストール時に付いて来た物。(1.3系です)
SSLを使ったBasic認証までは設定が済んでいます。

ところで、VineLinux2.6のApacheでWebDAV化できるのか?と思い、VineのミラーサイトのVinePLUSを見たところ、mod_dav-1.0.3-4vl4.i386.rpm と mod_encoding-20021209-0vl2.i386.rpm が見つかったので問題なさそうです。

ネットで調べていると、Vine2.6でmod_davという非常に都合のいいページを見つけて、今回参考にさせて頂きました。


まず、VineLinux2.6 のAPTには、PLUSが含まれていないので、/etc/apt/sources.list を編集します。
上記ミラーサイトのPLUS部分
#rpm http://www.ring.gr.jp/pub/linux/Vine/apt 2.6/$(ARCH) main plus plus-noarch
#rpm-src http://www.ring.gr.jp/pub/linux/Vine/apt 2.6/$(ARCH) main plus
のコメント#をはずします。

# apt-get update
で、aptデータベースの更新

mod_davパッケージがあるか検索
# apt-cache search mod_dav
mod_dav - A DAV module for Apache.
mod_encoding - Apache mod_dev 用日本語エンコーディングモジュール mod_encoding.

ちゃんとありますね!

mod_dav と mod_encodingをインストールします。
# apt-get install mod_dav
# apt-get install mod_encoding
でインストールします。
mod_davインストール時に、依存する libiconv_hook パッケージのインストールもするか聞かれました。もちろん一緒にインストールします。

さて、Apache側の設定変更です。
/etc/httpd/conf/httpd.conf を編集
<IfDefine HAVE_DAV>
LoadModule dav_module         modules/libdav.so
</IfDefine>
これはもともとありました。
この下に以下を追加
<IfDefine HAVE_ENCODING>
LoadModule encoding_module    modules/mod_encoding.so
</IfDefine>

<IfDefine HAVE_DAV>
AddModule mod_dav.c
</IfDefine>
の下に以下を追加
<IfDefine HAVE_ENCODING>
AddModule mod_encoding.c
</IfDefine>

これで、mod_davとmod_encodingのモジュールが追加されます。

さらに、以下を追加
mod_encodingの設定です。
<IfModule mod_encoding.c>
  EncodingEngine    on
  NormalizeUsername on
  SetServerEncoding     EUC-JP
  DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
  AddClientEncoding  "cadaver/" EUC-JP
</IfModule>

SetServerEncodingは、Vineの文字コードがEUCなんでEUCにします。
NormalizeUsername onは、WindowsXP使用時にユーザー名に余分なドメイン名が引っ付いてくるのをカットしてくれます。
ClientEncodingの設定に関しては、Windowsの設定をしてます。cadaverの設定は、他の方の設定を見るとたいてい付いているので付けときました。(おいおい) Linuxで使われるWebDAV用のクライアントソフトの設定だそうです。


mod_davの設定です。
<IfModule mod_dav.c>
DAVLockDB /var/lock/apache/DAVLock
DAVMinTimeout 600
DavServerEncoding EUC-JP
</IfModule>

DAVLockDB は、ロックファイルの位置です。後でディレクトリを作ります。
どこに作ってもいいのですが、Vineだとここに作るのが無難でしょう。

<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
ここは「WebDAVサーバの構築」の説明によると、このヘッダを付けないと、変なファイルを要求されてしまうそうです。
ここを省くと、確かに_vti_inf.htmlファイルをくれ!みたいなのがログに出てました。
WebDAV設定時のお約束なんですかね。

<IfModule mod_dav.c>
<Location WebDAVディレクトリのロケーション(Webから見たディレクトリの位置)>
  DAV On
  SSLRequireSSL
  AuthUserFile /etc/httpd/.htpasswd←Basic認証設定時に作成したパスワードファイルの場所
  AuthGroupFile /dev/null
  AuthName "Private Area"
  AuthType Basic
  Require user 許可するユーザー名
</Location>
</IfModule>

SSLRequireSSLで、SSLを使用しない通信は接続不可にしました。
Basic認証を使用して、許可したユーザーしか入れなくしています。


ロック用ディレクトリを作成します。
# mkdir -p /var/lock/apache
# chown apache.apache /var/lock/apache

dav用のディレクトリも作成します。
# mkdir WebDAV用のディレクトリ
# chown apache.apache WebDAV用のディレクトリ

ロック用ディレクトリもDAV用ディレクトリも、Apacheが使用するのでApacheのユーザーが書き込めなくてはいけません。
Apacheのユーザーは、httpd.confのUserです。VineLinux2.6はデフォルトでapacheです。

Apacheを再起動します。
# /etc/init.d/httpd restart
httpdを停止中:          [ OK ]
httpdを起動中:          [ OK ]


後はマイキャビをネットワークフォルダから使用するみたいな感じでネットワークフォルダを作成すれば使用できます。
ただし、SSL必須なので、URLは https:// から始まります。


以上で設定完了。
他のWebコンテンツにも、今の所副作用は出ていないようです。

でも、Web上からなんでもファイルが置けてしまうというのは危険なわけで・・・。
実運用しようかマイキャビで我慢しようかどうしようか迷い中ではあります。(汗)

| | コメント (0) | トラックバック (0)

2006/07/17

USB-KNOPPIXを使用する

近頃フラッシュメモリの値段が大変安くなりました。
1GのSDカードを買ってきたので、USBブートのKNOPPIXをインストールしてみようと思いました。

○インストールした機種
TOSHIBA
libretto U100/190DSB(ノートPC)
○USBメモリ
ELECOM MR-GU2A13BK(メモリリーダライタ)
UMAX SuperMax 1GB(SDメモリカード)


USB-KNOPPIXのオフィシャル(?)サイトは
http://kosuge.or.tp/kserv/index.html
になります。
緊急避難場所らしいのですが。(汗)

このページからUSB-KNOPPIX 256M
USB-KNOPPIX-20041001R001.iso
をダウンロード

このページに書いてあるインストール方法の通りにインストール
その際、
・isoイメージをCDに焼く必要があります。
・USBメモリのデータはインストール時に削除されます。
・インストール時にUSBメモリの場所を聞かれるので、
 あらかじめ把握しておく必要があります。
knoppixをCDから立ち上げた際に、rootで
# fdisk -l
とすると、デバイス一覧が見れるので、空き容量などから判断できると思います。
デフォルトは /dev/sda にインストールされます。

で、インストール完了。

メインで使用しているクライアントマシンからは起動できませんでした。
(マザーボード GIGABYTE GA-7VAXP-A)
マザーボードではUSBストレージからのブートをサポートしているようなのですが、
BIOSやUSBメモリの相性があるようですね。
ちょうどUSBストレージに関する過渡期のマザーだし。

libretto U100では、問題なく起動できました。
libletto起動時の画面でUSBメモリを選択すると正常に起動しました。
アキュポイントも普通に使えました。


上記ホームページを見てたら「KNOPPIX のUSB化」と言う記事がありました。

USB-KNOPPIX 256MをUSBメモリにインストールし、
CD版KNOPPIXのファイルをUSBメモリに上書きすると、
CD版KNOPPIXがUSBメモリから起動するようになるそうです。
ま、まじっすか!?

上記ページに、ファイルをコピーするスクリプトがあります。
KNOPPIX 4.0.2をインストールした所、こちらも正常に起動しました。
Knoppix
 
 
 
 
 
 
 
 
 
 
 
KNOPPIX 5.0は起動方法が違うので、無理そうだけど。

Linuxで無線LANを使うのに散々苦労したのに、KNOPPIX 4.0.2では自動認識されてました。(汗)

でも、いつもパスワードの掛かっていない他の人様んちのLANに繋がってしまうんです。(汗)
自分ちのLANに入る方法がどうしても判らず、こちらは断念しました。
画面から設定しようとすると、フリーズするんです。
KNOPPIXなんで固まった時は電源ブチッで問題なしですけど。

| | コメント (2) | トラックバック (2)

マイキャビをネットワークフォルダから使用する

WebサーバのBasic認証の設定記事でトラックバック先の記事で、
Mac OS X : Tiger で Nifty マイキャビをマウントというのがありました。

なに!?Macでマイキャビ使えるのですか!?
もう少し調べた所、マイキャビはやはりWebDABを使っているそうなんです。
ということは、XP以外のWindwsでも使えるよな!
と思い、試してみました。

Windows2000では、
マイネットワーク右クリックでネットワークドライブの作成ってのがありますので、それを選択。
ネットワークドライブの割り当て画面のリンクに、「WebフォルダまたはFTPサイトへのショートカットを作成する」というのがあるので、クリックします。
ネットワークプレースの場所に
http://cabdav.nifty.com/cabinet/
を入力して、「次へ」をクリック
ネットワークパスワードの入力画面で、
@Niftyのユーザー名とパスワードを入力

で、マイネットワークにネットワークフォルダが作成されます。

これで、WebDAVとして使えます。

なんですが、実は大きな落とし穴が!

普通はWebDAVには日本語用のモジュールを組み込んで、
日本語ファイル名やフォルダが文字化けしないようにするのですが、
このWebDAVにはそのようなモジュールが組み込んでありません。
つまり、日本語のファイル名やフォルダを作成してしまうと、
まともなアクセスはもちろんのこと、削除することもできなくなってしまいます。
新規フォルダ作成時に、うっかり「新規フォルダ」でフォルダをつくっちゃうと、
マイキャビが破壊されます。(汗)

@Niftyでは、そういう状態を監視しているようで、マイキャビにアクセスできない
状態になると、マイキャビを再生成するようなんですが、どっちにしろ
マイキャビ内のファイルは全部消えます。

う~ん、リスク高すぎ~。
これは別に@Niftyが悪いわけじゃなくて、WebDAVの仕様がそうだから仕方無いんですけどね。
WebDAVの仕様でShift-JISだけひいきにできませんからね。
UTF8だったら問題なく使えるのかな・・・。
そんなわけで、マイキャビでは泣く泣くWindowsXP専用のActivX仕様になってるんだろうね。

やっぱりマイキャビは使い勝手が悪い。
自宅WebサーバをWebDAV化させるべきなんだろうか・・・。

| | コメント (3) | トラックバック (0)

2006/07/09

WebサーバのBasic認証

私はココログを使用しているとおり、@niftyユーザーなのですが、@niftyにはマイキャビというインターネットストレージサービスがあります。
つまり、インターネット上にファイルを置いておき、好きな時にダウンロードできる、というものです。
でも、ネットワークフォルダーで使用できるのはWindowsXPのみで、他のPCでは同時に1つのファイルしか扱えず、いまいち使い勝手が良くないのです。
少なくとも、フォルダ構造を再現するようなものが欲しいと思ったので、Webサーバにフォルダをアップして、ファイルサーバの代わりにすることにしました。

その際に必要なのが、認証です。インターネットに公開しているサーバだしな。
そこで、Basic認証の設定をすることにしました。

Basic認証は、認証時に暗号化せずにパスワードを送ってしまうので、本格的に使うならSSLで暗号化する必要があります。
調べてみたところ、VineLinux2.6でデフォルトでインストールされるApacheでは、すでにSSLのモジュールが組み込まれていて、ブラウザからhttps://~と呼び出すだけでSSLで接続されることが判りました。

じゃあ後はBasic認証の設定だけです。
httpd.conf を書き換えます。

ファイルサーバの代わりに使うので、設定はユーザーごとのディレクトリを対象にします。
これまたデフォルトでmod_userdir.cが読み込まれるようになっていたので、特に設定はいりません。
UserDir "/home/*/public_html/"
になっているので、
http://ドメイン/~ユーザー名/
で、/home/ユーザー名/public_htmlディレクトリが見えるようになります。
ただし、デフォルトではユーザーのディレクトリはパーミッションがユーザー以外アクセスできないようになっているので、すべてのユーザーでアクセスできるようにする必要があります。

ユーザーごとの設定を .htaccess ファイルで設定しようと思ったので、以下を追加しました。
<Directory /home/*/public_html/>
    AllowOverride All
</Directory>

設定はこれだけなので、
# /etc/init.d/httpd configtest
で、httpd.confのチェック。
エラーが出なければ
# /etc/init.d/httpd graceful
で、Apacheを再起動します。

/etc/httpd に .htpasswdファイルを作成します。
# htpasswd -c /etc/httpd/.htpasswd 認証するユーザー名
New password:(パスワードを入力)
Re-type new password:(もう一度パスワードを入力)
Adding password for user 入力したユーザー名が表示される

htpasswd でファイルを作成する場合は、-cを付けます。
ファイルが既に作成されている時はいりません。
ここで入力したパスワードが、認証時のパスワードになります。
ファイル名、ファイルを作る場所はなんでもいいのですが、
Webサーバで公開している場所はダメです。
また、このパスワードファイルはWebサーバが読める必要があるので、これも注意です。

認証の必要なフォルダに .htaccess ファイルを作成します。
中身はこんな感じ。

AuthType Basic
AuthName "Private Area"
AuthUserFile /etc/httpd/.htpasswd
Require user 認証するユーザー名

AuthNameはなんでもいいのですが、日本語だとブラウザ(IE)で文字化けしました。(汗)
これで、.htaccess ファイルを置いたディレクトリ以降にアクセスする場合は認証画面が出るようになります。
.htaccessファイルにアクセスできてしまわないのかな?と思ったのですが、これもデフォルトでWebからは見えないようになっているみたいですね。
けっこうお手軽にできるので、ちょっとした認証画面を作るのに便利ですね。

で、ファイルサーバ化なんですが、
WebDAVではないのでアップロードが面倒なのはいいのですが、
ファイル名が日本語だとダウンロード時に文字化けしちゃいました。(T_T)
また、ディレクトリをダウンロードすることはできません。(そりゃそうだ。Webサーバなんだし。)
対象ディレクトリ以下を一括ダウンロードするツールを使えば、大丈夫かな。
実用には今一歩って所です。(汗)

| | コメント (2) | トラックバック (1)

« 2006年5月 | トップページ | 2006年8月 »