Installing Drush on a Shared DreamHost Account

If you have issues with these directions, please read the alternate directions for installing on a shared host manually without using Pear. MediaTemple is one provider where you must use the alternate directions to get Drush working.

One of the easiest and most convenient ways to get your hands on Drupal is on a shared hosting environment. It’s pretty much where everyone is going to start from unless you happen to have a giant long-term budget for your own hardware.

You have a number of options when it comes to hosting and at one time or another I’ve tried a lot of them. Three companies that have managed to keep me the happiest though are A Small Orange (use coupon 15-off to get 15% off; no affiliate), DreamHost (no affiliate) and MediaTemple. I’ve found DreamHost in particular to be pretty impressive when it comes to hosting a lot of one-off sites on my very inexpensive shared plan. I even use it when rapid prototyping for clients.

The best part though is that with DreamHost I can use SSH and Drush the way I normally would like to on a dedicated or virtual server. Set up is a bit more complex than normal, but, once it’s set up for your user it’s smooth sailing.

Before you can do any of this, you will need to make sure you enable SSH for the user you assigned to the  domain you want to use Drush with. You can find these options under the Manage Users section of the DreamHost panel. From there open up your favorite SSH client and log into your site (PuTTY works well on Windows, you can just run ssh from the command line on Mac or Linux).

Since you’re in a locked-down shared hosting environment, you obviously can’t make system-wide changes. The easiest way to install Drush is though Pear. Pear, by default, wants to make system-wide changes. Since we can’t do that in a shared environment, our first order of business will be to set up a new instance of pear just for our user.

Once logged in, and in your user’s home folder, run:
pear config-create ${HOME} ${HOME}/.pearrc
pear install -o PEAR

Now you have your own instance of pear, but you still can’t use it yet. To fix this, we will edit our .bash_profile and add in the path to the most recent PHP version DreamHost provides, as well as adding in our pear directory early on in this user’s PATH.

Open ~/.bash_profile in your favorite editor:
nano ~/.bash_profile

And add these lines at the bottom of the file:
export PHP_PEAR_PHP_BIN=/usr/local/php53/bin/php
export PATH=${HOME}/pear:/usr/local/php53/bin:${PATH}

Finally, re-load the file so the changes will take effect immediately:
. ~/.bash_profile

Now we have the newest version of PHP and our custom version of pear available to us, to check this out, you can run these commands:
which php
which pear

Pretty cool, eh? Lastly, just run the usual install command for drush to install it:
pear channel-discover pear.drush.org
pear install drush/drush

Now you can use drush from any site under this user as you would anywhere else (try running `drush help` for some cool examples). You can repeat this process for any other SSH users on your account. A one line tl;dr version of this process is included below for your automated and repetitive pleasure. Enjoy!

tl;dr: Get drush running on DreamHost by running this line in SSH:
pear config-create ${HOME} ${HOME}/.pearrc;pear install -o PEAR;echo "export PHP_PEAR_PHP_BIN=/usr/local/php53/bin/php" >> ~/.bash_profile;echo 'export PATH=${HOME}/pear:/usr/local/php53/bin:${PATH}' >> ~/.bash_profile;. ~/.bash_profile;pear channel-discover pear.drush.org;pear install drush/drush

Robin Monks has a passion for openness and freedom in technology and he’s spent the last 8 years of his life developing, supporting and maintaining open source software. He’s part of the panel of Drupal community experts who authored The Definitive Guide to Drupal 7 and currently provides independent consulting services. Reach him at 1-855-PODHURL.

Tags: , , , , , , ,

