DS216jで405 not allowedエラーを回避

某サイトの記事で妙に推されているSynologyのNAS、DS216jをAmazonの春のSALEパワーに負けて買ってしまいました。ここ最近はCeleronJ1800を積んだマザーのマシンでNAS兼Webサーバを運用していて特に問題はありませんでした。しかし諸事情によりRAIDが組めないのがちょっと不安ということもあり、NASとしてはもちろんWebサーバにもなってwordpressも動かせる、他にもなんか色々やたらと多機能でアプリ追加でDTCP-IPにも対応予定の神がかったDS216jを買うしかないっ!という考えにいたった訳です。性能自体はJ1800のほうが上だと思いますが、物欲に負けました。(^^;

で、さっさと移行するぜ~と作業していたんですが、元のサーバからエクスポートしたwordpressのデータをphpMyAdminでインポートしようとすると、バーンと 405 not allowed バーイnginx とエラーが表示されてうまくいかないわけです。それだけじゃ何がなんだか分からんだろとw
とりあえずsshを有効にして、/var/log/nginx/error.log をみると upstream timed out というエラーが出ていました。あっ(察し)ということで能書きはこの辺にして以下に回避方法を紹介します。

$ sudo -i
Password: (管理者のパスワードを入力)
# cd /var/packages/phpMyAdmin/target/synology_added
# cp -p www.phpMyAdmin.enable.conf www.phpMyAdmin.enable.conf.org
# vi www.phpMyAdmin.enable.conf
(省略)
location ~ ^/phpMyAdmin/(.*)\.php$ {
    root /var/services/web/;
    include fastcgi.conf;
    fastcgi_pass unix:/run/php-fpm/php56-fpm.sock;
    fastcgi_read_timeout 600; ←追記
}
(省略)

タイムアウトの設定値の単位は秒です。自分がインポートするデータ量に応じて適宜決めましょう。
設定の変更後、パッケージセンターからphpMyAdminを停止、実行することで設定が有効になります。
ちなみにwordpressのアップデートのときにも 405 not allowed エラーが出たりしますが、上記と同様の方法で対処できそうな気がします。

というわけで現在はホームページのデータを移し終わり、このブログをDS216jで表示させています。 (´へωへ`*)

ffmpegで任意のサイズ・ビットレートのmp4に一括変換

ffmpegで手持ちの動画を任意のサイズ・ビットレートに一括変換するスクリプトを書いてみました。自分用なのでエラー処理は適当。私はスマホ用の低ビットレート動画をこのスクリプトを使って作成しています。もしもこのスクリプトを使う場合は、下記動作概要を理解した上でご利用ください。
重要な点は、一度エンコードした(された)ファイルはエンコード対象としないので、同じディレクトリに対して複数回スクリプトを実行しても安心ということです。

動作概要
・エンコード対象は、target_directory配下のtarget_dir_depthで指定した階層までにあり、mp4/avi/mpg拡張子のファイルでかつファイル名の先頭にencoded_と付いてないファイル

・v_bitrateの数値はビデオのビットレート、a_bitrateはオーディオのビットレートであり、動画の総ビットレートはv_bitrate + a_bitrateとなる

・オーディオはaac→aacであっても再エンコードされ劣化する(コピーを実装するのが面倒くさい)

・エンコードされたファイルのファイル名は、encoded_オリジナルのファイル名_enc_size.mp4で、output_dir配下のenc_sizeディレクトリに出力される

・エンコードが成功したオリジナルのファイル名は、先頭にencoded_とついたファイル名となる

#!/bin/sh

### Please edit the values to suit your environment
target_dir="/your/movie/folder"
output_dir="/your/movie/folder"
enc_size="320x240"
v_bitrate="300k"
a_bitrate="64k"
target_dir_depth="2"

###
### main
###
start_time=`date +%s`
count=0

# make output directory
if [ -e "${output_dir}/${enc_size}" ] ; then
    if [ -w "${output_dir}/${enc_size}" ] ; then
        :
    else
        echo "ERROR: You don't have write permissions to the output directory."
        exit 1
    fi
else
    mkdir -p ${output_dir}/${enc_size} || exit 1
fi

# set Internal Field Separator
IFS="
"

# encode
for fullpath in `find ${target_dir}/ -maxdepth ${target_dir_depth}`
do
    filename=${fullpath##*/}
    suffix=${fullpath##*.}
    if [ -f "${fullpath}" ] && [ ! -z "${filename%%encoded_*}" ] ;then
        case ${suffix} in
            mp4|avi|mpg)
                ffmpeg -i "${fullpath}" -b:v ${v_bitrate} -b:a ${a_bitrate} -s ${enc_size} "${output_dir}/${enc_size}/encoded_${filename%.*}_${enc_size}.mp4" && mv "${fullpath}" "${fullpath%/*}/encoded_${filename}" && count=`expr ${count} + 1`;;
              *)
                echo "${filename} is skipped encoding, because the file type is not supported."
        esac
    else
        continue
    fi
done

# calculate processing time
finish_time=`date +%s`
p_time=`expr ${finish_time} - ${start_time}`

if [ ${count} -gt 0 ] ; then
    echo "It took ${p_time} second(s) to encode processing of ${count} file(s)."
else
    echo "This script did not do anything."
fi

GIGABYTE GV-N75TOC-2GI

特にいま使っているビデオカード(GeFORCE GTX460)に不満があるわけでもないのに、4年も使ってるし・・・という理由だけでなんとなくメインPCのビデオカードを買い換えたくなってきました。

3Dゲームを頻繁にやるわけでもないのですが全くやらないわけでもないし、なにより新世代アーキテクチャMaxwellのGPUでワットパフォーマンスが前世代の2倍!なんて売り文句のビデオカードが出てるじゃないですか!これだけでここのところPCの消費電力低減にむきになってる私にとって購入の決め手に十分なり得ます。

つぎに購入意欲を掻き立てたのはハードウェアエンコーダNVEncによる低負荷リアルタイムエンコード機能ShadowPlay。家庭用ゲーム機PS4にも同様の機能がありますが、ゲーム配信をよくやる自分としてはこの機能はとっても有用になりそう。

そして時代は4K!アーンド60Hz!現世代の4Kのモニタを買う予定はいまのところ全くありませんが、メインPCが4Kに対応していないのは気分が悪い!

と、最後の理由はネタですが、GIGABAYTEのGeFORCE GTX750Ti搭載GV-N75TOC-2GIを購入しました。
さて、新しいビデオカードを買ってきたらまずやる事と言えば?そう3Dゲーム、ではなくベンチマークです。以下は3DMarkのリザルト。

3dmark_result

GTX460の購入価格は約2.5万円、対して今回のGTX750Tiは約1.9万円。価格的には6,000円のダウングレードですが、4年の歳月は長かったようです。FIRE STRIKE1.1の値は約1.5倍になっています。ぱっと見フレームレートが劇的に上がっているわけでもなく、ウィンドウズエクスペリエンスインデックスの値も7.6でぴくりとも変わりませんでしたがw、GTX460よりは確実に性能が上がっているようです。

そして期待の消費電力(システムトータル)は・・・

アイドル時
GTX460: 95W
GTX750Ti: 49W

3DMark実行時
GTX460: 200~215W
GTX750TI: 115~135W

すんばらしいいいいいいいいいいいいいいいい。460で3Dゲームをやるとクーリングファンがすさまじい音を立てていましたが、GTX750Tiはアイドル時と違いが分からないくらい静かです。これは非常にすばらしい。補足ですが、GTX460のアイドル時の消費電力はちょっとおかしいです。購入当時はたしか65W程度だったのですが、いつのまにか90W以上になってました。ヒートシンクにびっちり埃が付いていたし、正常な状態ではなかったと思われます。

つぎにリアルタイムエンコードのShadowPlayですが、普通に使えるレベルだと思います。まだローカルハードディスクへの録画しか試してませんが、高ビットレート設定では画質も上々。フリーの配信ソフトobsがNVEncに対応してるので、CPUにほとんど負荷をかけずにニコニコ生放送にも配信できそうです。うっしっし。

最後に4K。デュアルHDMIで4K@60Hzに対応というこのビデオカードですが、ちょっと調べた限りではDisplayPort1.2で4K@60Hz対応というモニタが主流で、デュアルHDMIで4K@60Hzというモニタはほとんどない(SHARPのPN-K321くらい?)ようですね。このビデオカードで4Kを出力することはなさそうですw もっとも3Dゲームを4K解像度でまともに動かすというのは、2014年に販売されているビデオカードではハイエンドでも厳しそうであり、ミドルクラスのこのビデオカードではおまけみたいなものと考えたほうがいいかもしれませんね。

というわけで買ってよかったGTX750Ti、みなさんもいかがですか?w