Last-modified: 2012-07-10 (火) 14:32:05 (4301d)

 Apache HTTP Serverに関しては、書籍や解説記事が数多くありますので、今更ここに書くようなこともほとんど無いんですけどね。

 

(2011/08/06)
 Apache HTTP Server 2.2.19 for Windows 32-bit を、自宅Server用にsetupしました。備忘のため、その際の留意点をまとめてみます。

WebDAV

1ヶで数GBのファイルを含むフォルダは、ApacheではWebDAV公開できない。【未解決】

 私の場合、VMwareのイメージファイルで18GBってのがあってNGでした。IIS 5.1のWebDAVでは問題ないのですが…。
 巨大なファイルがあるフォルダを避けるように、WebDAV公開するパスを考えましょう。

CIFSもWebDAV公開できる

 Windowsネットワーク共有で、例えば「\\192.168.176.3\e」だと

Alias /e "//192.168.176.3/e"
<Directory "//192.168.176.3/e">

と設定できます。(参考) <Directory>の代わりに

<Location /e>

も可。
 公開ルートパスとして、Windows共有配下のフォルダも指定できます。

Alias /f01 "//192.168.176.3/e/folder01"
<Directory "//192.168.176.3/e/folder01">

 ただし、Apacheプロセス(httpd.exe)実行アカウントが、そのCIFSに対して権限を持っている必要があります。通常、httpd.exeは、Windowsサービスとして、"Local System Account"で実行されていると思いますが、それを変更する必要があるってことです。
 Windows用Apacheでは、UserやPassディレクティブは使えないので、httpd.confでのアカウント指定はできないようですね。

ForceType text/plain を設定しちゃダメ

 WebDAVのGETメソッドで*.phpや*.plが実行されてしまい、ダウンロード・アップロードできなくなるのを防ぐために、

ForceType text/plain

を設定せよというWeb記事も散見します。が、これを設定すると、100MB超のPDFファイルが転送で破損したりしました。
 面倒でも、DAV有効ブロックに対して、mime type毎に丁寧に設定するのがよいでしょう・

AddType text/plain .php .pl ......

 いやいや、binary扱いすればいいんじゃないですかね?

Forcetype application/octet-stream

DavLockDBを設定しよう

 DavLockDBは、同じファイルを二人が操作できないようにするためのものらしいので、1行設定しておきましょう。

DavLockDB "logs/DavLock"

FrontPage Server Extension対策をしよう

 WindowsのWebFolderから使うと、

File does not exist: /home/httpd/html/_vti_inf.html

等の[error]ログが出てウザイ。

Header add MS-Author-Via "DAV"

と設定し、このエラーを回避しましょう。(参考)

全Methodに認証つけると、WindowsのWebFolderから接続できなくなる!?

 全てのHTTP Methodに認証をかけると、WindowsのWebFolderから使えなくなることがあるようです。他のWebDAVアプリでは問題ないのですけど…。

<LimitExcept OPTIONS>
  Require valid-user
</LimitExcept>

として、OPTIONSから認証を外すと不具合が解消しました。詳細は不明。

Digest認証対応が不十分なClientも居るかも!?

 iPadアプリ「i文庫HD」のWebDAVフォルダから利用すると、時々、

Digest: client used wrong authentication scheme `Basic':

なんて[error]ログが出ます。ApacheのDigest認証と折り合いが悪いのかしら? でも、iPadの使用には全く問題なく、ログを見なければ気づきません。

mod_encodingはもう要らない

 NTFS・CIFS上の日本語ファイル名・フォルダ名も、今や文字化けしません。Charset等の設定も、defaultのままでOKです。
 2.2.3ではダメだったとのことなので、それ以降のどこかで国際化対応が強化されたか…。

SSL

(今や常識ですが)Port:80用のVirtualHost設定は不要

<VirtualHost _default_:443>

を追加したからといって、

<VirtualHost *:80>

をわざわざ設定しなくても、Port:80は活きたままです。

ユーザーのOSにルート証明がInstallされていないサーバー証明書の場合

 「そのサーバー証明書を信頼しろ」と指示が必要になるでしょう。特にSSL参照するアプリ等に影響が。
 私も、Redmineから参照するsubversion repositoryのURLをhttpsに変える際に、redmine/lib/redmine/scm/adapters/subversion_adapter.rb:229の

str << " --no-auth-cache --non-interactive"

str << " --no-auth-cache --non-interactive --trust-server-cert"

に変えました。

Subversion

URLパス末尾には'/'をつけろ

<Location /svn>

ではなく、

<Location /svn/>

でないと、リポジトリ一覧が表示されませんでした。なので、

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_URI} ^/svn$
   RewriteRule ^(/svn)$ /svn/ [R=301,L]
</IfModule>

として、末尾の'/'を強制しています。

httpsを使え

 http(port:80)でのSubversion利用だと、職場等のWeb-Proxyによっては"Bad Gateway"を返すことがあります。https(port:443)だと問題なさそうです。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS