7月に再導入したMediaTomb。気が付いたらREGZAから再生できなくなっている事があった。
プロセスを再起動すると復旧するので、どうやらサーバ起動時にプロセスがコケているらしく、/var/log/mediatomb.logを調べてみると
2014-09-20 15:17:29 ERROR: The connection to the MySQL database has failed: mysql_error (2002): "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)"というエラーが出ていた。
「プロセス再起動で復旧」するのだからMySQLが動いてないなんて事は「あり得ない」のだけれど…と思って調べたところ、Ubuntu Server 14.04 LTSにてmediatombの自動起動が失敗するというエントリを発見。/etc/init/mediatomb.confを
yano@GT110b:~$ diff /etc/init/mediatomb.conf.orig /etc/init/mediatomb.confとする事で対処できた。
4c4,5
< start on (local-filesystems and net-device-up IFACE!=lo)
---
> # start on (local-filesystems and net-device-up IFACE!=lo)
> start on (started mysql and local-filesystems and net-device-up IFACE!=l0)
しかし、作業の最中にプロセス再起動を繰り返してポートが49152以外になるとまたREGZAから再生できなくなってしまう事に気付いた。正確に言うと「以前気付いたが解決策がわからなかった」事を思い出した。
改めてbindしている箇所のソース(~/miniserver.c)を読んでみたところ、設定でポート番号を指定されるとreuseaddr_onになり、未指定だとreuseaddr_offで49152からincrementされてしまう実装となっている事がわかったので、/etc/mediatomb/config.xmlに<port>でポート番号設定を追加し、プロセス再起動しても同じポート番号49152がreuseされるよう対処した。
<server>
~~~~
<name>MediaServer</name>
<port>49152</port>
<udn>uuid:~~~~</udn>
<home>/var/lib/mediatomb</home>
<webroot>/usr/share/mediatomb/web</webroot>
【参照】
●Ubuntu日本語フォーラム https://forums.ubuntulinux.jp/
┗Ubuntu Server 14.04 LTSにてmediatombの自動起動が失敗する 2014年6月14日