From 51627e627079a52a38fc651c2f476148419622dc Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Wed, 26 Nov 2014 16:35:13 -0500 Subject: [PATCH] More work on simple installer --- installer/airtime/airtime-copy-files.sh | 111 ++++++++++++++++++++++++ installer/airtime/airtime-initialize.sh | 67 ++++++++++++++ installer/install | 4 +- 3 files changed, 181 insertions(+), 1 deletion(-) create mode 100755 installer/airtime/airtime-copy-files.sh create mode 100755 installer/airtime/airtime-initialize.sh diff --git a/installer/airtime/airtime-copy-files.sh b/installer/airtime/airtime-copy-files.sh new file mode 100755 index 000000000..ced1786de --- /dev/null +++ b/installer/airtime/airtime-copy-files.sh @@ -0,0 +1,111 @@ +#!/bin/bash -e +#-e Causes bash script to exit if any of the installers +#return with a non-zero return value. + +if [[ $EUID -ne 0 ]]; then + echo "Please run as root user." + exit 1 +fi + +#copy files to +## /etc/airtime +#+ /etc/apache2/sites-available/airtime +#+ /etc/apache2/sites-enabled/airtime +## /etc/cron.d/ +## /etc/init.d/ +## /etc/monit/conf.d/ +# /usr/lib/airtime/airtime_virtualenv +## /usr/lib/airtime/api_clients +## /usr/lib/airtime/media-monitor +# /srv/airtime/stor +## /usr/lib/airtime/pypo +## /usr/lib/airtime/show-recorder +## /usr/lib/airtime/utils +## /usr/bin/airtime-* +## /usr/share/airtime +## /var/log/airtime +## /var/tmp/airtime + +# Absolute path to this script, e.g. /home/user/bin/foo.sh +SCRIPT=`readlink -f $0` +# Absolute path this script is in, thus /home/user/bin +SCRIPTPATH=`dirname $SCRIPT` + +AIRTIMEROOT=$SCRIPTPATH/../../ + +echo "* Creating /etc/airtime" +mkdir -p /etc/airtime +if [ ! -e /etc/airtime/airtime.conf ]; then + #config file airtime.conf exists, but Airtime is not installed + cp $AIRTIMEROOT/airtime_mvc/build/airtime.conf /etc/airtime +fi + +#if [ -e /etc/airtime/airtime.conf -a "$DO_UPGRADE" -eq "0" ]; then + #config file airtime.conf exists, but Airtime is not installed +# mv /etc/airtime/airtime.conf airtime.conf.bak +# cp $AIRTIMEROOT/airtime_mvc/build/airtime.conf /etc/airtime +#fi + + +echo "* Creating /etc/monit/conf.d/monit-airtime-generic.cfg" +mkdir -p /etc/monit/conf.d/ +if [ ! -e /etc/monit/conf.d/monit-airtime-generic.cfg ]; then + rm -f /etc/monit/conf.d/*airtime* + cp $AIRTIMEROOT/python_apps/monit/monit-airtime-generic.cfg /etc/monit/conf.d/ +fi + + +echo "* Creating /etc/cron.d/airtime-crons" +HOUR=$(($RANDOM%24)) +MIN=$(($RANDOM%60)) +echo "$MIN $HOUR * * * root /usr/lib/airtime/utils/phone_home_stat" > /etc/cron.d/airtime-crons + +echo "* Creating /usr/lib/airtime" +if [ "$python_service" -eq "0" ]; then + python $AIRTIMEROOT/python_apps/api_clients/install/api_client_install.py + + if [ "$mediamonitor" = "t" ]; then + python $AIRTIMEROOT/python_apps/media-monitor/install/media-monitor-copy-files.py + fi + if [ "$pypo" = "t" ]; then + python $AIRTIMEROOT/python_apps/pypo/install/pypo-copy-files.py + fi +fi + +cp -R $AIRTIMEROOT/utils /usr/lib/airtime +cp -R $AIRTIMEROOT/python_apps/std_err_override /usr/lib/airtime + +echo "* Creating symbolic links in /usr/bin" +#create symbolic links +ln -sf /usr/lib/airtime/utils/airtime-import/airtime-import /usr/bin/airtime-import +ln -sf /usr/lib/airtime/utils/airtime-update-db-settings /usr/bin/airtime-update-db-settings +ln -sf /usr/lib/airtime/utils/airtime-check-system /usr/bin/airtime-check-system +ln -sf /usr/lib/airtime/utils/airtime-log /usr/bin/airtime-log +ln -sf /usr/lib/airtime/utils/airtime-test-soundcard /usr/bin/airtime-test-soundcard +ln -sf /usr/lib/airtime/utils/airtime-test-stream /usr/bin/airtime-test-stream +ln -sf /usr/lib/airtime/utils/airtime-silan /usr/bin/airtime-silan + +echo "* Creating /var/log/airtime" +mkdir -p /var/log/airtime +chmod a+x /var/log/airtime +chown www-data:www-data /var/log/airtime/ +chown pypo:pypo /var/log/airtime/pypo +chown pypo:pypo /var/log/airtime/pypo-liquidsoap + + +if [ "$web" = "t" ]; then + echo "* Creating /usr/share/airtime" + rm -rf "/usr/share/airtime" + mkdir -p /usr/share/airtime + cp -R $AIRTIMEROOT/airtime_mvc/* /usr/share/airtime/ + rm -f /etc/logrotate.d/airtime-php + cp $AIRTIMEROOT/airtime_mvc/build/airtime-php.logrotate /etc/logrotate.d/airtime-php +fi + +echo "* Creating /var/log/airtime" +mkdir -p /var/log/airtime + +echo "* Creating /var/tmp/airtime" +mkdir -p /var/tmp/airtime + +#Finished copying files diff --git a/installer/airtime/airtime-initialize.sh b/installer/airtime/airtime-initialize.sh new file mode 100755 index 000000000..63a7c55a2 --- /dev/null +++ b/installer/airtime/airtime-initialize.sh @@ -0,0 +1,67 @@ +#!/bin/bash -e +#-e Causes bash script to exit if any of the installers +#return with a non-zero return value. + +if [[ $EUID -ne 0 ]]; then + echo "Please run as root user." + exit 1 +fi + +set +e +dist=`lsb_release -is` +echo "Generating locales" +for i in `ls /usr/share/airtime/locale | grep ".._.."`; do + if [ "$dist" = "Debian" ]; then + grep -qi "^$i" /etc/locale.gen + if [ $? -ne 0 ]; then + echo "$i.UTF-8 UTF-8" >> /etc/locale.gen + fi + else + locale-gen "$i.utf8" + fi +done +set -e + +if [ "$dist" = "Debian" ]; then + /usr/sbin/locale-gen +fi + +# Absolute path to this script, e.g. /home/user/bin/foo.sh +SCRIPT=`readlink -f $0` +# Absolute path this script is in, thus /home/user/bin +SCRIPTPATH=`dirname $SCRIPT` + +AIRTIMEROOT=$SCRIPTPATH/../../ + +if [ "$mediamonitor" = "t" ]; then + python $AIRTIMEROOT/python_apps/media-monitor/install/media-monitor-initialize.py +fi +if [ "$pypo" = "t" ]; then + python $AIRTIMEROOT/python_apps/pypo/install/pypo-initialize.py +fi + +chmod 600 /etc/monit/conf.d/monit-airtime-generic.cfg +chmod 600 /etc/monit/conf.d/monit-airtime-liquidsoap.cfg +chmod 600 /etc/monit/conf.d/monit-airtime-media-monitor.cfg +chmod 600 /etc/monit/conf.d/monit-airtime-playout.cfg +chmod 600 /etc/monit/conf.d/monit-airtime-liquidsoap.cfg + +# Start monit if it is not running, or restart if it is. +# Need to ensure monit is running before Airtime daemons are run. This is +# so we can ensure they can register with monit to monitor them when they start. +# If monit is already running, this step is still useful as we need monit to +# reload its config files. +invoke-rc.d monit restart + +#give monit some time to boot-up before issuing commands +sleep 1 + +set +e +if [ "$mediamonitor" = "t" ]; then + monit monitor airtime-media-monitor +fi +if [ "$pypo" = "t" ]; then + monit monitor airtime-playout + monit monitor airtime-liquidsoap +fi +set -e diff --git a/installer/install b/installer/install index 9d1410040..3141af7fc 100644 --- a/installer/install +++ b/installer/install @@ -131,7 +131,9 @@ chown -R www-data:www-data /var/log/airtime apt-get -y --force-yes install postgresql php5-pgsql php5-mysql -# TODO copy files over to /usr/share/airtime +# Copy files to /usr/share/airtime +export airtime_service_start='t' +airtime/airtime-copy-files.sh $@ echo -e "\n-----------------------------------------------------" echo " * Basic Setup DONE! * "