16

Is it possible to take a Drupal site offline using Drush?

markdorison
  • 139,374
  • 27
  • 55
  • 71

6 Answers6

22

Yep. drush vset site_offline 1 will set it offline, then drush vdel site_offline will bring it back.

Alternatively, you can check out my Maintenance File module on drupal.org, which will set your site to offline if it finds a specific file in the directory.

theunraveler
  • 3,254
  • 20
  • 19
15

Just in case anyone needs to do this with Drupal 7, the commands are:

drush vset maintenance_mode 1 --yes   # Take site offline 
drush vset maintenance_mode 0 --yes   # Put site back online

It also helps to add a little drush cc all after each of those commands to ensure that the change appears instantaneous to users.

Horatio Alderaan
  • 3,264
  • 2
  • 24
  • 30
4

theunraveler's solution is the best if you're running a single site. We were running a very large multisite drupal installation, with hundreds of sites. Taking them offline that way via drush takes several seconds per site which was unacceptable. The fastest way to take a site offline is to break the db connection by for example renaming the settings.php file. Then just assign a default theme that has a basic template that doesn't require the db, saying "Site Offline" or something. After upgrading you can just repair the settings.php file and you're good to go.

Nader
  • 5,493
  • 4
  • 33
  • 31
  • That takes just as long. To set a default theme for each site, you have to make a database change. The drush command above is also making a change in the database: it is the same as UPDATE {variables} SET value = 1 WHERE name = 'site_offline'. So, the issue is not with drush or even this method of setting sites offline, which is obviously the most ideal. – theunraveler Oct 28 '10 at 19:49
  • @theunraveler: I think the point is that you only need to make a single change once you have done the setup. Not a method I would use myself though. – googletorp Oct 28 '10 at 20:23
  • @theunraveler: that's not the case. in a multisite setup you can set a default theme in the base installation so that if you can't reach one of the "multisite" sites it defaults to that base theme. trust me i spent a lot of time investigating this including making the db change directly. that's not sufficient because the cache doesn't get flushed. as i mentioned above, i don't recommend this unless you have a lot of sites and performance is important. but with this technique you can take 500 sites offline in a couple seconds, versus 5-7 seconds per site via drush – Nader Oct 28 '10 at 20:32
  • Ah! I didn't know Drupal would fall back to a default theme if it couldn't find the actual theme. Although I still think that the Maintenance File module would be a better option. Good to know, though! +1 – theunraveler Oct 28 '10 at 21:03
0

With a site alias on D7:

drush @site_alias -y vset maintenance_mode 1    # Take site offline
drush @site_alias -y vset maintenance_mode 0    # Take site online
Ivan Chaer
  • 6,980
  • 1
  • 38
  • 48
0

It's quite easy in fact, simply set the variable of maintenance mode to 1 (0 to restore default value):

drush vset maintenance_mode 1
regilero
  • 29,806
  • 6
  • 60
  • 99
0

Drupal 6

drush vset site_offline 1

Drupal 7

drush vset maintenance_mode 1
oknate
  • 1,068
  • 10
  • 14