18 Responses to “Installing Drush on a Shared DreamHost Account”

  1. Dale
    February 26, 2012 at 9:39 pm #

    Thanks for this, Robin!

    Have you tried doing Drush remote commands using aliases? (ref http://www.lullabot.com/articles/new-features-drush-3) When I did, I discovered the path exports needed to be in .bashrc so they were available to remote commands. I moved them .bashrc and do a “source ~/.bashrc” in .bash_profile.

    It is so sweet doing a drush @remotesystem status on my laptop and seeing results from my Dreamhost site.

  2. dalin
    February 27, 2012 at 6:56 pm #

    Wouldn’t it just be easier to do a git checkout of drush?

  3. Dale
    March 1, 2012 at 4:57 am #

    I’ve done from a tarball (essentially the same as GIT) and I’ve done it with PEAR. PEAR is much more convenient. YMMV.

  4. Bryce Benton
    September 8, 2012 at 3:39 pm #

    This worked exactly as described. Thanks!

  5. VF
    November 13, 2012 at 12:25 am #

    Hi!

    I did exactly that. Trying a Drush command I get error:

    Could not open input file: /home/username/pear/drush.php

    • Robin Monks
      December 6, 2012 at 4:39 pm #

      I’m hoping you replaced username with your username?

  6. David
    November 27, 2012 at 8:24 pm #

    I’m getting PHP Warnings when it tries to load modules. Here are just a few of the warnings:

    PHP Warning: Module ‘bcmath’ already loaded in Unknown on line 0
    PHP Warning: Module ‘bz2′ already loaded in Unknown on line 0
    PHP Warning: Module ‘calendar’ already loaded in Unknown on line 0
    PHP Warning: Module ‘ctype’ already loaded in Unknown on line 0
    PHP Warning: Module ‘curl’ already loaded in Unknown on line 0

    Doing a php -i on the command line gives me some info on the config. Looks like two php.ini files are being loaded that both specify the same extensions.

    Configuration File (php.ini) Path => /etc/php53
    Loaded Configuration File => /etc/php53/php.ini
    Scan this dir for additional .ini files => /etc/php53/conf.d
    Additional .ini files parsed => /etc/php53/conf.d/php.ini

    Some of the extensions:

    extension = bcmath.so
    extension = bz2.so
    extension = calendar.so
    extension = ctype.so
    extension = curl.so

    Anybody know how to get dreamhost not to load two php.ini files?

    • Robin Monks
      December 6, 2012 at 4:39 pm #

      One option would be to tone down the error reporting to not show warnings. Warnings won’t actually harm anything.

  7. Paul Wieck
    December 31, 2012 at 7:36 pm #

    Thank you for your how-to. Worked perfectly.

  8. Ian C
    February 3, 2013 at 4:07 am #

    worked exactly as described. thank you for posting.

  9. Eric Powell
    April 14, 2013 at 9:17 pm #

    Thank you for the instructions. This made it simple and worked perfectly.

  10. Dhruv
    April 24, 2013 at 11:49 am #

    Nice, clear and the shortest instruction on installing drush at DreamHost. Now that php version 5.4 is available, you might want to change php53 to php54.

    Although php53 works just fine but I think it’s better to have the latest php version. What you think?

    Thanks for offering such a simple solution.

    • Robin Monks
      April 24, 2013 at 11:55 am #

      You can (and should) if php54 exists on the shared server you’re hosted on. I haven’t switched the directions to 5.4 entirely because I don’t believe DreamHost has rolled it out everywhere yet.

  11. Dhruv
    April 25, 2013 at 3:49 am #

    I have checked with DreamHost support staff and they have confirmed that php54 is available on all DreamHost servers. It’s also just announced in the latest DreamHost newsletter v15.3&4.

    • Robin Monks
      April 25, 2013 at 12:27 pm #

      Awesome, I’ll update the instructions soon.

  12. Shankar
    May 9, 2013 at 5:13 am #

    You can check Drush version with “drush status” command inside your application directory or outside your application directory, the difference will be when you are inside application directory you will get more information,

    Check below links for better understanding on Drush commands,

    http://mydons.com/commonly-used-drush-commands-drupal-developers-must-know/ http://mydons.com/install-and-upgrade-drush-version-in-linux/

    • Robin Monks
      May 16, 2013 at 12:15 pm #

      Just a warning that the upgrade instructions in your second link won’t work for anyone using the installation method here on a shared host. If you use the direction here you must update via pear. To update, just run:

      pear upgrade drush/drush

Trackbacks/Pingbacks

  1. Drush installation on HotDrupal » Kyle D. Skrinak’s Blog - May 29, 2012

    [...] as a shared host, my ssh account has limited privileges to use the pear installer. However, over here Robin Monks has a blog post on installing drush on a Dreamhost shared web site. This gets us 98% of [...]

Leave a Reply