Building a Drupal installation profile

February 22, 2011

Setting up a new Drupal site can be a chore, especially if you need to do it a lot when doing testing or trying out new features to see if they are what you need without having to do it in a live environment or messing up existing dev environments.

There are a couple of drupal tools that can help, drush and drush_make. As someone who enjoys working on the command line, drush is a superb tool and can just be used on its own to speed up the development of building drupal sites. Drush make adds an additional make command to drush which will take an installation profile file that you’ve previously crafted and build you a drupal site out of it.

Below is both an example installation profile and a bash script I created to quickly roll out a standard drupal site with simpletest and admin_menu built in for Drupal 6 which most of our clients are still using. Assuming you’ve setup drush and drush_make If the files simpletest.make and simpletest.modsenabled exist in your web root (e.g. /var/www) then you can run the drush_make.sh script as shown below and a new site will be created at /var/www/simpletest. If you edit the drush_make.sh script to include your mysql database credentials then the script will setup the database for you as well.

./drush_make.sh simpletest

Installation profile simpletest.make

; Get Drupal 6
core = 6.x
api = 2
projects[drupal][type] = "core"
; Simpletest patch - note I'm hosting this locally, its in the simpletest zip from drupal.org/projects/simpletest
; Fix for PHP4 deprciated warnings in update/fetch.inc
; Drupal contributed modules
projects[admin_menu][type] = "module"
projects[admin_menu][version] = 1.5
projects[devel][type] = "module"
projects[devel][version] = 1.23
projects[simpletest][type] = "module"
projects[simpletest][version] = 2.11

List of modules which are enabled in new drupal site: simpletest.modsenabled


drush_make.sh script

if [ ! -n "$1" ]; then
echo "You need to provide a name which matches the name of the make file"
exit 1
if [ ! -f $1.make ]; then
echo "Could not find the make file $1.make"
exit 1
if [ ! -f $1.modsenabled ]; then
echo "Could not find the file $1.modsenabled";
exit 1
modslist=`cat $1.modsenabled`
echo About to install $1.make
# extract the site from the make file
if [ ! -n "$2" ]; then
drush make $1.make $1
echo skipping because of $2
# go into the new dir
if [ -d $1 ]; then
echo "Directory exists"
cd $1
echo "Directory does not exists"
exit 1
# make the new db schema
echo DROP SCHEMA IF EXISTS $1\; CREATE SCHEMA $1\; | mysql -u root -p
# setup the new site - put your db password in here
drush site-install --db-url=mysqli://root:password@localhost/$1 --site-name=$1 -y
# Enable the modules
drush en -y $modslist
exit 0


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: