如何在Raspberry Pi上安装Serviio媒体服务器
目的
在Raspberry Pi上安装Serviio媒体服务要求
- 安装了Raspbian“ Stretch”的Raspberry Pi
- 根特权
困难
简单约定
介绍
Serviio是用Java编写的媒体服务器。它有两个版本:免费版(不幸的是像啤酒一样免费)和“专业版”,它具有一些其他功能,例如远程访问。在本教程中,我们将介绍在运行最低版本的Raspbian“ Stretch”的Raspberry Pi上安装Serviio的方法。安装依赖
Serviio用Java编写,因此我们必须安装Java开发套件才能使用它。Raspbian Stretch存储库中有两个JDK版本:在GPLv2
许可下发布的开源版本,称为OpenJDK
,以及Oracle的商业专有版本(该软件包实际上称为oracle-java8-jdk)。两者都应正常工作,但是在本教程中,我们将使用前者。# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
抓住并安装Serviio
现在,我们已经安装了所有必需的软件包,我们必须抓住Serviio tarball:由于我们在无头计算机上工作,因此我们将用来wget
完成任务。因此,我们运行:wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz下载完成后,我们可以继续进行实际的Serviio安装。我们将提取
/opt
目录中tarball的内容:显然,您可以选择另一个,但是/ opt通常用于承载自包含的第三方应用程序。让我们继续:# tar -xvzf serviio-1.9-linux.tar.gz -C /opt该
-C
(简称期权--directory
)指示tar将目录更改为给定的一个,在进行操作之前。为Serviio创建系统服务
现在已经安装了Serviio,您可以观察到/opt/serviio-1.9/bin
目录中存在两个脚本
:serviio.sh
和serviio-console.sh。第一个启动服务器,而第二个启动控制服务器的界面。至此,我们拥有创建systemd服务以在系统启动时启动serviio所需要的一切。要完成此任务,我们必须编写一个小的服务文件。如您所知,systemd是新的linux init系统,现在已被所有主要发行版采用。它已成为开源社区中许多讨论的源头,但无疑已成为标准。要创建服务,只需启动您喜欢的编辑器并创建一个名为serviio.service的文件,其中包含以下文本:
[Unit]
Description=Serviio media Server
After=syslog.target network.target
[Service]
User=serviio
ExecStart=/opt/serviio-1.9/bin/serviio.sh
ExecStop=/opt/serviio-1.9/bin/serviio.sh -stop
[Install]
WantedBy=multi-user.target
描述systemd服务文件的语法不是本教程的目的,但是请注意包含该User=serviio
指令的行。我们想要获得的是serviio
,出于安全原因,指定守护程序必须以用户特权而不是以root用户身份运行。该serviio
用户尚不存在,因此让我们创建它并为其赋予/opt/serviio-1.9目录及其中所有文件的所有权:# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9您可能熟悉该
useradd
命令,但是为了清楚起见,让我们指定提供的选项的用途。该
-r
选项指定我们要创建一个system account
。系统帐户没有帐龄信息,且a uid
的值小于1000;对于此类帐户,不会创建主目录。该-U
选项将指示程序也创建一个与用户同名的组,并将用户自动添加到该组中。最后使用
-s
,我们为用户指定了外壳。在这种情况下,我们使用/sbin/nologin
了fake shell
。我们出于安全原因使用它:这样,用户(服务运行时)将永远无法使用实际的shell运行命令。我们是:我们已经创建了serviio用户并编写了服务文件。现在我们必须将其复制到
/usr/systemd/system
目录中:# cp serviio.service /etc/systemd/system要启用该服务,我们现在运行:
# systemctl enable serviio.service现在,重新启动系统:如果一切顺利,启动过程完成后,serviio服务将已经处于活动状态。您可以通过运行以下命令来验证其状态:
$ systemctl status serviio.serviceSystemd将通知您有关守护程序的状态,例如:
● serviio.service - Serviio media Server Loaded: loaded (/etc/systemd/system/serviio.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-09-28 21:29:18 CEST; 31s ago Main PID: 420 (java) CGroup: /system.slice/serviio.service └─420 java -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -Djava.net.preferIPv4Stack=true [...]如您所见,该服务处于活动状态并且正在运行,因此一切都按预期进行。如果出现问题并且启动服务有问题,则可以使用同一命令提供的日志来解决问题。
如果您运行的机器,你还必须打开的端口在防火墙上
8895/tcp
,
1900/udp
,23423/tcp
和23424/tcp
。需要最后两个端口来分别控制控制台和访问媒体浏览器控制服务
为了控制伺服,我们几乎没有选择。由于我们在无头计算机上运行,因此无法访问图形控制台,但可以通过http://yourmachineip:23423/console/
从同一局域网中的另一台计算机导航到或使用第三方应用程序(例如android应用程序“ ServiiDroid”)来访问Web界面。此处提供了可能的选项的完整列表:
http://serviio.org/apps"
。如果您正在运行serviio的“专业版”,您还可以使用可以访问的集成媒体浏览器来浏览目录http://yourmachineip:23424/mediabrowser/
。