#!/bin/bash -e # # Auto install script for airtime on Ubuntu # # NGINX changes are contributed by Eugene MechanisM # Link to the post: # http://forum.sourcefabric.org/discussion/13563/first-step-to-run-airtime-via-nginx-based-on-airtime-2.0-beta-files exec > >(tee install_log.txt) exec 2>&1 if [ "$(id -u)" != "0" ]; then echo "Please run as root user." exit 1 fi server="$1" #Current dir # 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` #Prerequisite echo "----------------------------------------------------" echo " 1. Install Packages" echo "----------------------------------------------------" dist=`lsb_release -is` code=`lsb_release -cs` #enable squeeze backports to get lame packages if [ "$dist" = "Debian" -a "$code" = "squeeze" ]; then set +e grep -E "deb http://backports.debian.org/debian-backports squeeze-backports main" /etc/apt/sources.list returncode=$? set -e if [ "$returncode" -ne "0" ]; then echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list fi fi codename=`lsb_release -sc` set +e grep -E "deb +http://apt.sourcefabric.org/? +$codename +main" /etc/apt/sources.list returncode=$? set -e #if [ "$returncode" != "0" ]; then # echo "deb http://apt.sourcefabric.org/ $codename main" >> /etc/apt/sources.list #fi apt-get update # Updated package list apt-get -y --force-yes install tar gzip curl php5-pgsql \ php-pear php5-gd postgresql odbc-postgresql python libsoundtouch-ocaml \ libtaglib-ocaml libao-ocaml libmad-ocaml ecasound \ libesd0 libportaudio2 libsamplerate0 rabbitmq-server patch \ php5-curl mpg123 monit python-virtualenv multitail libcamomile-ocaml-data \ libpulse0 vorbis-tools lsb-release lsof sudo mp3gain vorbisgain flac vorbis-tools \ pwgen libfaad2 php-apc #install packages with --force-yes option (this is useful in the case #of Debian, where these packages are unauthorized) apt-get -y --force-yes install libmp3lame-dev lame icecast2 #Debian Squeeze only has zendframework package. Newer versions of Ubuntu have zend-framework package. #Ubuntu Lucid has both zendframework and zend-framework. Difference appears to be that zendframework is for #1.10 and zend-framework is 1.11 if [ "$dist" = "Raspbian" ]; then apt-get -y --force-yes install zendframework else apt-get -y --force-yes install libzend-framework-php fi #get the "timeout" unix command if [ "$code" = "lucid" ]; then apt-get -y --force-yes install timeout else apt-get -y --force-yes install coreutils fi #install aac package only available in new distributions: (Debian Wheezy, Ubuntu Precise or newer) if [ "$code" != "squeeze" -a "$code" != "lucid" ]; then apt-get -y --force-yes install libvo-aacenc0 fi #Install some plugin packages on Ubuntu Saucy. if [ "$dist" = "Ubuntu" -a "$code" = "saucy" ]; then apt-get -y --force-yes install php5-json apt-get -y --force-yes install liquidsoap-plugin-alsa liquidsoap-plugin-ao liquidsoap-plugin-faad liquidsoap-plugin-flac liquidsoap-plugin-icecast liquidsoap-plugin-lame liquidsoap-plugin-mad liquidsoap-plugin-ogg liquidsoap-plugin-opus liquidsoap-plugin-portaudio liquidsoap-plugin-pulseaudio liquidsoap-plugin-taglib liquidsoap-plugin-voaacenc liquidsoap-plugin-vorbis fi #Install packages back-ported by Sourcefabric #apt-get -y --force-yes install sourcefabric-keyring apt-get -y --force-yes install liquidsoap apt-get -y --force-yes install silan apt-get -y --force-yes install libopus0 if [ "$server" = "nginx" ]; then apt-get -y --force-yes install nginx php5-fpm # NGINX Config File echo "----------------------------------------------------" echo "2.1 NGINX Config File" echo "----------------------------------------------------" if [ ! -f /etc/nginx/sites-available/airtime ]; then cp $SCRIPTPATH/../nginx/airtime-vhost /etc/nginx/sites-available/airtime ln -s /etc/nginx/sites-available/airtime /etc/nginx/sites-enabled/airtime service nginx reload else echo "NGINX config for Airtime already exists..." fi # php-fpm Airtime pool file echo "----------------------------------------------------" echo "2.2 Airtime php pool file" echo "----------------------------------------------------" if [ ! -f /etc/php5/fpm/pool.d/airtime.conf ]; then cp $SCRIPTPATH/../php5-fpm/airtime.conf /etc/php5/fpm/pool.d/airtime.conf service php5-fpm reload else echo "Airtime php pool file already exists..." fi else apt-get -y --force-yes install apache2 libapache2-mod-php5 # Apache Config File echo "----------------------------------------------------" echo "2.1 Apache Config File" echo "----------------------------------------------------" if [ ! -f /etc/apache2/sites-available/airtime ]; then echo "Creating Apache config for Airtime..." if [ "$dist" = "Raspbian" ]; then cp $SCRIPTPATH/../apache/airtime-vhost /etc/apache2/sites-available/airtime.conf a2dissite 000-default else cp $SCRIPTPATH/../apache/airtime-vhost /etc/apache2/sites-available/airtime a2dissite default fi a2ensite airtime else echo "Apache config for Airtime already exists..." fi if [ ! -d /usr/share/airtime/public ]; then echo "Creating Apache web root directory..." mkdir -p /usr/share/airtime/public/ else echo "Airtime web root directory already exists..." fi # PHP Config File for Apache echo "----------------------------------------------------" echo "2.2 PHP Config File for Apache" echo "----------------------------------------------------" if [ ! -f /etc/php5/apache2/airtime.ini ]; then echo "Creating Airtime PHP config for Apache..." cp $SCRIPTPATH/../php5/airtime.ini /etc/php5/apache2/conf.d/airtime.ini else echo "Airtime PHP config for Apache already exists..." fi # Enable modules and restart Apache to enable any configuration changes echo "----------------------------------------------------" echo "2.3 Enable Apache Modules and Restart Apache" echo "----------------------------------------------------" a2enmod rewrite php5 service apache2 restart fi # Enable Icecast echo "----------------------------------------------------" echo "3. Enable Icecast" echo "----------------------------------------------------" cd /etc/default/ sed -i 's/ENABLE=false/ENABLE=true/g' icecast2 set +e service icecast2 start set -e echo "" # Enable Monit echo "----------------------------------------------------" echo "4. Enable Monit" echo "----------------------------------------------------" cd /etc/default/ sed -i 's/startup=0/startup=1/g' monit set +e grep -q "include /etc/monit/conf.d" /etc/monit/monitrc RETVAL=$? set -e if [ $RETVAL -ne 0 ] ; then mkdir -p /etc/monit/conf.d echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc fi # Run Airtime Install echo "----------------------------------------------------" echo "5. Run Airtime Install" echo "----------------------------------------------------" cd $SCRIPTPATH/../../install_minimal # Restart apache to clear php cache service apache2 restart ./airtime-install