#!/bin/bash # @todo don't use DB root user for Drupal's DB connection # @todo log in user automatically # @todo enable clean urls if [[ (-z $1) || (-z $2 ) || (-z $3) ]]; then echo "Checks out and configures Drupal 7 at host/[sitename] on a database drupal_deploy_[sitename]" echo "WARNING: drupaldeploy destroys an existing site with the same name if present." echo "Usage" echo "drupaldeploy [sitename] [db_root_user] [db_root_pw]" exit fi # Configuration CVSUSER=anonymous CVSPW=anonymous WEBHOST=http://localhost/ WEBDIR=/www/ SITEDIR=$1/ DBHOST=localhost DBNAME=drupal_deploy_$1 DBUSER=$2 DBPW=$3 DBDRIVER=mysql COOKIEFILE=/tmp/$1-cookie.txt DRUPALUSER=admin DRUPALPW=test DRUPALMAIL=test@example.com DRUPALTIMEZONE=America%2FNew_York # Script cd $WEBDIR rm -rf $SITEDIR mysql -e"DROP DATABASE $DBNAME;" mysql -e"CREATE DATABASE $DBNAME;" cvs -z6 -d:pserver:$CVSUSER:$CVSPW@cvs.drupal.org:/cvs/drupal checkout -d $SITEDIR drupal cp $SITEDIR"sites/default/default.settings.php" $SITEDIR"sites/default/settings.php" chmod 666 $SITEDIR"sites/default/settings.php" mkdir $SITEDIR"sites/default/files/" chmod 777 $SITEDIR"sites/default/files/" # We're going to be working on this URL URL=$WEBHOST$SITEDIR"install.php?profile=default&locale=en" # Get form and build id FORM_BUILD_ID=`curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL" | perl -n -e '/name=\"form_build_id\".*?value=\"(.*?)\"/ and print $1, "\n"'` # Post form curl -s -L -b $COOKIEFILE -c $COOKIEFILE -d "database=$DBNAME&username=$DBUSER&password=$DBPW&host=$DBHOST&port=&db_prefix=&form_id=install_settings_form&driver=$DBDRIVER&op=Save%20and%20continue&form_build_id=$FORM_BUILD_ID" --url "$URL" > /dev/null # Step through install script, this shouldn't be necessary curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL&id=1&op=do_nojs" > /dev/null curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL&id=1&op=do_nojs" > /dev/null curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL&id=1&op=do_nojs" > /dev/null curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL&id=1&op=do_nojs" > /dev/null curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL&id=1&op=finished" > /dev/null # Post site configuration form FORM_BUILD_ID=`curl -s -L -b $COOKIEFILE -c $COOKIEFILE "$URL" | perl -n -e '/name=\"form_build_id\".*?value=\"(.*?)\"/ and print $1, "\n"'` curl -s -L -b $COOKIEFILE -c $COOKIEFILE -d "site_name=$SITEDIR&site_mail=mail@example.com&account[name]=$DRUPALUSER&account[mail]=$DRUPALMAIL&account[pass][pass1]=$DRUPALPW&account[pass][pass2]=$DRUPALPW&date_default_timezone=$DRUPALTIMEZONE&update_status_module[1]=1&form_id=install_configure_form&op=Save%20and%20continue&form_build_id=$FORM_BUILD_ID" --url "$URL" > /dev/null open "$WEBHOST$SITEDIR"