Running CTP as a Linux Service

From MircWiki
Jump to navigation Jump to search

1 How to install MIRC-Zn on Ubuntu Linux

  • Download the script
wget http://timphillips.net/mirc/install-MIRC-Zn.txt
  • Make it executable
mv ./install-MIRC-Zn.txt ./install-MIRC-Zn
chmod 777 ./install-MIRC-Zn
  • Run the script
./install-MIRC-Zn

1.1 What the script does

  • Checks you're running it as root or using sudo.
  • Stops the MIRC-Zn service if its running.
  • Checks which chipset you're running.
  • Enables the ubuntu partner repo (to get Oracle Java).
  • Answers the Java installation questions in advance.
  • Installs SunJava and a few other necessary applications.
  • Downloads the appropriate JAI ImageIO files installs JAI ImageIO.
  • Downloads the latest version of MIRC-Zn.
  • Writes an upstart script (so that CTP/MIRC will be run as a service automatically).
  • Installs RSNA MIRC.

1.2 The script itself (in case you don't trust the download)

#!/bin/bash

# Make sure only root can run our script
if $EUID -ne 0 ; then
echo "This script must be run as root or using sudo" 1>&2
exit 1
fi

# Stop MIRC-Zn if it is running
if [ -f /etc/init/MIRC-Zn.conf ]
then
if [[ $(stop -q MIRC-Zn 2>&1 | grep Unknown) ]]
then
echo 'MIRC-Zn service not currently running ...'
echo 'MIRC-Zn will be upgraded with the latest version from the RSNA site ...'
else
echo 'Stopping current MIRC-Zn service ...'
echo 'MIRC-Zn will be upgraded with the latest version from the RSNA site ...'
fi
fi

#reassure the user something is happening
echo 'Updating Ubuntu repositories ...'

#work in the temp folder
cd /var/tmp

#check which chipset we're using
case $(arch) in
i686)
CHIP=i586
;;
x86_64)
CHIP=amd64
;;
*)
;;
esac

# partner repo
echo deb http://archive.canonical.com/ lucid partner >>/etc/apt/sources.list.d/partner.list
apt-get -qq update

# preset the java answers:
debconf-set-selections << END
sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true
END

#reassure the user something is happening
echo 'Downloading and installing required ubuntu packages ...'

# packages installed:
apt-get install -y -qq acpid htop unzip xauth libxtst6 sun-java6-jdk

# if a previous version is here - get rid of it
cd /usr/lib/jvm/java-6-sun/
if [ -f UNINSTALL-jai_imageio ]; then
echo 'Removing previous install of JAI ImageIO ...'
bash UNINSTALL-jai_imageio
fi

#work in the temp folder
cd /var/tmp

#check which chipset we're using
case $(arch) in
i686)
CHIP=i586
CHIP2=i386
;;
x86_64)
CHIP=amd64
CHIP2=amd64
;;
*)
;;
esac

#reassure the user something is happening
echo 'Downloading JAI Image IO ...'

#download the JAI tgz file
# get jai binary
if [ -f ./jai_imageio-1_1-lib-linux-$CHIP.tar.gz ]; then
rm ./jai_imageio-1_1-lib-linux-$CHIP.tar.gz
fi
wget -q http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-$CHIP.tar.gz

#reassure the user something is happening
echo 'Installing JAI Image IO ...'

