Apache HTTP Serverに関しては、書籍や解説記事が数多くありますので、今更ここに書くようなこともほとんど無いんですけどね。
#ls2
#br
(2011/08/06)
Apache HTTP Server 2.2.19 for Windows 32-bit を、自宅Server用にsetupしました。備忘のため、その際の留意点をまとめてみます。
* WebDAV [#n4418f07]
*** 1ヶで数GBのファイルを含むフォルダは、ApacheではWebDAV公開できない。''【未解決】'' [#iad23e8a]
私の場合、VMwareのイメージファイルで18GBってのがあってNGでした。IIS 5.1のWebDAVでは問題ないのですが…。
巨大なファイルがあるフォルダを避けるように、WebDAV公開するパスを考えましょう。
*** CIFSもWebDAV公開できる [#beaca5c7]
Windowsネットワーク共有で、例えば「\\192.168.176.3\e」だと
Alias /e "//192.168.176.3/e"
<Directory "//192.168.176.3/e">
と設定できます。([[参考:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20258&forum=6]]) <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 を設定しちゃダメ [#pb4a6a10]
WebDAVのGETメソッドで*.phpや*.plが実行されてしまい、ダウンロード・アップロードできなくなるのを防ぐために、
ForceType text/plain
を設定せよというWeb記事も散見します。が、これを設定すると、100MB超のPDFファイルが転送で破損したりしました。
面倒でも、DAV有効ブロックに対して、mime type毎に丁寧に設定するのがよいでしょう・
AddType text/plain .php
AddType text/plain .pl
AddType text/plain .php .pl ......
いやいや、binary扱いすればいいんじゃないですかね?
Forcetype application/octet-stream
*** DavLockDBを設定しよう [#vf2994d7]
DavLockDBは、[[同じファイルを二人が操作できないようにするため:http://www.aconus.com/~oyaji/www/apache_win_dav.htm]]のものらしいので、1行設定しておきましょう。
DavLockDB "logs/DavLock"
*** FrontPage Server Extension対策をしよう [#n3726c47]
WindowsのWebFolderから使うと、
File does not exist: /home/httpd/html/_vti_inf.html
等の[error]ログが出てウザイ。
Header add MS-Author-Via "DAV"
と設定し、このエラーを回避しましょう。([[参考:http://www.geocities.co.jp/Hollywood-Miyuki/8444/webdav/webdav.html]])
*** 全Methodに認証つけると、WindowsのWebFolderから接続できなくなる!? [#g4d945bc]
全てのHTTP Methodに認証をかけると、WindowsのWebFolderから使えなくなることがあるようです。他のWebDAVアプリでは問題ないのですけど…。
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
として、OPTIONSから認証を外すと不具合が解消しました。詳細は不明。
*** Digest認証対応が不十分なClientも居るかも!? [#e3253625]
iPadアプリ[[「i文庫HD」のWebDAVフォルダ:http://nagisaworks.com/ibunkohd/manual/folder_webdav.html]]から利用すると、時々、
Digest: client used wrong authentication scheme `Basic':
なんて[error]ログが出ます。ApacheのDigest認証と折り合いが悪いのかしら? でも、iPadの使用には全く問題なく、ログを見なければ気づきません。
*** mod_encodingはもう要らない [#a0e5c3f4]
NTFS・CIFS上の日本語ファイル名・フォルダ名も、今や文字化けしません。Charset等の設定も、defaultのままでOKです。
[[2.2.3ではダメだった:http://blog.goo.ne.jp/rezoochi/e/c375491a232f0314b5a6b7c5411f84d1]]とのことなので、それ以降のどこかで国際化対応が強化されたか…。
* SSL [#d27f3e02]
*** (今や常識ですが)Port:80用のVirtualHost設定は不要 [#r9e936cf]
<VirtualHost _default_:443>
を追加したからといって、
<VirtualHost *:80>
をわざわざ設定しなくても、Port:80は活きたままです。
*** ユーザーのOSにルート証明がInstallされていないサーバー証明書の場合 [#kdbc7834]
「そのサーバー証明書を信頼しろ」と指示が必要になるでしょう。特に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 [#hdb06970]
*** URLパス末尾には'/'をつけろ [#f7544156]
<Location /svn>
ではなく、
<Location /svn/>
でないと、リポジトリ一覧が表示されませんでした。なので、
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/svn$
RewriteRule ^(/svn)$ /svn/ [R=301,L]
</IfModule>
として、末尾の'/'を強制しています。
*** httpsを使え [#cd822292]
http(port:80)でのSubversion利用だと、職場等のWeb-Proxyによっては"Bad Gateway"を返すことがあります。https(port:443)だと問題なさそうです。