stage/autorun.sh
changeset 0 8e044e762a6c
child 3 859eeb3579b2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stage/autorun.sh	Tue Jun 23 09:18:34 2009 -0400
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+## FUNCTIONS
+
+check_bitnami_dir()
+{
+  test -d "$1" || return 1
+  test -f "$1/ctlscript.sh" || return 1
+  test -f "$1/properties.ini" || return 1
+
+  mysqladmin=$bitnami/mysql/bin/mysqladmin
+  test -x "$mysqladmin" || return 1
+  mysql=$bitnami/mysql/bin/mysql
+  test -x "$mysql" || return 1
+
+  return 0
+}
+
+## SCRIPT
+
+cd `dirname $0`
+
+echo "Welcome to the Enano CMS BitNami module installer."
+autobitnami=""
+if test -n "$HOME"; then
+  autobitnami=$(echo $HOME/lampstack-*)
+  if test ! -d "$autobitnami"; then
+    autobitnami=""
+  fi
+fi
+while true; do
+  if test -n "$autobitnami"; then
+    read -p "Path to BitNami directory [$autobitnami]: " bitnami
+    test -z "$bitnami" && bitnami="$autobitnami"
+  else
+    read -p "Path to BitNami directory: " bitnami    
+  fi
+  check_bitnami_dir $bitnami && break
+  echo "This does not seem to be the home of a BitNami LAMPStack installation."
+done
+
+if [ -d $bitnami/apps/enanocms ]; then
+  echo "Enano is already installed as a module on this LAMPStack."
+  exit 1
+fi
+
+mysql_port=$(cat $bitnami/properties.ini | grep mysql_port | sed -re 's/^mysql_port=//g')
+
+while true; do
+  read -s -p "MySQL root password: " mysqlpass
+  echo ""
+  out=`$mysqladmin -u root --password="$mysqlpass" ping 2>&1`
+  test "$out" = "mysqld is alive" && break
+  echo $out
+done
+
+echo "Creating database."
+
+bitnami_db="bn_enanocms"
+bitnami_user="bn_enanocms"
+bitnami_pass=`dd if=/dev/urandom bs=256 count=1 2>/dev/null | tr -cd '\41-\46\50-\176' | cut -c 1-12`
+
+query='CREATE DATABASE IF NOT EXISTS `'$bitnami_db'`; GRANT ALL PRIVILEGES ON '$bitnami_db'.* TO '"$bitnami_user"'@localhost IDENTIFIED BY '"'$bitnami_pass'"'; FLUSH PRIVILEGES;'
+echo $query | $mysql -u root --password="$mysqlpass" || exit 1
+
+echo "Installing files."
+mkdir -p $bitnami/apps/enanocms/{conf,licenses} || exit 1
+cp -r ./enano-* $bitnami/apps/enanocms/htdocs || exit 1
+cp ./COPYING $bitnami/apps/enanocms/licenses/ || exit 1
+cat <<EOF > $bitnami/apps/enanocms/conf/enanocms.conf
+Alias /enanocms "$bitnami/apps/enanocms/htdocs"
+
+<Directory "$bitnami/apps/enanocms/htdocs">
+    Options -Indexes MultiViews FollowSymLinks
+    AllowOverride All
+    Order allow,deny
+    Allow from all
+</Directory>
+EOF
+
+echo "Patching Apache configuration."
+if test x$(cat $bitnami/apache2/conf/httpd.conf | grep '^Include' | grep enanocms | wc -l) = x0; then
+  echo -ne "\nInclude "'"'"$bitnami/apps/enanocms/conf/enanocms?conf"'"'"\n" >> $bitnami/apache2/conf/httpd.conf
+fi
+
+echo "Adding Enano to BitNami's applications.html."
+if test x$(cat $bitnami/apache2/htdocs/applications.html | fgrep 'START BitNami Enano CMS Module enanocms' | wc -l) = x0; then
+  cp enanocms-module.png $bitnami/apache2/htdocs/img/
+  line=$(cat $bitnami/apache2/htdocs/applications.html | fgrep -n '<!-- @@BITNAMI_MODULE_PLACEHOLDER@@ -->' | cut -d ':' -f 1)
+  head -n $(($line - 1)) $bitnami/apache2/htdocs/applications.html > ./applications-temp.html
+  cat application.html >> ./applications-temp.html
+  tail -n +$line $bitnami/apache2/htdocs/applications.html >> ./applications-temp.html
+  mv ./applications-temp.html $bitnami/apache2/htdocs/applications.html
+fi
+
+echo "Starting Enano installer."
+while true; do
+  if $bitnami/php/bin/php $bitnami/apps/enanocms/htdocs/install/install-cli.php -b mysql -h 127.0.0.1 -o $mysql_port -u "$bitnami_user" -p "$bitnami_pass" -d $bitnami_db -i /enanocms -r rewrite
+  then
+    break
+  else
+    read -n 1 -p "Try installation again? [y/N] " RETRY
+    if test "$RETRY" != "y"; then
+      cat <<EOF
+
+Enano installation failed. To install Enano using the web interface,
+navigate to http://localhost/enanocms (or http://localhost:8080/enanocms,
+depending on how you installed LAMPStack), and use the following settings:
+
+  Database type:       MySQL
+  Database hostname:   localhost
+  Database name:       $bitnami_db
+  Database username:   $bitnami_user
+  Database password:   $bitnami_pass
+
+
+EOF
+      break
+    fi
+  fi
+done
+
+echo "Restarting Apache."
+$bitnami/ctlscript.sh restart apache
+