blog:ngx_pagespeedはやっぱダメだった

仕組み的に早くなってバンザーイだと思ったngx_pagespeedですが
結局NGINXのCache使った方が死ぬほど早かったという罠

ngx_pagespeed on;

# ab -n 1000 -c 100 http://www.nekolove.jp/wp/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.nekolove.jp (be patient)
 Completed 100 requests
 Completed 200 requests
 Completed 300 requests
 Completed 400 requests
 Completed 500 requests
 Completed 600 requests
 Completed 700 requests
 Completed 800 requests
 Completed 900 requests
 Completed 1000 requests
 Finished 1000 requests
Server Software: nginx
 Server Hostname: www.nekolove.jp
 Server Port: 80
Document Path: /wp/
 Document Length: 28383 bytes
Concurrency Level: 100
 Time taken for tests: 18.597 seconds
 Complete requests: 1000
 Failed requests: 2
 (Connect: 0, Receive: 0, Length: 2, Exceptions: 0)
 Total transferred: 28766106 bytes
 HTML transferred: 28383106 bytes
 Requests per second: 53.77 [#/sec] (mean)
 Time per request: 1859.710 [ms] (mean)
 Time per request: 18.597 [ms] (mean, across all concurrent requests)
 Transfer rate: 1510.55 [Kbytes/sec] received
Connection Times (ms)
 min mean[+/-sd] median max
 Connect: 14 28 98.4 17 1603
 Processing: 84 1762 1080.2 1406 4675
 Waiting: 68 1725 1072.0 1376 4646
 Total: 98 1790 1095.5 1428 5885
Percentage of the requests served within a certain time (ms)
 50% 1428
 66% 2482
 75% 2979
 80% 3027
 90% 3181
 95% 3363
 98% 3582
 99% 3617
 100% 5885 (longest request)
 #

ngx_pagespeed off;

# ab -n 1000 -c 100 http://www.nekolove.jp/wp/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.nekolove.jp (be patient)
 Completed 100 requests
 Completed 200 requests
 Completed 300 requests
 Completed 400 requests
 Completed 500 requests
 Completed 600 requests
 Completed 700 requests
 Completed 800 requests
 Completed 900 requests
 Completed 1000 requests
 Finished 1000 requests
Server Software: nginx
 Server Hostname: www.nekolove.jp
 Server Port: 80
Document Path: /wp/
 Document Length: 88049 bytes
Concurrency Level: 100
 Time taken for tests: 8.838 seconds
 Complete requests: 1000
 Failed requests: 0
 Total transferred: 88367000 bytes
 HTML transferred: 88049000 bytes
 Requests per second: 113.15 [#/sec] (mean)
 Time per request: 883.754 [ms] (mean)
 Time per request: 8.838 [ms] (mean, across all concurrent requests)
 Transfer rate: 9764.69 [Kbytes/sec] received
Connection Times (ms)
 min mean[+/-sd] median max
 Connect: 16 60 264.5 24 3047
 Processing: 100 716 543.9 559 3994
 Waiting: 15 58 97.9 25 1663
 Total: 117 776 612.7 595 4952
Percentage of the requests served within a certain time (ms)
 50% 595
 66% 817
 75% 994
 80% 1110
 90% 1491
 95% 1932
 98% 2560
 99% 3298
 100% 4952 (longest request)
 #

これアカンやつや・・・っていうか処理能力が全般で倍違うとわ
もし使い続けるなら使用するフィルターを調整しないとダメだわね
NGINXのキャッシュのあるなしは関係なくてngx_pagespeedが動いてると性能が低下する模様
どこかにボトルネックがあるのか、合わないのか・・・

nginx:ngx_pagespeedを追加してビルドする(Ubuntu)

nginxのstableバージョンが1.6になったためリポジトリがアップデートされた
そのためバージョンが低いppaの野良ビルドが上書きされてしまい、
pagespeedが無効になってしまったので面倒ながら自分でビルドすることにした
通常のビルド手順だとパッケージ管理から外れてしまい、メンテナンスが厄介になるので
debianパッケージを作成することに。

まずは準備
ppaからパッケージをダウンロード出来るようにする
追加するppaはnginx公式によるリポジトリ(Ubuntu公式とは別)

sudo aptitude install python-software-properties
sudo add-apt-repository ppa:nginx/stable

ビルドに必要なパッケージを揃える
最新バージョンについての情報は以下より

https://github.com/pagespeed/ngx_pagespeed

sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

ソースをもってくる、場所はとりあえずホームディレクトリ

mkdir ~/nginxsrc
cd ~/nginxsrc
sudo apt-get source nginx-full

モジュールをソースの中に配置する

cd nginx-1.6.0/debian/modules
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.4-beta.zip
unzip v1.7.30.4-beta.zip
cd ngx_pagespeed-1.7.30.4-beta/
wget https://dl.google.com/dl/page-speed/psol/1.7.30.4.tar.gz
tar -xzvf 1.7.30.4.tar.gz

configureにngx_pagespeedのオプションを追加する
common,light,full,extrasなどに分かれているので利用するパッケージの部分に記述する

cd ~/nginxsrc/nginx-1.6.0
vi debian/rules

extrasに追加する場合の例(最後の行が該当):

extras_configure_flags := \
 $(common_configure_flags) \
 --with-http_addition_module \
 --with-http_dav_module \
 --with-http_flv_module \
 --with-http_geoip_module \
 --with-http_gzip_static_module \
 --with-http_image_filter_module \
 --with-http_mp4_module \
 --with-http_perl_module \
 --with-http_random_index_module \
 --with-http_secure_link_module \
 --with-http_spdy_module \
 --with-http_sub_module \
 --with-http_xslt_module \
 --with-mail \
 --with-mail_ssl_module \
 --add-module=$(MODULESDIR)/headers-more-nginx-module \
 --add-module=$(MODULESDIR)/nginx-auth-pam \
 --add-module=$(MODULESDIR)/nginx-cache-purge \
 --add-module=$(MODULESDIR)/nginx-dav-ext-module \
 --add-module=$(MODULESDIR)/nginx-development-kit \
 --add-module=$(MODULESDIR)/nginx-echo \
 --add-module=$(MODULESDIR)/ngx-fancyindex \
 --add-module=$(MODULESDIR)/nginx-http-push \
 --add-module=$(MODULESDIR)/nginx-lua \
 --add-module=$(MODULESDIR)/nginx-upload-progress \
 --add-module=$(MODULESDIR)/nginx-upstream-fair \
 --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
 --add-module=$(MODULESDIR)/ngx_pagespeed-1.7.30.4-beta

おまじないを一言放ってビルドを行う

sudo apt-get build-dep nginx
sudo dpkg-buildpackage -b

エラーなどが無ければ最初に作成したディレクトリ以下にパッケージが作成されているはず

cd ~/nginxsrc/
% ls
nginx-1.6.0 nginx-full_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0.debian.tar.gz
nginx-common_1.6.0-1+trusty0_all.deb nginx-light-dbg_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0.dsc
nginx-doc_1.6.0-1+trusty0_all.deb nginx-light_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0_all.deb
nginx-extras-dbg_1.6.0-1+trusty0_amd64.deb nginx-naxsi-dbg_1.6.0-1+trusty0_amd64.deb nginx_1.6.0-1+trusty0_amd64.changes
nginx-extras_1.6.0-1+trusty0_amd64.deb nginx-naxsi-ui_1.6.0-1+trusty0_all.deb nginx_1.6.0.orig.tar.gz
nginx-full-dbg_1.6.0-1+trusty0_amd64.deb nginx-naxsi_1.6.0-1+trusty0_amd64.deb

インストール

sudo dpkg --install nginx-common_1.6.0-1+trusty0_all.deb nginx-extras_1.6.0-1+trusty0_amd64.deb

確認は-Vオプションで
最後にngx_pagespeedが追加されているはず。公式バージョンには無い。
(逆に言うと差分はそれぐらい)

% nginx -V
nginx version: nginx/1.6.0
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' 
--with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' 
--prefix=/usr/share/nginx 
--conf-path=/etc/nginx/nginx.conf 
--http-log-path=/var/log/nginx/access.log 
--error-log-path=/var/log/nginx/error.log 
--lock-path=/var/lock/nginx.lock 
--pid-path=/run/nginx.pid 
--http-client-body-temp-path=/var/lib/nginx/body 
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
--http-proxy-temp-path=/var/lib/nginx/proxy 
--http-scgi-temp-path=/var/lib/nginx/scgi 
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi 
--with-debug 
--with-pcre-jit 
--with-ipv6 
--with-http_ssl_module 
--with-http_stub_status_module 
--with-http_realip_module 
--with-http_auth_request_module 
--with-http_addition_module 
--with-http_dav_module 
--with-http_flv_module 
--with-http_geoip_module 
--with-http_gzip_static_module 
--with-http_image_filter_module 
--with-http_mp4_module 
--with-http_perl_module 
--with-http_random_index_module 
--with-http_secure_link_module 
--with-http_spdy_module 
--with-http_sub_module 
--with-http_xslt_module 
--with-mail 
--with-mail_ssl_module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/headers-more-nginx-module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-auth-pam 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-cache-purge 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-dav-ext-module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-development-kit 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-echo 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx-fancyindex 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-http-push 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-lua 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-upload-progress 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/nginx-upstream-fair 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx_http_substitutions_filter_module 
--add-module=/home/nekolove/nginxsrc/nginx-1.6.0/debian/modules/ngx_pagespeed-1.7.30.4-beta

FreeBSD:UFS2の不整合でKernelPanic

あんまり見たこと無いけど原因考えるとなるほどと思った。
原因はおそらくRAID Arrayが離脱したとき。
その後Arrayは復旧出来た。

mode = 0100744, inum = 12118762, fs = /data
panic: ffs_valloc: dup alloc
cpuid = 1
KDB: stack backtrace:
#0 0xffffffff808e7e70 at kdb_backtrace+0x60
#1 0xffffffff808af955 at panic+0x155
#2 0xffffffff80ac1a0a at ffs_valloc+0x86a
#3 0xffffffff80afecb4 at ufs_makeinode+0x84
#4 0xffffffff80d97dd2 at VOP_CREATE_APV+0x92
#5 0xffffffff80957f49 at vn_open_cred+0x2c9
#6 0xffffffff80951651 at kern_openat+0x261
#7 0xffffffff80c8f027 at amd64_syscall+0x357
#8 0xffffffff80c7571b at Xfast_syscall+0xfb
Uptime: 1m17s
Dumping 381 out of 6119 MB:..5%..13%..21%..34%..42%..51%..63%..72%..84%..93%
Dump complete
Automatic reboot in 15 seconds - press a key on the console to abort
Rebooting...

ファイルシステムで重複したものがあるっぽい?
どうやら不整合があるらしく、該当のファイルにアクセスするとPanicする模様
UFS2なのでfsckで・・・と思ったら実行しても解決せず、何故だ。

# tunefs -p /dev/da1p1
tunefs: POSIX.1e ACLs: (-a)                                enabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             5%
tunefs: space to hold for metadata blocks: (-k)            6408
tunefs: optimization preference: (-o)                      time
tunefs: should optimize for space with minfree < 8%
tunefs: volume label: (-L)

# fsck -y /dev/da1p1

** /dev/da1p1

USE JOURNAL? yes

** SU+J Recovering /dev/da1p1
Journal timestamp does not match fs mount time
** Skipping journal, falling through to full fsck

** Last Mounted on /data
** Phase 1 - Check Blocks and Sizes
24275080 DUP I=12118750
UNEXPECTED SOFT UPDATE INCONSISTENCY

~略~

ぐぐってみたらジャーナルとファイルシステムの間に重複したものがあるらしい
一時的にsoft updatesを無効にしてfsck走らせれば解決するそうな

# tunefs -n disable /dev/da1p1
tunefs: soft updates cleared
 
# fsck -y /dev/da1p1          

** /dev/da1p1

USE JOURNAL? yes

** SU+J Recovering /dev/da1p1
Journal timestamp does not match fs mount time
** Skipping journal, falling through to full fsck

** Last Mounted on /data
** Phase 1 - Check Blocks and Sizes
24275080 DUP I=12118750
24275081 DUP I=12118750

~略~

904133 files, 2047901555 used, 789805708 free (1650660 frags, 98519381 blocks, 0.1% fragmentation)

***** FILE SYSTEM MARKED CLEAN *****

***** FILE SYSTEM WAS MODIFIED *****

無効にしたsoft updatesを戻す。

# tunefs -n enable /dev/da1p1
tunefs: soft updates set

念のため再マウントする前にfsckしてエラーが出ないことを確認
full fsckなので結構時間がかかる

マウントしなおして再利用開始
一応問題は解決した模様

新NAS鯖のRAID関係の調子がいまいちなので困る
RAIDカードかバックプレーンもしくはSASのケーブルのどれかに原因があるんじゃないかとにらんでるのだが・・・

FreeBSD:Proftpdで日本語ファイル名が使えない問題を解決

最近新しいNAS兼なんでもBOXとしてFreeBSDベースで構築しているのだけど
Proftpdで日本語のファイル名(ディレクトリ含む)が使えなくなっていて??となったのでメモ

コンフィグファイルは前使ってたのをそのまま持ってきただけだったのでなんで動作が違うのか。
旧NASから該当ファイルをrsyncで移動したので、オプションに問題でもあったかと思ったけど
そもそもftpクライアントからディレクトリを作成しても?????という文字列になってしまう。

結局ProftpdのBuildオプションにあるNSL(National Language Support)が問題源だった。
デフォルトでCheckが付いているのでそのままスルーしたのだけど
まさかトラブルの原因になるとは。。。

Portsからmake configでチェックを外してビルドし直したらなんとかなった。
Apache24といいFreeBSD10のパッケージはどーも癖がある。。。

blog:UbuntuのNginxでPagespeedを使う

Pagespeedは比較的昔からあるWebサイトの最適化手法の一つです。Googleさんが提供しています。
本来はWebサイトの設計やコードそのものを見直して転送量を含めたロードタイムを削減したりするのですが
すでに運用中のサイト全体に行うのはちょっと無理があります。
そこで必要な部分をサーバーサイドで自動的に行ってくれるモジュールを導入することで
Webサイトへの変更なしで効果を得ることが出来ます。
メリットは大きいですが、場合によってはデメリットが生じることがあるようなので
導入の判断は慎重にした方がよいかもしれません。
うちは遊びで運用してるので見切り発車で入れてみました^q^

PageSpeed Module – Make the Web Faster — Google Developers
https://developers.google.com/speed/pagespeed/module?hl=ja

Apacheはモジュールの形になるので導入が比較的容易なのですが、
Nginxはソースからビルドし直さないと行けないので結構面倒です。
バージョン管理も大変になるので、UbuntuのPPA(Personal Package Archives for Ubuntu)
を探してみたら良さそうなのを見つけました。

↓ここから
https://launchpad.net/ubuntu/+ppas?name_filter=nginx

↓これを使ってみた。
https://launchpad.net/~sandyd/+archive/nginx-current-pagespeed

いわゆる野良ビルドなので信頼性という点では??ですが、
面倒なことは楽したい方にはお薦めです^q^

add-apt-repositoryを使うのでまだ未導入の場合は

apt-get install python-software-properties

とする

# add-apt-repository ppa:sandyd/nginx-current-pagespeed
 This PPA contains the latest version of Nginx built with the Pagespeed modulet.

Original package backported from Debian and pagespeed support added

IMPORTANT NOTE:
On Trusty, and possibly future releases, add the following to /etc/apt/preferences.d/nginx-current-pagespeed

Package: *
Pin: release o=LP-PPA-sandyd-nginx-current-pagespeed
Pin-Priority: 600

From trusty onwards, Ubuntu will be synced with debian unstable (See ProposedMigration https://wiki.ubuntu.com/ProposedMigration), which will require the fix above to continue using the PPA.
 More info: https://launchpad.net/~sandyd/+archive/nginx-current-pagespeed
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmppit1oi9v/secring.gpg' created
gpg: keyring `/tmp/tmppit1oi9v/pubring.gpg' created
gpg: requesting key F2F46C93 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmppit1oi9v/trustdb.gpg: trustdb created
gpg: key F2F46C93: public key "Launchpad ~dolphinaura" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

2014-04-24現在でtrustyの1.4.7がパッケージにリストされているので
14.04LTSでも問題ありません。

# nginx -V
nginx version: nginx/1.4.7
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.4.7/debian/modules/headers-more-nginx-module --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-cache-purge --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-dav-ext-module --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-development-kit --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.4.7/debian/modules/ngx-fancyindex --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-http-push --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-lua --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-upload-progress --add-module=/build/buildd/nginx-1.4.7/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.4.7/debian/modules/ngx_pagespeed --add-module=/build/buildd/nginx-1.4.7/debian/modules/ngx_http_substitutions_filter_module

設定はここからもってきた
バーチャルホストごとに設定したい場合は下の方に設定例がありますね

PageSpeed Configuration – PageSpeed Module — Google Developers
https://developers.google.com/speed/pagespeed/module/configuration

pagespeed on;

# Needs to exist and be writable by nginx.
pagespeed FileCachePath /var/cache/ngx_pagespeed_cache;

# Ensure requests for pagespeed optimized resources go to the pagespeed handler
# and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
  add_header "" "";
}

動作確認

# curl -I http://localhost/wp/
HTTP/1.1 200 OK
Server: nginx/1.4.7
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.5.9-1ubuntu4
X-Pingback: http://www.nekolove.jp/wp/xmlrpc.php
Date: Thu, 24 Apr 2014 01:52:34 GMT
X-Page-Speed: 1.7.30.4-3847
Cache-Control: max-age=0, no-cache

X-Page-Speedが出ていればOK
うちの場合は劇的に変わるものではないっぽいですなー

blog:SSL化ではまったこと。

StartSSLでSSL証明書を作ったこともあって、
サイトの管理画面をSSLにしようと思って設定したところ。見事に挫折しかけたorz

というのも、商品紹介に使ってるWordpressのプラグインでAmazon JS
コンフィグ書き出すときに使ってるWP SyntaxHighlighterが動作しなくなる。
結構便利に使ってるので動かなくなってしまうのは相当痛い。

いろいろ試した結果、
Nginxの設定かと思ったが、Apacheでも同じだったので、
結局プラグインのURLに問題があったもよう。
管理画面をhttpsにリダイレクトするのをやめると動き出すので、
要するにhttpsのサイト内からhttpのサイトを呼び出してるのがダメらしい。そらそうですわね。
かといってhttpsを捨てるのも惜しい。
メンテナンスを考慮すると、あんまりプラグインに変更を加えたくないのだけど
AmazonJSは編集からamazonjs/amazonjs.phpにあるすべてのURLをhttpからhttpsに置換することで解決。
WP SyntaxHighlighterの方はWordpressからアドレスを持ってきてるようだったので
「設定」→「一般設定」から「WordPress アドレス (URL)」をhttpsに変更したら解決。
サイトアドレスはhttpのままにしとります。

自分用の備忘録みたいなもんですが・・・。

マウス:Razer Naga 2014 for 新生FF14

実は買ったのはもう半年ぐらい前の話だったりする。

そんなわけでRazer Naga 2014です。

_DSC9071

Read more »

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

新しく環境作ってやってみたけど、結局そういう結論になった。
具体的には何かが原因で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;
        }
}

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

鯖関係:StartSSLで無料のSSL証明書を取得してみた

手順などはよそ様のサイトに結構あるので割愛

ちょっと試してみたかったのでSSL証明書を発行してもらった。
タイトルの通りStartSSLは無料でClass1のSSL証明書を発行してくれる。
商取引など信頼性を求められるものには使えないが、ドメインの所有者であることは証明出来る。
手続きを誤ったためwww.nekolove.jp用に作成した証明書は現在失効手続き中(´・ω・`)ショボーン
サブドメインの追加が出来ないと思って新しく秘密鍵とのペアを作ってしまった。
実用上は問題無いはずだが、気持ち悪いので一端失効させることに。
最近のブラウザだとルートCAに運営元のStartComが含まれるのでエラーページが出なくなってよい。
Webサイトを訪れるほとんどの人にはまったく関係無いけど、
おいら個人が管理用に使ってる部分をSSLに投げてますからな。
あとメールをSSLにしてて、Outlookが毎回証明書の確認を投げてくるのがうざかったので
解決すればよいな(´ω`)

blog:Apache2からNginxに載せ替えた

だいーぶ放置してたけど、ゲームも一段落したので
久しぶりに弄ってみようと思ってまずhttpをしゃべるサーバーを入れ替えてみた(´ω`)
Apache2+php_modからNginx+php5-fpmにしました。
サンプルのコンフィグ使いながら仮想環境で試してたんだけど、うまくいかなくて(´・ω・`)ショボーン
ロケーションのマッチングルールを理解するのに手間取った・・・
うちみたいにURLの最後を.phpにしてるとWordpressのサンプルコンフィグだと問題がある
どうやら空のURLリクエストがphp-fpmに飛んでいくっぽい感じだったので、飛ばないように設定

大体こんな感じになった

        location /wp/ {
                index index.php;
                if (-f $request_filename) {
                        expires 30d;
                        break;
                }
                if (!-e $request_filename) {
                        rewrite ^.+?(/wp-.*) $1 last;
                        rewrite ^.+?(/wp/.*\.php)$ $1 last;
                        rewrite ^ /wp/index.php last;
                }
        }
        location ~ ^(?:(?!(?:/archives/)).)*\.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

MovableTypeから乗り換えた人なんかはパーマリンクがうちみたいになってるところ多そう
Nginxだと普通に罠みたいなURLになるんで困るわけだが( ̄∇ ̄;)

とりあえずフロントがNginxでWordpressはphp5-fpmに乗っているけど、実はまだapache2で動いてるところがあります
表に出してないWebアプリケーションをまだapache2に任せてるゆえですが
NginxがDigest認証に対応してくれたら移植しよう