User Tools

Site Tools


howto:linux:install:centos

This is an old revision of the document!


Based on Fedora Installation Guide and help from will on the forums.

This was tested on CentOS 6.3 (Final)

Prerequisites

  • Java
    yum install java-1.6.0-openjdk

1.Download Serviio

wget http://download.serviio.org/releases/serviio-1.0-linux.tar.gz

2.Extract Serviio

tar -C /opt -zxvf serviio-1.0-linux.tar.gz
mv /opt/serviio-1.0 /opt/serviio

3.Create Serviio's user

useradd -d /opt/serviio -r serviio
chown -R serviio:serviio /opt/serviio

4. Init.d script

Create the initscript /etc/init.d/serviio with the following code:

#! /bin/sh
#
# chkconfig 35 85 15
# description: Start the serviio DLNA server in headless mode
### BEGIN INIT INFO
# Provides: serviio
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start the serviio DLNA server in headless mode
### END INIT INFO

SERVIIO_HOME="/opt/serviio"
SERVIIO_DAEMON="serviio.sh"
SERVIIO_BIN="$SERVIIO_HOME/bin/$SERVIIO_DAEMON"
SERVIIO_USER="serviio"

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

check() {
        # Check that we're a privileged user
        [ $(id -u) = 0 ] || exit 4

        # Check if SERVIIO_HOME exists
        test -d "$SERVIIO_HOME" || exit 5

        # Check if SERVIIO_BIN is executable
        test -x "$SERVIIO_BIN" || exit 5
}

start() {
        check
        echo -n "Starting Serviio DLNA server: "
	/bin/su --session-command="$SERVIIO_BIN -headless" $SERVIIO_USER &
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
            touch /var/lock/subsys/serviio.sh
            echo_success
        else
            echo_failure
        fi
        echo
        return $RETVAL
}

stop() {
    check
    echo -n "Shutting down Serviio DLNA daemon: "
    # Retrieve JAVA Serviio process ID
    PIDDAEMON=`pgrep $SERVIIO_DAEMON`
    [ -z "$PIDDAEMON" ] || PIDJAVA=`ps -o pid= --ppid $PIDDAEMON`
    # Kill the daemon
    killproc "$SERVIIO_BIN"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/serviio.sh
    echo
    # Kill the JAVA Serviio process if exists
    [ -z "$PIDJAVA" ] || kill -9 $PIDJAVA
    return $RETVAL
}

restart() {
        stop
        start
}


case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
force-reload)
        restart
        ;;
restart)
        restart
        ;;
condrestart)
        if [ -f /var/lock/subsys/serviio.sh ]; then
            restart
        fi
        ;;
status)
        status serviio.sh
        ;;
*)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|force-reload}"
        RETVAL=2
esac

exit $RETVAL

5. Enable service

chmod +x /etc/init.d/serviio
chkconfig --add serviio
chkconfig serviio on

6. Start Serviio

service serviio start

7. Stop Serviio

service serviio stop

8. IP Tables rules

(I added these to my firewall.sh I run every time I update iptables, if you use another firewall just make sure the correct ports are open)

iptables -A INPUT -p udp -m udp --dport 1900 -j ACCEPT -m comment --comment "Serviio"
iptables -A INPUT -p tcp --dport 8895 -j ACCEPT -m comment --comment "Serviio"
iptables -A INPUT -p tcp --dport 23423 -j ACCEPT -m comment --comment "Serviio"
iptables -A INPUT -p tcp --dport 23424 -j ACCEPT -m comment --comment "Serviio"

9. Rebuild ffmpeg

As per Building FFmpeg on Linux but edited slightly for CentOS:

  • Remove packages, adand install essential build packages for later
    yum remove x264 ffmpeg -y
    yum install git libfaac-devel libmp3lame-devel libtheora-devel \
    libva-devel libvdpau-devel libvorbis-devel libX11-devel libXfixes-devel texi2html yasm \
    libxvidcore-devel  libXext-devel libXfixes-devel librtmp-devel -y
  • x264 (optional)
    cd ~
    mkdir src
    cd src
    git clone git://git.videolan.org/x264
    cd x264
    ./configure --enable-static --prefix=/usr
    make fprofiled
    make install
  • Libvpx< (optional)code>cd ~/src

git clone http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure
make install</code>

  • rtmpdump
    cd ~/src
    git clone git://git.ffmpeg.org/rtmpdump
    cd rtmpdump
    make SYS=posix

Some of the above libraries are optional, if you don't build them, remember to remove the equivilant –enable-libXXX from ./configure below.

  • ffmpeg
    cd ~/src
    wget http://download.serviio.org/opensource/ffmpeg-N-42368-gbf53863.tar.gz
    tar xvf ffmpeg-N-42368-gbf53863.tar.gz
    cd ffmpeg
    ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libtheora \
     --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 \
    --enable-x11grab --enable-libvpx --enable-librtmp --enable-libxvid
    make
    make fprofiled
    make install
  • Add the ffmpeg location to /opt/serviio/bin/serviio.sh by updating the following line with the -Dffmpeg.location e.g.:
# Setup Serviio specific properties
JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dderby.system.home=$SERVIIO_HOME/library -Dserviio.home=$SERVIIO_HOME -Dffmpeg.location=/usr/local/bin/ffmpeg"
howto/linux/install/centos.1346613469.txt.gz · Last modified: 2012/09/02 19:17 by will