2015年2月1日日曜日

CentOS7でDLNAサーバー(minidlna)を構築 -サービス設定編-

CentOS7 を DLNAサーバーに でインストールした minidlna をサービス登録&
firewallへの追加を行います

minidlna を systemctl へ登録


CentOS7 より systemv が 廃止?され サービスは systemctl 経由で行われるようになりました
minidlna はまだ 対応していないため自前で作る必要があります

作り方はいたって簡単

/usr/lib/systemd/system/ に 以下の service ファイルを設置するだけ

# cat /usr/lib/systemd/system/minidlna.service
[Unit]
Description=minidlna server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
PIDFile=/var/run/minidlna/minidlna.pid
EnvironmentFile=/etc/sysconfig/minidlna
ExecStart=/usr/local/sbin/minidlnad -R -f $CONFIG_FILE
ExecStop=/bin/kill -SIGTERM $MAINPID
ここに書かれるのは 起動/停止コマンドと環境ファイルのみとなるため
起動に必要な引数は EnvironmentFile に記載します
起動引数に -R をつけて ライブラリをスキャンしなおすようにしています
EnvironmentFile の中身は
# cat /etc/sysconfig/minidlna
CONFIG_FILE=/etc/minidlna.conf
だけです
minidlna.conf の中身は前回作ったものです
これで
systemctl start minidlna
systemctl stop minidlna
が成功すればOK

# systemctl status minidlna
minidlna.service - minidlna server
   Loaded: loaded (/usr/lib/systemd/system/minidlna.service; static)
   Active: active (running) since 日 2015-02-01 14:45:40 JST; 5h 56min ago
 Main PID: 12790 (minidlnad)
   CGroup: /system.slice/minidlna.service
           └─12790 /usr/local/sbin/minidlnad -R -f /etc/minidlna.conf

 2月 01 14:45:40 localhost.localdomain systemd[1]: Started minidlna server.

firewalld への追加


DLNAサービスで必要なポートは
  • udp 1900
  • tcp 5000
です
そのほか minidlna.conf で 指定したWEBポートを必要あればあけます
一つ一つ
# firewall-cmd --add-port=XXXX --permanent
とかしてもいいんですが
今回は service として登録してしまいました
/usr/lib/firewalld/services/
には service 毎の設定が入っているため同じようにファイルを作ります
内容は以下のとおり
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>minidlna</short>
  <description></description>
  <port protocol="udp" port="1900"/>
  <port protocol="tcp" port="5000"/>
</service>
これで
# firewall-cmd --add-service=minidlna --permanent
# firewall-cmd --reload
とすれば ポートが開放されるので 他のDLNA機器から検索できるか確認してみましょう

CentOS7でDLNAサーバー(minidlna)を構築 -インストール編-

CentOS7にDLNAサーバーをインストールしたのでメモ
当初 mediatomb を インストールしようとしたが コンパイル時にエラーとなるためあえなく撤退し minidlna をインストールしました

大まかな流れ

1. minidlna のコンパイル&インストール
2. systemctl への追加
3. firewalld への登録

minidlna のコンパイル&インストール

資材

  • minidlna-1.1.4.tar.gz
  • ffmpeg
必要なRPMをインストール

sudo yum install libjpeg-turbo-devel libid3tag-devel libogg-devel libvorbis-devel flac-libs flac-devel

ffmpeg から 各種ランタイムの調達

ffmpeg を git から調達
基本的に minidlna で使用するライブラリ群しかほしくなかったのでライブラリのみをコンパイルインストールしました
$ git clone git://source.ffmpeg.org/ffmpeg.git
$ cd ffmpeg
$ ./configure --enable-shared --disable-programs
$ make
$ sudo make install
で /usr/local/lib に soファイルが配備されます

minidlna の コンパイルインストール

$ tar -zxvf minidlna-1.1.4.tar.gz
$ cd minidlna-1.1.4
$ ./configure
$ make
$ sudo make install

ld パスの追加

ffmpeg のライブラリインストールで各種モジュールが /usr/local/lib に配置されたので配置先もldパスに追加し
/etc/ld.so.conf.d/ 配下に /usr/local/lib を記述したファイルを配置し読み込みなおす
$ sudo echo '/usr/local/lib' > /etc/ld.so.conf.d/minidlna.conf
$ sudo ldconfig

設定ファイルの配置


minidlna.conf が ソースディレクトリにいるので /etc/ に配置
$ sudo cp minidlna.conf /etc/

/etc/minidlna.conf を 自分の環境に合わせて変更してください
以上で sudo /usr/local/sbin/minidlnad -f /etc/minidlna,conf を叩けば minidlna が起動できます。