#expand the tgz and put the files where they should go (excluding UNINSTALL)
tar xzf ./jai_imageio-1_1-lib-linux-$CHIP.tar.gz
mv ./jai_imageio-1_1/*.txt /usr/lib/jvm/java-6-sun/
mv ./jai_imageio-1_1/lib/libclib_jiio.so /usr/lib/jvm/java-6-sun/jre/lib/$CHIP2/
mv ./jai_imageio-1_1/lib/*.jar /usr/lib/jvm/java-6-sun/jre/lib/ext/

#generate the UNINSTALL file - using the version that comes in the binary install
cat > /usr/lib/jvm/java-6-sun/UNINSTALL-jai_imageio <<DELIM
#!/bin/sh
# @(#)UNINSTALL-jai_imageio-jdk 3.1 06/05/12 16:18:39
# usage: UNINSTALL-jai_imageio

echo "Uninstalling Java Advanced Imaging Image I/O Tools"

rm -f *jai_imageio.txt
rm -f jre/lib/ext/jai_imageio.jar
rm -f jre/lib/ext/clibwrapper_jiio.jar
if [ ( `uname` = "SunOS" ) -a ( `uname -p` = "sparc" ) ]; then
rm -f jre/lib/sparc/libclib_jiio.so
rm -f jre/lib/sparc/libclib_jiio_vis.so
rm -f jre/lib/sparc/libclib_jiio_vis2.so

if [ -f jre/lib/sparcv9/libclib_jiio.so ]; then
rm -f jre/lib/sparcv9/libclib_jiio.so
rm -f jre/lib/sparcv9/libclib_jiio_vis.so
rm -f jre/lib/sparcv9/libclib_jiio_vis2.so
fi
fi
if [ -f jre/lib/amd64/libclib_jiio.so ]; then
rm -f jre/lib/amd64/libclib_jiio.so
fi
if [ -f jre/lib/i386/libclib_jiio.so ]; then
rm -f jre/lib/i386/libclib_jiio.so
fi
rm -f UNINSTALL-jai_imageio

echo "Done"
DELIM

#reassure the user something is happening
echo 'Downloading RSNA MIRC Installer ...'

# go to the target folder
cd /usr/share

# get MIRC installer
if [ -f ./MIRC-installer.jar ]; then
rm ./MIRC-installer.jar
fi
wget -q http://mirc.rsna.org/MIRC2/MIRC-installer.jar

#reassure the user something is happening
echo 'Writing an upstart script and putting it in /etc/init ...'

# make an upstart script
cat > /etc/init/MIRC-Zn.conf <<DELIM
description "MIRC Zn (CTP plugin not Tomcat)"
author "Tim Phillips <timothy.john.phillips@gmail.com>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on stopping network-services

respawn

expect fork

script
cd /usr/share/CTP/
java -jar ./CTP-runner.jar
end script
DELIM

echo -e
echo -e
echo -e
echo 'Now the RSNA installer will run'
echo 'You will be asked to choose a folder to install CTP/MIRC into'
echo 'It should be /usr/share or the startup script wont work'
echo -e
echo 'hit enter to continue'
read dummy
echo -e
echo -e

if [[ $(java -jar ./MIRC-installer.jar 2>&1 | grep X11) ]]
then
# have to re-login with X forwarding
echo -e
echo '================================================'
echo 'NOT FINISHED YET!!!!'
echo '================================================'
echo -e
echo 'X-forwarding is required for the MIRC installer'
echo -e
echo 'Here is what you have to do'
echo ' - logout'
echo ' - login again from a machine with a GUI and a display....'
echo ' - using the switch to enable X forwarding'
echo ' - From a mac: ssh -Y user@host'
echo ' - From a linux desktop: ssh -X user@host'
echo ' - If you are using windows you will need PuTTy and Xming.. (google them)'
echo ' - When you are logged in again re-run this script'
else
cd ~
echo 'Starting MIRC web service (this will also happen automatically at boot) ...'
start MIRC-Zn
echo -e
echo 'finished - it should all be running'
echo 'point your browser to this server and have a look'
fi

2 Choosing between Ubuntu Desktop and Ubuntu Server

  • Ubuntu Desktop
    • Easier (very easy) if you're new to Linux.
    • May be very slightly slower but on modern hardware you are unlikely to notice the difference.
  • Ubuntu Server
    • Makes more sense - MIRC is a web service after all.
    • Will be leaner and faster.
    • Can run on a headless server or virtual machine.
    • TurnkeyLinux is a very good Ubuntu install for this purpose.
Any questions or comments please email me at timothy.john.phillips@gmail.com - Tim Phillips.