6
18
2018
UPnP/OpenHome Music Server の自作(その1)
UPnP/OpenHome Music ServerをAPU2C4で作成してみた
PC Engines APU2C4 ボードに mSATA SSD を追加してMusic Server化する
UPnP/OpenHome対応のミュージックサーバを用意する場合、何十万円もするメーカー製の製品を購入するか、QNAPやSynologyなどの高機能NASボックスを用意し、自分で専用のアプリをインストールする必要がある.メーカー製品を導入するにしても、ネットワークオーディオを始めるにはそれなりの知識とスキルが要求されることはご承知のことと思う.
今回はネットワークオーディオを始めるには無くてはならないUPnP/OpenHome対応のミュージックサーバをちょこちょこっとやっつけで作ってみたので、製作の過程を簡単に紹介することにする.
第1弾:なんちゃってMusicサーバ
本当は1台だけで、ファイルサーバとミュージックサーバ機能 [mpd,UPnP(DLNA)/OpenHome] 、ネットワークルータ機能(オーディオ専用ネットワークの自動作成)を簡単に実現するための手順を示したかったが、自分で試行錯誤している間に、設定内容が高度過ぎてとても一般の人では太刀打ちできない内容になってしまった.やはりLinuxなどのUnix系OSやTCP/IPネットワークに関する専門知識が備わった人でなければ、内容を理解して自分で構築するのは困難だ.
という訳で、とりあえず最初は(比較的)簡単なMusic NAS BOXの作成から行うことにした.勿論、QNAPやSynologyのようなWEB GUIベースの使い易い管理機能などは実装できないので、必要最小限の機能しか使えない『なんちゃってMusicサーバ』だ.
『なんちゃってMusicサーバ』の応用編として、第2弾:オーディオ専用ネットワークセグメントの作成、第3弾:家庭内ネットワークに繋ぐだけで簡単に使えるオールインワンミュージックサーバ...という構成を考えているが先は長そうだ.
物理サーバの選定
家庭用のミュージックサーバを作成するには、先ずは適当な小型のコンピュータを用意しなければならないが、デスクトップコンピュータではサイズや消費電力、騒音などをまき散らすので、ミュージックサーバ用途には不向きだ.画像編集やゲームをやるわけではないので今回の用途であるファイルサービスやネットワークルータとして活用するだけなので、CPUの性能はそこそこあれば大丈夫だ.
APU2C4上では様々なOSを稼働させる事が可能だが、先ずはLinux OSに慣れるという意味で汎用的なサーバOSである CentOS をインストールして、シンプルなNFSファイルサーバを稼働させ、オーディオデータライブラリを作成する.この状態で、VolumioやlightMPD、BeagleBone Botic など mpd クライアントに対して、NFS経由でオーディオデータを供給可能となる.
次に、UPnP(DLNA)/OpenHomeサーバ用のアプリである、MinimServer を稼働させ、mpd以外のクライアントからもオーディオデータにアクセス可能とする.市販のネットワークオーディオ機器としては、大部分の機器がUPnP(DLNA)/OpenHomeを前提に作られているので、汎用的なミュージックサーバとして使うには、UPnP(DLNA)/OpenHome対応は必須となる.
今回はあまりお金を掛けたくないので、手元に余っていたPCEngines社のAPU2C4を省電力・無音のUPnP/OpenHome対応Music Serverに仕立てることにする.APU2C4はスイスのPC Engines社が製造・販売しているX64ベースの組み込み用の小型PCボードで、lightMPDの対応機種にもなっているので、このボードでlightMPDを動かしている人もそこそこ居ることだろう.APU2C4はスイッチサイエンスさんなどからも購入可能だが、安価に仕入れたければPCEngines社のPCEngines shopからダイレクトに購入(本体: $132 USD、専用ケース:$10 + Shipping & Handling: 約$14)することを薦める.国際メール便なので届くまで2週間くらい掛かるが、トラッキングが可能なので今どの辺りに荷物が居るのかチェックしながら気長に待つのも楽しい.前回購入したときは、NL(オランダ)からの発送だった.
APU2シリーズはX86系のCPU(AMD GX-412TC) を搭載しているので、CentOSやVMWare ESXiなども動かす事が可能だ.今回はServer OSとして日頃から馴染んでいるCentOS7をOSとして選択した.汎用的なLinuxサーバなので、Linuxの知識さえあれば、自前で環境を整えるのはそれほど苦労しないはずだ.
APU2C4は1GHz QuadコアCPU、4GB Mem、Intelチップ1000Base-T NIC x 3、μSDカード、 mSATA、miniPCI express X 2、SATAポート など汎用的な小型デスクトップPCとしてもそこそこ使える構成になっている.但し、機器組み込み用のPCボードなのでVGA/HDMIなどのディスプレイ出力は備わっていないので、ヘッドレスタイプのコンソール経由のコマンド入出力が必須となる.ヘッドレスタイプのコンピュータは一般の人達にはかなり敷居が高いのが難点だろうか.
Music Server化するには内部にそれなりの容量のディスクドライブが必要になるが、SAMSUNG製の512MB mSATA SSD (MZ-MTE5120)が有ったので今回はこのSSDをOS起動ドライブ兼データディスクドライブとして利用することにする.マザーボード上にはSATAコネクタ(+5V出力端子)も有るので、実装方法を工夫すれば薄手の2.5InchSSDなども搭載可能だろう.
ファイルサービスとしてはNFSのみ実装することとし、SMB/CIFSのような余計なネットワークトラフィックを大量に発生させるプロトコルは使わないことにする.ネットワークオーディオ的には(一般的にも)SMB/CIFSは駄目プロトコルの筆頭だ.どうしてもSMB/CIFSを使う場合は、ネットワークオーディオクライアントとSMB/CIFSのファイルサービスのネットワークを分離する事を推奨する.ネットワーク分離については、別な機会に紹介する予定だ.
UPnP(DLNA)/OpenHomeミュージックサーバアプリケーション
UPnP(DLNA)ミュージックサーバアプリケーションとしては、有償の twonky serverが有名で、少し前の市販のミュージックサーバ機器に実装されていることが多かったので今でも使っている人は多いことだろう.現在はミュージックサーバ機器単体よりも、QNAPやSynologyなどのNASボックスのオプションで用意されている、MinimServerなどのフリーソフトウェアを用いている人の方が多いかも知れない.
Synology NAS(画面はDS916+) ではサードパーティーアプリケーションを簡単にインストール可能
サーバOSのインストール
前準備(シリアルポート)
APU2シリーズはヘッドレスなので、OSのインストールなどの操作はシリアルコンソールを通じて行わなければならない.先ずはDB9タイプのシリアルコンソールケーブルと、シリアルコンソールが使えるPCとターミナル(コンソール)アプリケーションを用意する.最近のPCやMacではシリアルポートはほぼ全滅しているので、一般的には USBシリアルポートアダプタを使うことになるだろう.
APU2のシリアルポートはモデムやNW機器などのDCEではなく、コンピュータ側なのでDTEポートとして振る舞うことになる.従ってPC(Mac)側とは DTE/DTE となるので、DB9メス・メスのクロスケーブルが必要になる.一般的なDB9のクロスタイプの結線は次の様になる.
DB9 DB9
CD 1 1 CD(通常未結線)
RX 2 ======== 3 TX(必須)
TX 3 ======== 2 RX(必須)
DTR 4 -------- 6 DSR
GND 5 ======== 5 GND(必須)
DSR 6 -------- 4 DTR
RTS 7 -------- 8 CTS
CTS 8 -------- 7 RTS
RI 9 9 RI
自作DB9メス・メスクロスケーブル
CentOS7 USBインストールメディアの作成
APU2シリーズはUSBポートに挿したUSBマスストレージメディアから起動させることが可能なので、今回はCentOS7のミニマルインストーライメージをUSBメモリに書き込んでおく.Macのコマンドラインで行う場合は、
iMac27:CentOS yasuaki$ diskutil list <=== USBメディアのデバイス名確認
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *3.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage MavericsHDD 128.3 GB disk0s2
3: Apple_Boot Boot OS X 134.2 MB disk0s3
4: Apple_HFS SierraBackup 127.8 GB disk0s4
5: Apple_Boot Recovery HD 650.0 MB disk0s5
6: Microsoft Basic Data SHARED 256.7 GB disk0s6
7: Apple_CoreStorage Home 1.0 TB disk0s7
8: Apple_Boot Boot OS X 134.2 MB disk0s8
9: Apple_HFS Data 1000.0 GB disk0s9
10: Apple_HFS Tmp 484.1 GB disk0s10
...
【途中省略】
...
/dev/disk6 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *8.1 GB disk6
1: 0xEF 9.2 MB disk6s2
この場合の、USBメモリのデバイス名は "/dev/disk6" であるので、 ddコマンドの出力先のデバイスは、 of=/dev/rdisk6 と指定する.
iMac27:CentOS yasuaki$ ls -la
total 18167824
drwxrwxrwx@ 6 yasuaki staff 204 Jun 16 20:09 .
drwxrwxr-x@ 59 yasuaki staff 2074 Jun 16 20:09 ..
-rwxrwxrwx@ 1 yasuaki staff 3972005888 Jun 11 2017 CentOS-6.9-x86_64-bin-DVD1.iso
-rw-r--r--@ 1 yasuaki staff 4379901952 Dec 5 2016 CentOS-7-x86_64-DVD-1611.iso
-rw-r--r--@ 1 yasuaki staff 950009856 Jun 16 20:09 CentOS-7-x86_64-Minimal-1804.iso
iMac27:CentOS yasuaki$ sudo dd bs=8m if=CentOS-7-x86_64-Minimal-1804.iso of=/dev/rdisk6
113+1 records in
113+1 records out
950009856 bytes transferred in 264.481086 secs (3591977 bytes/sec)
iMac27:CentOS yasuaki$
シリアルコンソール経由のCentOS 7インストール作業
PC側のターミナルアプリケーションとしては、WindowsではTeraTerm、Mac OS X では標準の "Terminal" アプリケーションなどで構わないだろう.APU2のシリアルポートは 115200bps 8bit parity none (115200 8N1)で設定されている.
Mac OS X の"Terminal" 上で screenコマンドを入力した時の様子を示す.まず最初にUSBシリアルアダプタのデバイス名を確認しておく.一連のコマンドは次の様になる.
iMac27:~ yasuaki$ ls -la /dev/tty.usb* <=== デバイス名の確認
crw-rw-rw- 1 root wheel 21, 4 Jun 17 22:50 /dev/tty.usbserial-00104414
iMac27:~ yasuaki$
iMac27:~ yasuaki$ screen /dev/tty.usbserial-00104414 115200 <=== screenコマンド
screenコマンド実行後にAPU2C4の電源を入れるとコンソール画面に次の様なメッセージが表示され、"Press F10 key now for boot menu" という行が表示されたらF10キーを入力し、ブートデバイスセレクトモードに入る.
PCEngines apu3
coreboot build 20170302
4080 MB ECC DRAM
SeaBIOS (version rel-1.10.0.1)
Press F10 key now for boot menu
Select boot device:
1. USB MSC Drive Generic Flash Disk 8.07
2. ata0-0: SAMSUNG MZMTE512HMHP-00000 ATA-9 Hard-Disk (476 GiB
3. Payload [memtest]
4. Payload [setup]
ここでは、1番のUSBインストールメディアを選択する.尚、2番は今回OSをインストールする mSATA SSD である.1番のUSBインストールメディアを選ぶと、CentOS7のテキストインストール画面が現れるので、カウントダウンされている60秒以内に"TAB" キーを押下して、オプションパラメータの編集モードに入る.下段に
>vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.c
heck quiet
という文字列が表示されるので、最後の "quiet" を削除して、後に "console=ttyS0,115200n8" という文字列を追加する.これを行わないと、インストール画面が表示されない.
"TAB"キーを押下してオプション指定モードに入る
"quiet" を消して " console=ttyS0,115200n8" を追加する
+--------------------------------------------------------------+
| CentOS 7 |
|--------------------------------------------------------------|
| |
| |
| Install CentOS 7 |
| Test this media & install CentOS 7 |
| |
| Troubleshooting > |
| |
| |
| |
| Press Tab for full configuration options on menu items. |
| |
| |
> vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 console=t
tyS0,115200n8
Starting installer, one moment...
anaconda 21.48.22.134-1 for CentOS 7 started.
* installation log files are stored in /tmp during the installation
* shell is available on TTY2
* when reporting a bug add logs from /tmp as separate text/plain attachments
11:29:21 Not asking for VNC because we don't have a network
================================================================================
================================================================================
Installation
1) [x] Language settings 2) [!] Time settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:
テキストベースのインストール画面が表示され、1~9までの項目について対話形式で項目を指定して行くことになるが、このテキストベースのインストーラが非常に曲者で、入力した項目が反映されなかったり、前の状態に戻ったりするなど、思った通りに項目を設定させてくれない.最初は訳が分からず戸惑ったが、項目を設定したら、少し時間を置いてから"Reflesh(r)" を行って入力内容を確認するというのがミソで、この挙動を理解するまでは中々先へ進めなかった.
Creating xfs on /dev/sda1
.
Creating lvmpv on /dev/sda2
.
Creating swap on /dev/mapper/centos-swap
.
Creating xfs on /dev/mapper/centos-home
.
Creating xfs on /dev/mapper/centos-root
.
Running pre-installation scripts
.
Starting package installation process
Preparing transaction from installation source
Installing libgcc (1/300)
Installing grub2-common (2/300)
Installing grub2-pc-modules (3/300)
Installing ncurses-base (4/300)
Installing firewalld-filesystem (5/300)
Installing bind-license (6/300)
Installing kbd-misc (7/300)
...
Installing iwl4965-firmware (298/300)
Installing iwl6000g2b-firmware (299/300)
Installing iwl5150-firmware (300/300)
Performing post-installation setup tasks
Installing boot loader
.
Performing post-installation setup tasks
.
Configuring installed system
.
Writing network configuration
.
Creating users
.
Configuring addons
.
Generating initramfs
.
Running post-installation scripts
.
Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA
Installation complete. Press return to quit
CentOS 7 基本設定
CentOSのMinimal Installパッケージは必要最小限のパッケージ構成なので、この状態のままではメディアサーバとして殆ど使いものにならない.今回はUPnP/OpenHome Music Serverを構築する事が目的なので、必要なパッケージを後から追加する必要がある.
私の環境ではCentOS 7 のインストール作業自体は40分弱で終了した.とりあえず"yum update"コマンドでパッケージを最新の状態にしておく.作業用のユーザアカウントとMusic Dataを格納するためのディレクトリを作成し、sudo権限とssh接続のための基本設定を済ませておく.CentOS 7ではデフォルト状態で SE Linux機能が有効になっているので、構築作業が完了するまで一時的にSE Linux機能を無効にしておくと良いだろう.今回は公開系のサーバではないので、SE Linux機能は完全にOFFにしておいた方が無難だ.Firewall関係も細かな設定が必要になるが、家庭内のクローズドなシステムとしての利用で有れば、初心者はFirewall機能を無効にしておいた方が無難だ.
CentOS7のインストーラの項目 "[7] Network Configuration" で ネットワークポートに割り当てるIPアドレスなどの基本的な初期設定が行えるが、この設定については自分の家のネットワーク環境に応じて個別に設定しなければならない.今回は3つあるポートの内、向かって一番左側(DB9コンソールポート側)のポート (CentOS 7でのデバイス名は "enp1s0" )に、192.168.100.12/24 を割り当てている.ここは各自で自分の環境に合わせる必要があるが、この後のオーディオ専用ネットワークセグメント化を行うことを想定して、固定IPアドレスの設定を行っておく.
家庭用の一般的なブロードバンドルータを使っているのであれば、LAN側のIPアドレスはブロードバンドルータのDHCPサーバ機能で管理されており、デフォルトでネットワークレンジが192.168.1.0/24 に設定されていることが多い.ブロードバンドルータの管理コンソールで確認し、適切なIPアドレスを設定しておいて欲しい.この辺の設定方法が解らないのであれば、ネットワークオーディオの利用は諦めた方が良いだろう.
CentOS 7の初期環境設定については多くの人達が紹介しているので、ここでは詳しい設定内容は紹介しない.UNIX系のOSでは一般的なお作法として、rootアカウントで作業するのではなく、一般のユーザアカウントに sudo 権限を設定し、そのアカウントで sudoコマンドを使って作業を行うのが一般的だが、今回は直接rootアカウントで作業を行っている.
CentOS Linux 7 (Core)
Kernel 3.10.0-862.el7.x86_64 on an x86_64
server2 login: root
Password:
[root@server2 ~]# getenforce
Enforcing
[root@server2 ~]# setenforce 0 <=== SE Linux機能の一時的な無効化
[root@server2 ~]# getenforce
Permissive
[root@server2 ~]# cat /etc/selinux/config <=== SE Linux機能の設定ファイル内容確認
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
【SE Linux機能を恒久的に無効化する方法】
・ sed コマンドで設定ファイルを書き換えるかまたはテキストエディタで該当行を直接書き換える
"SELINUX=enforcing" ⇒ "SELINUX=disabled"
・sed コマンド実行例
[root@server2 ~]# sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
[root@server2 ~]# cat /etc/selinux/config <=== SE Linux機能が無効化されたことを確認
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@server2 ~]# yum update <=== CentOS パッケージのアップデート
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/4): base/7/x86_64/group_gz | 166 kB 00:00
(2/4): extras/7/x86_64/primary_db | 149 kB 00:00
(3/4): updates/7/x86_64/primary_db | 2.7 MB 00:00
(4/4): base/7/x86_64/primary_db | 5.9 MB 00:02
... 【途中省略】
selinux-policy-targeted.noarch 0:3.13.1-192.el7_5.3
tzdata.noarch 0:2018e-3.el7
Complete!
[root@server2 ~]# yum groupinstall "Development Tools" <=== 開発ツールのインストール (※ソースコードからの構築作業を行わないのであれば必要ない)
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package autoconf.noarch 0:2.69-11.el7 will be installed
--> Processing Dependency: perl >= 5.006 for package: autoconf-2.69-11.el7.noarch
... 【途中省略】
trousers.x86_64 0:0.3.14-2.el7
unzip.x86_64 0:6.0-19.el7
zip.x86_64 0:3.0-11.el7
Complete!
[root@server2 ~]# systemctl status firewalld <=== firewall機能の状態確認
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-06-19 23:01:51 JST; 25s ago
Docs: man:firewalld(1)
Main PID: 13005 (firewalld)
CGroup: /system.slice/firewalld.service
└─13005 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Jun 19 23:01:49 server2 systemd[1]: Starting firewalld - dynamic firewall d.....
Jun 19 23:01:51 server2 systemd[1]: Started firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@server2 ~]# systemctl stop firewalld <=== firewall機能の停止
[ 1649.175154] Ebtables v2.0 unregistered
[root@server2 ~]# systemctl disable firewalld <=== firewall機能の無効化
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@server2 ~]#
[root@server2 ~]# ip addr <=== ネットワークポートの設定状況確認
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:b9:47:1c:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.12/24 brd 192.168.100.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
inet6 2409:10:ad40:306a:712d:dc3c:e3cb:a931/64 scope global noprefixroute dynamic
valid_lft 13915sec preferred_lft 12115sec
inet6 fe80::df15:3ce4:15fe:cee2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp2s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:b9:47:1c:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.103.254/24 brd 192.168.103.255 scope global noprefixroute enp2s0
valid_lft forever preferred_lft forever
4: enp3s0: mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:0d:b9:47:1c:1a brd ff:ff:ff:ff:ff:ff
NFSサーバの設定
音源データはサーバのローカルストレージ(SSD)上に格納することになるが、外部のLinux PCやMacなどからのデータ管理やmpdクライアントへ音源データをネットワークファイルサービスとして提供する必要がある.
このための仕組みとしてNFSサーバを稼働させることにする.QNAPやSynologyなどのNASでは、NFS、SMB/CIFS、AFPなどのマルチファイルサービスに対応しているが、今回はNFSのみとする.SMB/CIFSについては、第2弾のオーディオ専用ネットワークセグメント化の際に実装方法について説明することにする.
CentOS 7 のMinimal Installパッケージには、NFS関係のモジュールが含まれていないので、yum コマンド等を用いてNFS関係のモジュールをインストールする.インストール後に、音源データ格納用のディレクトリを作成し、そのディレクトリをNFSで公開するための設定を行う.
[root@server2 ~]# yum install nfs-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 1:1.3.0-0.54.el7 will be installed
--> Processing Dependency: libtirpc >= 0.2.4-0.7 for package: 1:nfs-utils-1.3.0-0.54.el7.x86_64
--> Processing Dependency: gssproxy >= 0.7.0-3 for package: 1:nfs-utils-1.3.0-0.54.el7.x86_64
--> Processing Dependency: rpcbind for package: 1:nfs-utils-1.3.0-0.54.el7.x86_64
... 【途中省略】
Verifying : 1:quota-4.01-17.el7.x86_64 14/16
Verifying : libpath_utils-0.2.1-29.el7.x86_64 15/16
Verifying : libbasicobjects-0.1.1-29.el7.x86_64 16/16
Installed:
nfs-utils.x86_64 1:1.3.0-0.54.el7
Dependency Installed:
gssproxy.x86_64 0:0.7.0-17.el7 keyutils.x86_64 0:1.5.8-3.el7
libbasicobjects.x86_64 0:0.1.1-29.el7 libcollection.x86_64 0:0.7.0-29.el7
libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.1-29.el7
libnfsidmap.x86_64 0:0.25-19.el7 libpath_utils.x86_64 0:0.2.1-29.el7
libref_array.x86_64 0:0.1.5-29.el7 libtirpc.x86_64 0:0.2.4-0.10.el7
libverto-libevent.x86_64 0:0.2.5-4.el7 quota.x86_64 1:4.01-17.el7
quota-nls.noarch 1:4.01-17.el7 rpcbind.x86_64 0:0.2.0-44.el7
tcp_wrappers.x86_64 0:7.6-77.el7
Complete!
NFS公開ディレクトリの設定は、"/etc/exports" ファイルに、下記の様な内容で設定を行う.左からサーバ上の公開ディレクトリ、公開するネットワークの範囲、括弧内にNFSの公開オプションを指定する.
/home/music 192.168.100.0/24(rw,sync,insecure,no_root_squash)
上記の例では、"/home/music" ディレクトリ配下を、家庭内LANのネットワーク範囲 192.168.100.0/24 に公開(このネットワーク配下のサーバやPCのみからアクセス可能)している.括弧内のオプションについては、環境や利用状況に応じて細かく設定しておく方が望ましいが、良く解らない場合はとりあえずこのオプションで設定しておいて、後で自分で設定変更しておいて欲しい.
NFSのバージョンはV3/V4のどちらでも構わないが、V4はセキュリティー機能が豊富な分設定が難しいので、簡単に運用したければV3に合わせておいた方が無難だろう.
[root@server2 ~]# vi /etc/exports <=== NFS公開ディレクトリの設定ファイル作成
...
[root@server2 ~]# cat /etc/exports <=== NFS公開ディレクトリの設定内容確認
/home/music 192.168.100.0/22(rw,sync,insecure,no_root_squash)
[root@server2 ~]# systemctl status rpcbind <=== NFSで必要な関連サービスの確認
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-06-23 18:37:26 JST; 36min ago
Process: 691 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 708 (rpcbind)
CGroup: /system.slice/rpcbind.service
└─708 /sbin/rpcbind -w
Jun 23 18:37:26 server2 systemd[1]: Starting RPC bind service...
Jun 23 18:37:26 server2 systemd[1]: Started RPC bind service.
[root@server2 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@server2 ~]# systemctl enable nfs-server <=== NFSサービスの自動起動化
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@server2 ~]# systemctl start nfs-server <=== NFSサービスの起動
[root@server2 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Sat 2018-06-23 19:14:49 JST; 3s ago
Process: 17994 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 17989 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
Process: 17986 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 17994 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Jun 23 19:14:48 server2 systemd[1]: Starting NFS server and services...
Jun 23 19:14:49 server2 systemd[1]: Started NFS server and services.
[root@server2 ~]#
NFS関連の一連の設定が終わったら、実際にクライアント環境からNFSサーバの公開ディレクトリにアクセス可能であることを確認しておく.ここでは手元のMac(High Sierra)からコマンドラインとFinder上でNFSマウントを行ってみる.
iMac27:~ yasuaki$ sudo mkdir /tmp/mnt
Password:
iMac27:~ yasuaki$ sudo mkdir /tmp/mnt/music
iMac27:~ yasuaki$ sudo mount -t nfs 192.168.100.12:/home/music /tmp/mnt/music
iMac27:~ yasuaki$ ls -la /tmp/mnt/music
total 1
drwxr-xr-x 2 yasuaki macports 6 Jun 23 18:12 .
drwxr-xr-x 3 root wheel 96 Jun 23 19:53 ..
iMac27:~ yasuaki$ df -m
Filesystem 1M-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk2s1 114540 82736 31169 73% 1415813 9223372036853359994 0% /
devfs 0 0 0 100% 762 0 100% /dev
/dev/disk2s4 114540 0 31169 1% 2 9223372036854775805 0% /private/var/vm
/dev/disk0s2 122070 67448 54621 56% 1319014 4293648265 0% /Volumes/Maverics
/dev/disk1s4 121898 55425 66472 46% 1087032 4293880247 0% /Volumes/SierraBackup
/dev/disk0s4 60906 57165 3741 94% 180662 3839046 4% /Volumes/Win7Pro
/dev/disk1s6 244719 22251 222467 10% 0 0 100% /Volumes/SHARED
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
/dev/disk1s9 953674 791568 162106 84% 131690 4294835589 0% /Volumes/Data
/dev/disk1s10 461709 129543 332166 29% 129114 4294838165 0% /Volumes/Tmp
/dev/disk4 1079636 587111 492524 55% 825317 4294141962 0% /Volumes/Home
/dev/disk3 122069 212 121856 1% 136 4294967143 0% /Volumes/MavericsHDD
192.168.100.12:/home/music 431976 32 431944 1% 8 221280248 0% /private/tmp/mnt/music
iMac27:~ yasuaki$ echo "DUMMY TEXT" >/private/tmp/mnt/music/test.txt
iMac27:~ yasuaki$ ls -la /tmp/mnt/music
total 2
drwxr-xr-x 2 yasuaki macports 22 Jun 23 19:55 .
drwxr-xr-x 3 root wheel 96 Jun 23 19:53 ..
-rw-r--r-- 1 yasuaki staff 11 Jun 23 19:55 test.txt
iMac27:~ yasuaki$ cat /tmp/mnt/music/test.txt
DUMMY TEXT
iMac27:~ yasuaki$
Finderの "Go" ⇒ "Connect to Server..." メニューからアクセス
"music" ディレクトリがNFSボリュームとしてマウントされる
MinimServerのインストール
MinimServerはJavaベースのアプリケーションなので、先ずはサーバにJavaの実行環境をインストールする必要がある.Linux環境でのインストール方法は、"Installing MinimServer on Linux" に説明がある.
今回のサーバOSであるCentOS 7(Linux x64)の環境に合わせて、JRE(Java Runtime Environment)をインストールすることになるが、最近OracleがJavaの方針変更を行った関係で、Javaを取り巻く環境が大きく変化している.できればOracleなどと係わりたくないが、仕方が無いので Java SE(現時点での最新版は 10.0.1)をインストールすることにする.今後のサポートなどを考えると最新版の方が良いのだが、OracleがJavaサポート有料化に梶を切ってしまったので悩ましいところだ.
"Java SE Downloads" ページ
Javaのバージョンが色々あって、どれを使って良いのか解りにくいが、開発者向けの環境が"JDK" (Java SE Development Kit)、サーバでの実行環境が Server JRE (Server Java Runtime Environment) 、デスクトップクライアント環境での実行環境がJRE: (Java Runtime Environment)と理解しておけば良いだろう.
今回は、MinimServerのホームページに記載されている、V8環境をインストールすることにする.(V10でも簡単に試してみたところ、そこそこ動いていたので、V10でも問題無いかもしれない.但し、安定稼働するかどうかは未検証)
サーバ環境用の "Java SE 8u171/ 8u172" をダウンロードする.
http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
CentOS7上からwgetでダウンロードリンクを直接辿って取得した物を解凍しようとすると、何故かgzip形式ではないと怒られてしまうので、一旦Mac上でダウンロード・解凍した物をサーバに持ってきた.
展開した "server-jre-8u172" を /usr/local 配下にコピーし、実行環境( bin/java)のシンボリックリンクを /usr/local/bin 配下に張っておく.
[root@server2 ~]# mkdir JavaSE8
[root@server2 ~]# cd JavaSE8
[root@server2 JavaSE8]# wget http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/server-jre-8u172-linux-x64.tar.gz
-bash: wget: command not found
[root@server2 JavaSE8]# yum install wget <=== wget を入れておく
Loaded plugins: fastestmirror
...【途中省略】
Complete!
[root@server2 JavaSE8]# wget http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/server-jre-8u172-linux-x64.tar.gz
--2018-06-24 11:06:59-- http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/server-jre-8u172-linux-x64.tar.gz
Resolving download.oracle.com (download.oracle.com)... 23.217.126.192
...【途中省略】
HTTP request sent, awaiting response... 200 OK
Length: 5307 (5.2K) [text/html]
Saving to: ‘server-jre-8u172-linux-x64.tar.gz’
100%[=========================================================================>] 5,307 --.-K/s in 0s
2018-06-24 11:07:00 (219 MB/s) - ‘server-jre-8u172-linux-x64.tar.gz’ saved [5307/5307] <== 一見ダウンロードできているように見えるけど...
[root@server2 JavaSE8]# tar xvzf server-jre-8u172-linux-x64.tar.gz
gzip: stdin: not in gzip format <=== ???
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[root@server2 JavaSE8]#
---
Mac上でダウンロード・解凍した物を NFS公開ディレクトリ( /home/music/ )経由で手元のCentOS7サーバ上に持ってきた.
WEBブラウザ経由でダウンロードしたファイルサイズが全く違っていたので、wgetで直接取ってくることはできないような
仕組みになっているようだ.WEBブラウザで一旦ダウンロードする必要がある.
---
[root@server2 JavaSE8]# cp /home/music/*.tar .
[root@server2 JavaSE8]# ls -la
total 315692
drwxr-xr-x 2 root root 86 Jun 24 11:20 .
dr-xr-x---. 4 root root 162 Jun 24 11:06 ..
-rw-r--r-- 1 root root 171284480 Jun 24 11:20 serverjre-10.0.1_linux-x64_bin.tar <==
-rw-r--r-- 1 root root 151982080 Jun 24 11:20 server-jre-8u172-linux-x64.tar
[root@server2 JavaSE8]# tar xvf server-jre-8u172-linux-x64.tar
jdk1.8.0_172/
jdk1.8.0_172/bin/
jdk1.8.0_172/bin/rmiregistry
jdk1.8.0_172/bin/unpack200
jdk1.8.0_172/bin/jar
...【途中省略】
jdk1.8.0_172/jre/README
jdk1.8.0_172/README.html
[root@server2 JavaSE8]# ls -la
total 315692
drwxr-xr-x 3 root root 106 Jun 24 11:21 .
dr-xr-x---. 4 root root 162 Jun 24 11:06 ..
drwxr-xr-x 7 10 143 166 Mar 29 13:57 jdk1.8.0_172
-rw-r--r-- 1 root root 171284480 Jun 24 11:20 serverjre-10.0.1_linux-x64_bin.tar
-rw-r--r-- 1 root root 151982080 Jun 24 11:20 server-jre-8u172-linux-x64.tar
[root@server2 JavaSE8]# cp -r ./jdk1.8.0_172 /usr/local/.
[root@server2 JavaSE8]# ls -la /usr/local/jdk1.8.0_172
total 164
drwxr-xr-x 7 root root 166 Jun 24 11:31 .
drwxr-xr-x. 13 root root 151 Jun 24 11:31 ..
drwxr-xr-x 2 root root 4096 Jun 24 11:31 bin
-r--r--r-- 1 root root 3244 Jun 24 11:31 COPYRIGHT
drwxr-xr-x 3 root root 132 Jun 24 11:31 include
drwxr-xr-x 4 root root 129 Jun 24 11:31 jre
drwxr-xr-x 3 root root 144 Jun 24 11:31 lib
-r--r--r-- 1 root root 40 Jun 24 11:31 LICENSE
drwxr-xr-x 4 root root 47 Jun 24 11:31 man
-r--r--r-- 1 root root 159 Jun 24 11:31 README.html
-rw-r--r-- 1 root root 424 Jun 24 11:31 release
-r--r--r-- 1 root root 145180 Jun 24 11:31 THIRDPARTYLICENSEREADME.txt
[root@server2 JavaSE8]# ln -s /usr/local/jdk1.8.0_172/bin/java /usr/local/bin
[root@server2 JavaSE8]# java -version <=== Java実行環境が正常に起動できることを確認
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
[root@server2 JavaSE8]#
Javaの実行環境が整ったら、MinimServerのインストールを行う.MinimServerのダウンロードページから自分の環境に合った物(Linux Intel x86 or x64: MinimServer-0.8.5.2-linux-intel.tar.gz)をダウンロードする.リンク先は実際の"MinimServer-0.8.5.2-linux-intel.tar.gz" ではなく、Javascriptによる間接的にダウンロードする仕組みになっている.WEBブラウザ経由でコマンドラインから直接ダウンロードするには、Javascriptのソースコードを参照して、自分でお目当てのURLを探しだしておけば良い.
var windows_x86_server = 'MinimServer';
windows_server = 'MinimServer-0.8.5.2-install.exe';
macosx_server = 'MinimServer-0.8.5.2-macos.dmg';
linux_intel_server = 'MinimServer-0.8.5.2-linux-intel.tar.gz';
linux_x86_server = 'MinimServer-0.8.5.2-linux-intel.tar.gz';
linux_x64_server = 'MinimServer-0.8.5.2-linux-intel.tar.gz';
linux_arm_server = 'MinimServer-0.8.5.2-linux-arm.tar.gz';
linux_armhf_server = 'MinimServer-0.8.5.2-linux-armhf.tar.gz';
linux_arm64_server = 'MinimServer-0.8.5.2-linux-arm64.tar.gz';
linux_ppc_server = 'MinimServer-0.8.5.2-linux-ppc.tar.gz';
qnap_intel_server = 'MinimServer-0.8.5.2-intel.qpkg';
qnap_arm_server = 'MinimServer-0.8.5.2-armv5.qpkg';
qnap_armv7_server = 'MinimServer-0.8.5.2-armv7.qpkg';
qnap_arm64_server = 'MinimServer-0.8.5.2-arm64.qpkg';
synology_intel_server = 'MinimServer-0.8.5.3-intel.spk';
synology_armv7_server = 'MinimServer-0.8.5.3-armv7.spk';
synology_armv8_server = 'MinimServer-0.8.5.3-armv8.spk';
synology_armv5_server = 'MinimServer-0.8.5.3-armv5.spk';
synology_ppc_server = 'MinimServer-0.8.5.3-ppc.spk';
asustor_x86_server = 'MinimServer-0.8.5.2-x86.apk';
asustor_x64_server = 'MinimServer-0.8.5.2-x64.apk';
asustor_arm_server = 'MinimServer-0.8.5.2-arm.apk';
melco_server_windows = 'MinimServer-0.8.5.2-melco.zip';
melco_server_mac = 'MinimServer-0.8.5.2-melco.dmg';
readynas_x86_server = 'MinimServer-0.8.5.3-readynas-x86.bin';
readynas_arm_server = 'MinimServer-0.8.5.3-readynas-arm.bin';
windows_watch = 'MinimWatch-0.8.5.3-install.exe';
macosx_watch = 'MinimWatch-0.8.5.2-macos.dmg';
linux_intel_watch = 'MinimWatch-0.8.5.2-linux-intel.tar.gz';
linux_x86_watch = 'MinimWatch-0.8.5.2-linux-intel.tar.gz';
linux_x64_watch = 'MinimWatch-0.8.5.2-linux-intel.tar.gz';
linux_arm_watch = 'MinimWatch-0.8.5.2-linux-arm.tar.gz';
linux_armhf_watch = 'MinimWatch-0.8.5.2-linux-armhf.tar.gz';
linux_arm64_watch = 'MinimWatch-0.8.5.2-linux-armhf.tar.gz';
linux_ppc_watch = 'MinimWatch-0.8.5.2-linux-ppc.tar.gz';
if (window.opener.location.hostname === 'minimserver.com' && location.search.substring(0, 4) === '?fn=') {
var locationHref1a = 'http://jminim.com/abra';
var locationHref1b = 'http://jminim.com/brac';
var locationHref1c = 'http://jminim.com/cada';
var locationHref2 = '/' + location.search.substring(4);
var downloadName = location.search.substring(4);
} else {
var locationHref1a = window.opener.location.pathname + location.search;
var locationHref1b = window.opener.location.pathname + location.search;
var locationHref1c = window.opener.location.pathname + location.search;
var locationHref2 = '';
var downloadName = windows_x86_server;
}
3カ所あるディレクトリを適当に選んで、自分でURLを適切に組みあわせれば良い.
"http://jminim.com/cada/MinimServer-0.8.5.2-linux-intel.tar.gz"
MinimServerをダウンロードしたら、sudo 権限のあるアカウントのホームディレクトリ配下に適当な名前のディレクトリを作成し、そこにダウンロードしたMinimServerを展開しておく."root" アカウントを使って適当なディレクトリ配下でもMinimServerを動かすことは可能だが、MinimServerのsetupスクリプトなどは、sudo権限を持つユーザの配下で動かすことを前提に作成してあるので、面倒な調整をしたくなければユーザのホームディレクトリ配下にMinimServerを展開することを薦める.MinimServerの実行権限も、sudo権限のあるユーザのプロセスとして実行されるので、セキュリティー面でもその方が好ましいだろう.
[yasuaki@server2 ~]$ ls -la
total 16
drwxr-xr-x. 4 yasuaki yasuaki 127 Jun 24 12:21 .
drwxr-xr-x. 4 root root 34 Jun 23 18:12 ..
-rw------- 1 yasuaki yasuaki 875 Jun 24 13:08 .bash_history
-rw-r--r--. 1 yasuaki yasuaki 18 Apr 11 09:53 .bash_logout
-rw-r--r--. 1 yasuaki yasuaki 193 Apr 11 09:53 .bash_profile
-rw-r--r--. 1 yasuaki yasuaki 231 Apr 11 09:53 .bashrc
drwxrwxr-x 3 yasuaki yasuaki 71 Jun 24 12:16 MinimServer
drwxrwxr-x 2 yasuaki yasuaki 40 Jun 24 12:21 .oracle_jre_usage
[yasuaki@server2 ~]$ cd Mi*
[yasuaki@server2 MinimServer]$ ls -la
total 2888
drwxrwxr-x 3 yasuaki yasuaki 71 Jun 24 12:16 .
drwxr-xr-x. 4 yasuaki yasuaki 127 Jun 24 12:21 ..
-rw-rw-r-- 1 yasuaki yasuaki 2953961 Dec 22 2017 MinimServer-0.8.5.2-linux-intel.tar.gz
[yasuaki@server2 MinimServer]$ tar xvzf MinimServer-0.8.5.2-linux-intel.tar.gz
minimserver/
minimserver/minimserver-0.8.5.2/
minimserver/minimserver-0.8.5.2/LICENSE.txt
minimserver/minimserver-0.8.5.2/lib/
minimserver/minimserver-0.8.5.2/lib/cacerts-17.9.zip
minimserver/minimserver-0.8.5.2/lib/minimserver-0.8.300.jar
minimserver/minimserver-0.8.5.2/lib/minim.jar
minimserver/minimserver-0.8.5.2/lib/mserver.jar
minimserver/minimserver-0.8.5.2/lib/minimscript$-0.8.300.jar
minimserver/minimserver-0.8.5.2/lib/ohnet(linux-intel)-1.17.2776.1.zip
minimserver/minimserver-0.8.5.2/lib/minimreader-0.8.200.jar
minimserver/minimserver-0.8.5.2/lib/minimlaunch$-0.7.200.jar
minimserver/minimserver-0.8.5.2/lib/jminim-0.7.202.jar
minimserver/minimserver-0.8.5.2/lib/minimui-0.8.300.jar
minimserver/minimserver-0.8.5.2/lib/minimserver-0.8.5.2.jmpkg
minimserver/minimserver-0.8.5.2/lib/mscript.jar
minimserver/minimserver-0.8.5.2/bin/
minimserver/minimserver-0.8.5.2/bin/scriptdemo.sh
minimserver/minimserver-0.8.5.2/bin/uninstall
minimserver/minimserver-0.8.5.2/bin/mscript
minimserver/minimserver-0.8.5.2/bin/startd
minimserver/minimserver-0.8.5.2/bin/stopall
minimserver/minimserver-0.8.5.2/bin/starti
minimserver/minimserver-0.8.5.2/bin/startc
minimserver/minimserver-0.8.5.2/bin/setup
minimserver/minimserver-0.8.5.2/bin/update
minimserver/minimserver-0.8.5.2/icons/
minimserver/minimserver-0.8.5.2/icons/server48.png
minimserver/data/
minimserver/libsys/
minimserver/opt/
minimserver/opt/bin/
minimserver/etc/
minimserver/lib
minimserver/libext/
minimserver/bin
minimserver/icons
[yasuaki@server2 MinimServer]$ ls -la
total 2888
drwxrwxr-x 3 yasuaki yasuaki 71 Jun 24 13:10 .
drwxr-xr-x. 4 yasuaki yasuaki 127 Jun 24 12:21 ..
drwxr-xr-x 8 yasuaki yasuaki 130 Dec 22 2017 minimserver
-rw-rw-r-- 1 yasuaki yasuaki 2953961 Dec 22 2017 MinimServer-0.8.5.2-linux-intel.tar.gz
[yasuaki@server2 MinimServer]$ cd minimserver
[yasuaki@server2 minimserver]$ ls -la
total 0
drwxr-xr-x 8 yasuaki yasuaki 130 Dec 22 2017 .
drwxrwxr-x 3 yasuaki yasuaki 71 Jun 24 13:10 ..
lrwxrwxrwx 1 yasuaki yasuaki 23 Dec 22 2017 bin -> minimserver-0.8.5.2/bin
drwxr-xr-x 2 yasuaki yasuaki 6 Dec 22 2017 data
drwxr-xr-x 2 yasuaki yasuaki 6 Dec 22 2017 etc
lrwxrwxrwx 1 yasuaki yasuaki 25 Dec 22 2017 icons -> minimserver-0.8.5.2/icons
lrwxrwxrwx 1 yasuaki yasuaki 23 Dec 22 2017 lib -> minimserver-0.8.5.2/lib
drwxr-xr-x 2 yasuaki yasuaki 6 Dec 22 2017 libext
drwxr-xr-x 2 yasuaki yasuaki 6 Dec 22 2017 libsys
drwxr-xr-x 5 yasuaki yasuaki 60 Dec 22 2017 minimserver-0.8.5.2
drwxr-xr-x 3 yasuaki yasuaki 17 Dec 22 2017 opt
[yasuaki@server2 minimserver]$ ./minimserver-0.8.5.2/bin/setup <=== MinimServerの初期環境設定
MinimServer desktop integration is not available
MinimServer automatic startup is disabled
Do you want to change these settings (y/n)?
y
Enable automatic startup for MinimServer (y/n)?
y
Acquiring root privilege for system configuration update...
[sudo] password for yasuaki:
Created symlink from /etc/systemd/system/multi-user.target.wants/minimserver.service to /usr/lib/systemd/system/minimserver.service.
MinimServer automatic startup has been enabled
[yasuaki@server2 minimserver]$ cat /usr/lib/systemd/system/minimserver.service <=== 自動起動の設定内容を確認
[Unit]
Description=MinimServer
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/su "yasuaki" -c "/home/yasuaki/MinimServer/minimserver/bin/startd init"
ExecStop=/home/yasuaki/MinimServer/minimserver/bin/stopall
[Install]
WantedBy=multi-user.target
[yasuaki@server2 minimserver]$
[yasuaki@server2 minimserver]$ sudo systemctl status minimserver
● minimserver.service - MinimServer
Loaded: loaded (/usr/lib/systemd/system/minimserver.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[yasuaki@server2 minimserver]$ sudo systemctl enable minimserver <=== OS起動時に自動起動するように設定
[yasuaki@server2 minimserver]$ sudo systemctl status minimserver
● minimserver.service - MinimServer
Loaded: loaded (/usr/lib/systemd/system/minimserver.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[yasuaki@server2 minimserver]$
再起動時にMinimServerが自動で起動されることを確認しておく
[yasuaki@server2 minimserver]$ sudo reboot
Connection to 192.168.100.12 closed by remote host.
Connection to 192.168.100.12 closed.
iMac27:CentOS yasuaki$ ssh 192.168.100.12
yasuaki@192.168.100.12's password:
Last login: Sun Jun 24 13:15:10 2018
[yasuaki@server2 ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 19.1 0.1 43576 3904 ? Ss 13:14 0:04 /usr/lib/systemd/systemd --switched-root --system
root 2 0.0 0.0 0 0 ? S 13:14 0:00 [kthreadd]
root 3 0.1 0.0 0 0 ? S 13:14 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 13:14 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 13:14 0:00 [kworker/0:0H]
...【途中省略】
root 663 0.0 0.0 45924 544 ? Ss 13:14 0:00 /usr/sbin/rpc.idmapd
dbus 684 2.1 0.0 58196 2304 ? Ss 13:14 0:00 /usr/bin/dbus-daemon --system --address=systemd: -
rpc 685 0.8 0.0 69220 1440 ? Ss 13:14 0:00 /sbin/rpcbind -w
root 689 4.4 0.2 478724 11476 ? Ssl 13:14 0:00 /usr/sbin/NetworkManager --no-daemon
root 690 0.1 0.0 21656 1232 ? Ss 13:14 0:00 /usr/sbin/irqbalance --foreground
root 691 0.0 0.1 195084 5940 ? Ssl 13:14 0:00 /usr/sbin/gssproxy -D
polkitd 692 0.6 0.2 538432 10060 ? Ssl 13:14 0:00 /usr/lib/polkit-1/polkitd --no-debug
root 696 0.3 0.0 26376 1736 ? Ss 13:14 0:00 /usr/lib/systemd/systemd-logind
chrony 704 0.3 0.0 120348 2080 ? S 13:14 0:00 /usr/sbin/chronyd
root 720 0.0 0.0 126284 1572 ? Ss 13:14 0:00 /usr/sbin/crond -n
root 727 0.0 0.0 110088 860 ttyS0 Ss+ 13:14 0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 v
root 728 0.0 0.0 110088 848 tty1 Ss+ 13:14 0:00 /sbin/agetty --noclear tty1 linux
root 732 0.1 0.0 21920 1268 ? Ss 13:14 0:00 /usr/lib/systemd/systemd-hostnamed
root 733 0.5 0.1 227200 4312 ? Ssl 13:14 0:00 /usr/libexec/nm-dispatcher
root 765 0.0 0.0 0 0 ? S< 13:15 0:00 [kworker/1:1H]
root 971 0.6 0.1 112812 4284 ? Ss 13:15 0:00 /usr/sbin/sshd -D
root 978 13.1 0.4 573848 17048 ? Ssl 13:15 0:01 /usr/bin/python -Es /usr/sbin/tuned -l -P
root 979 4.6 0.1 222716 5668 ? Ssl 13:15 0:00 /usr/sbin/rsyslogd -n
rpcuser 980 1.1 0.0 42420 1756 ? Ss 13:15 0:00 /usr/sbin/rpc.statd
root 1023 0.1 0.0 43708 2384 ? Ss 13:15 0:00 /usr/sbin/rpc.mountd
root 1066 0.0 0.0 0 0 ? S< 13:15 0:00 [nfsd4_callbacks]
root 1067 0.0 0.0 0 0 ? S 13:15 0:00 [lockd]
root 1075 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1076 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1081 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1082 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1084 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1085 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1086 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1088 0.0 0.0 0 0 ? S 13:15 0:00 [nfsd]
root 1105 3.4 0.1 161416 6092 ? Ss 13:15 0:00 sshd: yasuaki [priv]
dhcpd 1150 1.0 0.2 112588 8384 ? Ss 13:15 0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user
root 1436 1.6 0.0 89632 2084 ? Ss 13:15 0:00 /usr/libexec/postfix/master -w
postfix 1437 0.6 0.1 89736 4056 ? S 13:15 0:00 pickup -l -t unix -u
postfix 1438 0.6 0.1 89804 4076 ? S 13:15 0:00 qmgr -l -t unix -u
yasuaki 1472 0.0 0.0 113176 872 ? S 13:15 0:00 /bin/sh /home/yasuaki/MinimServer/minimserver/bin/
yasuaki 1476 100 1.5 3686468 58204 ? Sl 13:15 0:05 java -jar /home/yasuaki/MinimServer/minimserver/li
yasuaki 1547 1.0 0.0 161416 2332 ? S 13:15 0:00 sshd: yasuaki@pts/0
yasuaki 1548 1.3 0.0 115436 1996 pts/0 Ss 13:15 0:00 -bash
yasuaki 1578 0.0 0.0 155324 1864 pts/0 R+ 13:15 0:00 ps -aux
[yasuaki@server2 ~]$
プロセスリストの下から4行目が "MinimServer" の実行プロセスで、ユーザ権限で実行されていることが確認できる.MinimServerが無事起動できたら、WEBブラウザで MinimServerの管理画面にアクセスし、初期環境設定を済ませておく.
MinimServerの管理ポート(http:9790)にWEBブラウザでアクセスする
"Content directory" 欄にミュージックデータが置かれているディレクトリを指定する
MinimServerが "Running" 状態になっていることを確認
ミュージックデータをコンテンツ格納ディレクトリ配下にコピーする
Linn KinskyなどのUPnP(DLNA)/OpenHome対応クライアントから MinimServerが見えている事を確認
Kinskyでアルバム表示させてみる
以上で、APU2C4によるUPnP(DLNA)/OpenHomeミュージックサーバの環境構築は終了である.音楽データファイルの更新が有った場合は、MinimServerの管理画面で "Rescan" 作業を行えば良い.今回の作業で一番難しいのは、APU2C4へのヘッドレス環境でのOSインストール作業だろうか.そこさえクリアできれば後はそれなりのLinuxのスキルがあれば大丈夫だろう.
単純なUPnP(DLNA)/OpenHomeミュージックサーバが必要なだけならば、こんな面倒な事をせずにQNAPやSynologyなどのNAS製品で十分事足りるので、自作大好き人間以外にはとてもお薦めできない内容になってしまった...
とても長い記事になってしまったが、次回(その2)は余っているAPU2C4のセカンドポートを利用して、mpdクライアントをノイジーなホームネットワークから分離し、綺麗なネットワーク接続環境を提供するための、ネットワーク分離について紹介することにする.
最終回(その3)ではネットワークルータ機能を組み込んで、ミュージックネットワークを分離したついでに、mpdクライアントをUPnP経由でコントロールすることが可能となる "upmpdlient" をAPU2C4上で稼働させ、APU2C41台でオールインワンミュージックサーバ化を試みることにする.
当初はAPU2C4上の物理OSであるCentOS7配下で直接"upmpdlient" を稼働させようとしたが、ソースプログラムからのコンパイルで問題が生じたので、CentOS7配下での直接稼働は諦めて、KVM仮想環境下でDebian OS をゲストOSとして立ち上げ、"upmpdlient" を稼働させる方法を紹介する.KVM仮想環境下で別なOSを稼働させるには、Linuxサーバに精通していなければ無理なので、一般的なオーディオマニアには敷居が高いが頑張って挑戦して見て欲しい.
2ndネットワークポートを使って、mpdクライアントのネットワークを分離する