Drush

From Things and Stuff Wiki
Revision as of 20:07, 9 February 2016 by Milk (talk | contribs) (→‎General)
Jump to navigation Jump to search


General

  • Drush is a command line shell and Unix scripting interface for Drupal. A veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt, Drush core ships with lots of useful commands for interacting with code like modules/themes/profiles. Similarly, it runs update.php, executes sql queries and DB migrations, and misc utilities like run cron or clear cache.

Installation

pear channel-discover pear.drush.org
pear install drush/drush

Commands

I have dr as an alias for drush.

drush help
  alll the commands!
drush help --filter
  choose which help category to echo
drush cc all
  clear cache
drush pml
  list installed and enabled modules

drush dl [project]
  download project
drush dl sasson-7.x-3.x-dev
  download sasson dev release
drush updb
  run upgrade.php
drush en [project] -y
  enable project without confirmation
drush dis [project] -y
  disable project

drush pm-uninstall [project]
  remove project from db
drush sql-cli < example.sql
drush php-eval 'echo drush_get_context("DRUSH_DRUPAL_ROOT");'
drush php-eval 'echo drush_locate_root() . "/" . drupal_get_path('theme', 'sasson');'

drush eval 'echo theme_get_setting('sasson_compiler') . "\n" ;'
  otherwise gives trailing issue?
drush vset --yes site_offline_message "This site is being maintained";

drush vset --yes site_offline 1;

In Drupal 7 to simply put the site into maintenance mode:

drush vset --yes maintenance_mode 1;
drush user-login ryan
  displays a one-time login link for the user ryan. 
open `drush user-login ryan`
  open said link in browser
dr uli

Site aliases

Drush uses site alias files to store context data. (Aegir still uses Drush 4)

drush help site-alias

Copy to ~/.drush, rename aliases.drushrc.php or further.

drush ev 'print_r(array_keys(drush_sitealias_get_record("@server_master")))'
drush ev '$a = drush_sitealias_get_record("@gk.dev"); print_r($a["path-aliases"]);'

Deployment

To sort with Aegir#Remote

drush help rsync
drush help sql-sync

Site build

See Profiles

Two make files; mysite.build and mysite.make.

mysite.build is brief:

core = 7.x
api = 2
projects[drupal][type] = "core"
; Our distribution
projects[mysite][type] = "profile"
projects[mysite][download][type] = "git"
projects[mysite][download][url] = "git@gitserver.com:mysite.git"
projects[mysite][download][branch] = "develop"

mysite.make contains the list of modules, themes, and libraries to download and add to the site.

Extras

  • Drupal Audit - This shell script allows a quick "audit" of a website, giving some details about the configuration: drush status, hacked status (using Hacked module), modules & themes status, cache status (using Cacheaudit module), database volumetry indications, phpinfo() ...
drush rebuild @example.local --source=@example.prod
  Rebuild the environment at `@example.local using the source `@example.prod`
drush rebuild @example.local --view-config
  View the config for rebuilding `@example.local`. Does not execute any tasks.
drush rebuild-info @example.local
  Displays statistics on rebuilds for `@example.local`
  • dman's sandbox: Drush sync scripts - This dirty cluster of scripts has followed me around through a dozen servers now, sometimes living in private CVS, sometimes in the old Drupal sandbox.
  • Drush UI - An experiment to stick an ncurses/Dialog interface ontop of Drush. This project is not to be taken seriously and use of it is actually discouraged.

Provision

See Aegir

  • Drush Vagrant provides Drush commands to accomplish common Vagrant tasks, and provides a powerful templating framework ('blueprints'). It also has tools to implement Drush aliases for Vagrant projects and VMs, thus allowing simpler remote control of Vagrant projects.