新しく環境作ってやってみたけど、結局そういう結論になった。
具体的には何かが原因でWebdavのコマンドがブロックされるみたい。
この”何か”がわからないので困っている。
Webdavモジュールはそもそもロードしてないし。
一応公式フォーラムには対応例があったけど、どれも当てはまらなかった。
Apacheに記録されるログ
[plain]xxx.xxx.xxx.xxx – – [16/Apr/2014:08:47:56 +0900] "PROPFIND /owncloud/remote.php/webdav/ HTTP/1.1" 405 253[/plain]
owncloudに記録されるログ
[plain]Warning core isWebDAVWorking: NO – Reason: Method not allowed (Sabre_DAV_Exception_MethodNotAllowed) 2014-04-15T23:47:56+00:00[/plain]
Apache2.4なら全部ダメというわけではなく、たとえばUbuntuでリポジトリからインストールしたものに関しては大丈夫みたい。
今のところ問題があるのはFreeBSDのApache2.4で、Portsもパッケージも両方ダメだった。
ちょっと原因がわからないし思い浮かばないので仕方が無くnginxをフロントにおいて、
owncloudはphp-fpm経由で動かすことにした。
owncloudの公式にあるnginxの設定例はサブドメインのサイト全体に対する設定だったので
あるURLの下に配置するには不適だったのでいじくる。
サブドメイン用意するのはいいとしても、SSLのキーをもう一個用意しないといけないのは面倒だから・・・
というわけで大体↓こんな感じに
[plain]# owncloud
location ^~ /owncloud {
root /usr/local/www;
index index.php;
try_files $uri $uri/ /index.php?$args;
location ~ ^/owncloud/(?:\.|data|config|db_structure\.xml|README) {
deny all;
}
rewrite ^/owncloud/apps/([^/]+)/(.+\.(css|php))$ /owncloud/index.php?app=$1&getfile=$2 last;
rewrite ^/owncloud/remote/(.*)$ /owncloud/remote.php/$1 last;
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param PATH_INFO $2;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
location ~* \.(?:jpg|gif|ico|png|css|js|svg)$ {
expires max; add_header Cache-Control public;
}
}[/plain]
公式のには入ってないのが多々あるしもうちょっと洗練させれそうな気がしなくもないが、ひとまずこれで動いてる模様。