Raspberry Pi'ye Serviio medya sunucusu nasıl kurulur
Amaç
Raspberry Pi'ye Serviio medya servisini kurunGereksinimler
- Raspbian "Stretch" çalışan bir kurulum ile bir Raspberry Pi
- Kök ayrıcalıkları
zorluk
KOLAYSözleşmeler
- # - verilen linux komutlarının doğrudan kök kullanıcı olarak veya
sudo
komut kullanılarak kök ayrıcalıklarıyla yürütülmesini gerektirir - $ - verilen linux komutlarının normal ayrıcalıksız kullanıcı olarak yürütülmesini gerektirir
Giriş
Serviio, java ile yazılmış bir medya sunucusudur. İki sürümü vardır: ücretsiz (maalesef bira gibi ücretsiz) ve uzaktan erişim gibi bazı ek özelliklerle birlikte gelen "pro" sürümü. Bu derste, Raspbian "Stretch" in minimal versiyonlarını çalıştıran bir Raspberry Pi üzerine Serviio kurulumu ele alınacaktır.Bağımlılıkları yükleme
Serviio java ile yazılmıştır, bu nedenle java geliştirme kitini kullanabilmemiz gerekir. Raspbian Stretch depolarında JDK'nın iki sürümü vardır:GPLv2
lisans altında yayınlanan açık kaynaklı sürüm OpenJDK
ve Oracle'ın ticari, tescilli sürümü (paket aslında oracle-java8-jdk olarak adlandırılır). Her ikisi de doğru bir şekilde çalışmalıdır, ancak bu öğreticide birincisini kullanacağız.# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Serviio'yu al ve yükle
Şimdi gerekli tüm paketleri kurduğumuza göre, Serviio tarball'ı almalıyız: başsız bir makinede çalıştığımız içinwget
, görevi yerine getireceğiz . Bu nedenle:wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gzİndirme işlemi tamamlandıktan sonra, gerçek Serviio kurulumuna geçebiliriz. Tarball'ın içeriğini
/opt
dizinin içine çıkaracağız : açıkçası başka bir tane seçebilirsiniz, ancak / opt geleneksel olarak bağımsız üçüncü taraf uygulamalarını barındırmak için kullanılır. Devam edelim:# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
-C
(Kısaca opsiyon --directory
) işlemlerini gerçekleştirmeden önce, verilen birine değişim dizinine tar talimatını verir.Serviio için systemd hizmetini oluşturma
Şimdi Serviio yüklendiğine göre,/opt/serviio-1.9/bin
dizinin içinde iki komut dosyasının olduğunu gözlemleyebilirsiniz
: serviio.sh
ve serviio-console.sh. Birincisi sunucuyu başlatırken ikincisi onu kontrol etmek için arayüz.Bu noktada, sistem önyüklendiğinde serviio'yu başlatmak için systemd hizmetini yaratmamız için gereken her şeye sahibiz. Bu görevi gerçekleştirmek için küçük bir hizmet dosyası yazmamız gerekir. Bildiğiniz gibi, systemd şimdi tüm büyük dağıtımlar tarafından benimsenen yeni linux init sistemidir. Açık kaynak topluluğundaki birçok tartışmanın kaynağı olmuştur, ancak şüphesiz standart haline gelmiştir. Hizmeti oluşturmak için en sevdiğiniz düzenleyiciyi çalıştırın ve aşağıdaki metni içeren serviio.service adlı bir dosya oluşturun:
[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
Bir systemd hizmet dosyasının sözdizimini açıklamak bu öğreticinin amacı değildir, ancak lütfen User=serviio
talimatı içeren satıra dikkat edin . Bununla elde etmek istediğimiz şey, daemon'un serviio
güvenlik nedeniyle kök olarak değil kullanıcı ayrıcalıklarıyla çalışması gerektiğini belirtmektir . serviio
Kullanıcı henüz, o yüzden onu oluşturup ona /opt/serviio-1.9 dizin ve içindeki tüm dosyaların sahipliğini verelim yok:# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9Muhtemelen
useradd
komutu biliyorsunuzdur, ancak netlik sağlamak için sağlanan seçeneklerin ne için olduğunu belirtelim.
-r
Seçenek bir oluşturmak istediğinizi belirtir system account
. Sistem hesaplarında yaşlanma bilgisi yoktur ve uid
değeri <1000; bu tür hesaplar için giriş dizini oluşturulmaz. Bu -U
seçenek, programa kullanıcı ile aynı ada sahip bir grup oluşturmasını ve kullanıcıyı otomatik olarak söz konusu gruba eklemesini bildirir. Son olarak
-s
, kullanıcı için kabuğu belirledik. Bu durumda kullandığımız /sbin/nologin
a fake shell
. Güvenlik nedenleriyle kullandık: bu şekilde, hizmet olarak çalışan kullanıcı hiçbir zaman komutları çalıştırmak için gerçek bir kabuk kullanamaz.Biz buradayız: serviio kullanıcısını oluşturduk ve servis dosyamızı yazdık. Şimdi
/usr/systemd/system
dizine kopyalamalıyız :# cp serviio.service /etc/systemd/systemŞimdi çalıştırdığımız hizmeti etkinleştirmek için:
# systemctl enable serviio.serviceŞimdi sistemi yeniden başlatın: her şey yolunda giderse, önyükleme işlemi tamamlandığında serviio hizmeti zaten etkin olacaktır. Durumunu aşağıdakileri çalıştırarak doğrulayabilirsiniz:
$ systemctl status serviio.serviceSystemd sizi arka plan programının durumu hakkında bilgilendirir, örneğin:
● 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 [...]Gördüğünüz gibi hizmet aktif ve çalışıyor, bu yüzden hepsi beklendiği gibi gitti. Bir şeyler ters giderse ve hizmetin başlatılmasında sorun varsa, sorunları çözmek için aynı komut tarafından sağlanan günlükleri kullanabilirsiniz.
Eğer makinenize yapmanız gerekir ayrıca açık portlar üzerinde bir güvenlik duvarı çalıştırıyorsanız
8895/tcp
,
1900/udp
, 23423/tcp
ve 23424/tcp
. Konsolu kontrol etmek ve aracıya erişmek için sırasıyla son iki bağlantı noktasına ihtiyaç vardırKontrol servisi
Serviio'yu kontrol etmek için birkaç seçeneğimiz var. Başsız bir makinede çalıştığımız için, grafik konsoluna erişemiyoruz, ancak web arayüzünehttp://yourmachineip:23423/console/
aynı landaki başka bir makineden gidebilir veya android uygulaması "ServiiDroid" gibi üçüncü taraf uygulamaları kullanabiliriz.Olası seçeneklerin tam listesi burada mevcuttur:
http://serviio.org/apps"
. Serviio'nun "pro" sürümünü çalıştırıyorsanız, adresinize erişilebilen entegre mediabrowser'ı kullanarak kataloğunuzu da keşfedebileceksiniz http://yourmachineip:23424/mediabrowser/
.