I need to make the deployment easy between my staging and production servers.

How can I do this? I need to deploy all the changes, so if I pull from Github and run the script, the changes are applied!

Has anyone written any script or module for this?

I am using Drupal 7.


You should look into drush, drush deploy and especially features. Not all Drupal configuration options are supported by features, and you will need to do some work to create a deployment process that works for you. There is no single script that will do everything correctly for you.

  • Wish I could upvote this twice. :-) I'll add that with drush you can create a makefile for your site. drupal.org/project/drush_make – paul-m Jan 1 '13 at 18:33
  • 1
    Thanks. n.b. drush_make is included in Drush core version 7.x-5.x; if you are still using Drush 4, it would be a good idea to upgrade. Also, you can generate a Drush Makefile from an existing Drupal site via drush generate-make. There is a work-in-progress command to build an install profile from an existing Drupal site at drupal.org/node/1368242. – greg_1_anderson Jan 1 '13 at 20:37

You may be interested in Fabric

Fabric is a Python library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.

You may also be interested in drush for command line access to Drupal.

e.g, some relevant drush commands:

archive-dump    Backup your code, files, and database into a single file.                                                                                                                                                                       
archive-restore Expand a site archive into a Drupal web site. 
core-rsync (rsync)    Rsync the Drupal tree to/from another server using ssh.

or both :)

  • can i do with a script, to perform all the changes – Abuzer Firdousi Jan 1 '13 at 11:28
  • Yes, you could script the entire thing so it's automatic. – David Thomas Jan 1 '13 at 23:13

There is Beanstalk

Advanced Deployment Tools Deploy your repositories to (S)FTP, SSH and Amazon S3 in one click.

And there is GitHub's post-receive hooks.

GitHub will POST to a supplied URL when someone pushes to the repo. Just write a short PHP script to run on your linode VPS and pull from GitHub when it receives said POST.


Although the question is a year before I would suggest using these 3 tools.

Git + Capistrano + Drush.

It just works for such kind of tasks.

Here are some Capistrano gems/files related to Drupal to help you automate Drupal development:

And here are some useful resources so you don't have to search all over the web:


These are my finding. Drush provides the sync, using mysql dump and restore as complete, not the changes made after some interval.

Many things can be tracked with - Configuration Module - Features - Extra Features

Please see the presentation for further. https://docs.google.com/file/d/0B6Sp-HBmxgGMMnhhQXVrR1hDUVU/edit?usp=sharing

  • Hello, and welcome to Drupal Answers. May you expend your answer with a summary of what reported in the linked page. On Stack Exchange, answers merely containing a link are not considered answers. – kiamlaluno Feb 4 '13 at 13:33

Not the answer you're looking for? Browse other questions tagged or ask your own question.