FreeBSD:FreeBSDのApache2.4でowncloudが動かない?

投稿者: | 2014年4月18日

新しく環境作ってやってみたけど、結局そういう結論になった。
具体的には何かが原因でWebdavのコマンドがブロックされるみたい。
この”何か”がわからないので困っている。
Webdavモジュールはそもそもロードしてないし。
一応公式フォーラムには対応例があったけど、どれも当てはまらなかった。

Apacheに記録されるログ

xxx.xxx.xxx.xxx - - [16/Apr/2014:08:47:56 +0900] "PROPFIND /owncloud/remote.php/webdav/ HTTP/1.1" 405 253

owncloudに記録されるログ

Warning	core	isWebDAVWorking: NO - Reason: Method not allowed (Sabre_DAV_Exception_MethodNotAllowed)	2014-04-15T23:47:56+00:00

Apache2.4なら全部ダメというわけではなく、たとえばUbuntuでリポジトリからインストールしたものに関しては大丈夫みたい。
今のところ問題があるのはFreeBSDのApache2.4で、Portsもパッケージも両方ダメだった。
ちょっと原因がわからないし思い浮かばないので仕方が無くnginxをフロントにおいて、
owncloudはphp-fpm経由で動かすことにした。

owncloudの公式にあるnginxの設定例はサブドメインのサイト全体に対する設定だったので
あるURLの下に配置するには不適だったのでいじくる。
サブドメイン用意するのはいいとしても、SSLのキーをもう一個用意しないといけないのは面倒だから・・・
というわけで大体↓こんな感じに

# 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;
        }
}

公式のには入ってないのが多々あるしもうちょっと洗練させれそうな気がしなくもないが、ひとまずこれで動いてる模様。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください