NewCS server op een PC met ubuntu

Van MythTV.nl Wiki

Ga naar: navigatie, zoek

Hier volgt een korte omschrijving om een NewCS server op te zetten op een linux machine die draait onder Ubuntu.

Download het zip bestand met de NewCS binaries (helaas is NewCS geen opensource).

Pak deze zip uit in de home directory. Dan zie je de volgende directory structuur:

  • newcs-1.62
    • bin -- directory met de binaries
    • configs -- directory met configuratie voorbeelden
    • win32 -- voor de windows gebruikers onder ons

Tevens vind je 2 bestanden in de newcs direcotry:

  • newcs-default.xml -- default configuratie bestand met extra uitleg
  • readme.txt -- zoals de naam al zegt: lees dit door

Voor ubuntu hebben we 1 bin en 1 config bestand nodig. NewCS server met ubuntu De binary die we nodig hebben is de newcs.i686.

Om te zorgen dat deze binaries niet tussen de "standaard" binaries van ubuntu komt te staan copieeren we deze naar /usr/local/bin en voor de duidenlijkheid hernoemen we het bestand naar newcs.

sudo cp newcs-1.62/bin/newcs.i686 /usr/local/bin/newcs

Binnen ubuntu staan de meeste configuratie bestanden onder de /etc direcotry in hun eigen directory. Dus voor newcs maken we ook een eigen directory aan onder /etc

mkdir /etc/newcs


en daar plaatsen we de default newcs-default.xml bestand in en hernoemen dit naar newcs.xml

sudo cp newcs-1.62/newcs-default.xml /etc/newcs/newcs.xml

Om newcs te starten kan je nu het volgende doen:

  • newcs -c /etc/newcs/newcs.xml

Hoogstwaarschijnlijk krijg je een aantal errors over het scherm heen gerold.

Omdat NewCS geen opensource software is weten we niet precies wat de software allemaal doet is het beter om een nieuwe gebruiker aan te maken met beperkte rechten en die gebruiker de newcs binary laten draaien.

je kan deze gebruiker toevoegen via de normale user admin tools. Vergeet niet de nieuwe gebruiker rechten te geven tot de cardreader (dialout group)

sudo adduser --system --group newcs
sudo usermod -a -G dialout newcs

Omdat we nu een newcs gebruiker hebben is het handig om de config bestanden ook eigendom te maken van deze gebruiker

sudo chown newcs:newcs /etc/newcs
sudo chown newcs:newcs /etc/newcs/newcs.xml

Ook een mooie init.d startup file is handig. Hier onder staat een voorbeeld van een startup file:


#! /bin/sh
# Author: eldon <eldon @ www.eurocardsharing.com>
# based on a basic debian skeleton startup script

# START EDIT HERE #
NCSNAME=newcs			# your newcs bin version
NCSDIR="/usr/local/bin"	        # your newcs binary directory full path (without trailing /).
NCSCONF="/etc/newcs/newcs.xml"	# xml config full path
NCSUSER=newcs			# existing user that will run newcs daemon (you should NOT use root !).
NCSNICE=10			# set the newcs daemon priority -20 (most favorable scheduling) to 19 (least favorable).
# END EDIT HERE #

PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin	# some unecessary default paths
DESC="NewCS daemon"		# dummy description
NAME=newcs			# dummy name
DAEMON="$NCSDIR/$NCSNAME"	# Daemon bin location
DAEMON_ARGS="-nd -c $NCSCONF"	# Keep -nd in place, ssd will fork to background itself (required to get a proper pid file)
PIDFILE=/var/run/$NAME.pid	# pid path
LOG=/var/log/$NAME/$NAME.log	# log path
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
if [ ! -x "$DAEMON" ]
then
	echo "$DAEMON does not exist"
	exit 0
fi	

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	start-stop-daemon --start --quiet --chuid $NCSUSER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	
	start-stop-daemon --start --verbose --nicelevel $NCSNICE --make-pidfile --background --chuid $NCSUSER --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS 2>&1 >> $LOG \
		|| return 2

	# Add code here, if necessary, that waits for the process to be ready
	# to handle requests from services started subsequently which depend
	# on this one.  As a last resort, sleep for some time.

	return $?
}

#
# Function that stops the daemon/service
#
do_stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NCSNAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"
}


case "$1" in
  start)
	echo "Starting $DESC"
	do_start
	case "$?" in
		0)	log_daemon_msg "Success"
			log_end_msg 0;;
		1)	log_daemon_msg "Already running"
			log_end_msg 1;;
		2) 	log_daemon_msg "Failed"
			log_end_msg 2;;
	esac
	;;
  stop)
	echo "Stopping $DESC"
	do_stop
	case "$?" in
		0|1) echo "Success" ;;
		2) echo "Failed !" ;;
	esac
	;;
  restart)
	log_daemon_msg "Restarting $DESC"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
	  	# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
	exit 3
	;;
esac

En nu moeten we zorgen dat newcs wordt opgestart als de PC reboot

sudo chmod 755 /etc/init.d/newcs
sudo update-rc.d newcs defaults 19

newcs wil een (lege) log file wegschrijven op /var/log/newcs/newcs.log maar die directory moet dan wel bestaan en schrijfbaar zijn voor de newcs gebruiker

sudo mkdir /var/log/newcs
sudo chown newcs:newcs /var/log/newcs
sudo chmod 2775 /var/log/newcs
Aspecten/acties
Persoonlijke instellingen