Apache のバックアップ(No.2) |
|
Apache HTTP Serverに関しては、書籍や解説記事が数多くありますので、今更ここに書くようなこともほとんど無いんですけどね。
(2011/08/06)
Apache HTTP Server 2.2.19 for Windows 32-bit を、自宅Server用にsetupしました。備忘のため、その際の留意点をまとめてみます。
私の場合、VMwareのイメージファイルで18GBってのがあってNGでした。IIS 5.1のWebDAVでは問題ないのですが…。
巨大なファイルがあるフォルダを避けるように、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でのアカウント指定はできないようですね。
WebDAVのGETメソッドで*.phpや*.plが実行されてしまい、ダウンロード・アップロードできなくなるのを防ぐために、
ForceType text/plain
を設定せよというWeb記事も散見します。が、これを設定すると、100MB超のPDFファイルが転送で破損したりしました。
面倒でも、DAV有効ブロックに対して、mime type毎に丁寧に設定するのがよいでしょう・
AddType text/plain .php AddType text/plain .pl
DavLockDBは、同じファイルを二人が操作できないようにするためのものらしいので、1行設定しておきましょう。
DavLockDB "logs/DavLock"
WindowsのWebFolderから使うと、
File does not exist: /home/httpd/html/_vti_inf.html
等の[error]ログが出てウザイ。
Header add MS-Author-Via "DAV"
と設定し、このエラーを回避しましょう。(参考)
全てのHTTP Methodに認証をかけると、WindowsのWebFolderから使えなくなることがあるようです。他のWebDAVアプリでは問題ないのですけど…。
<LimitExcept OPTIONS> Require valid-user </LimitExcept>
として、OPTIONSから認証を外すと不具合が解消しました。詳細は不明。
iPadアプリ「i文庫HD」のWebDAVフォルダから利用すると、時々、
Digest: client used wrong authentication scheme `Basic':
なんて[error]ログが出ます。ApacheのDigest認証と折り合いが悪いのかしら? でも、iPadの使用には全く問題なく、ログを見なければ気づきません。
NTFS・CIFS上の日本語ファイル名・フォルダ名も、今や文字化けしません。Charset等の設定も、defaultのままでOKです。
2.2.3ではダメだったとのことなので、それ以降のどこかで国際化対応が強化されたか…。
<VirtualHost _default_:443>
を追加したからといって、
<VirtualHost *:80>
をわざわざ設定しなくても、Port:80は活きたままです。
「そのサーバー証明書を信頼しろ」と指示が必要になるでしょう。特に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"
に変えました。
<Location /svn>
ではなく、
<Location /svn/>
でないと、リポジトリ一覧が表示されませんでした。なので、
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} ^/svn$ RewriteRule ^(/svn)$ /svn/ [R=301,L] </IfModule>
として、末尾の'/'を強制しています。
http(port:80)でのSubversion利用だと、職場等のWeb-Proxyによっては"Bad Gateway"を返すことがあります。https(port:443)だと問題なさそうです。