Digital Ocean Tips

I’ve been hosting my WordPress sites with Digital Ocean for a few months now. It took me quite a while to learn how to manage everything, and I thought it would be worth sharing a few shortcuts and tricks I’ve picked up.

If you’re looking to migrate your sites to Digital Ocean, I also have a post on that.

SSH Shortcut

The way to get on the server is to SSH:

ssh user@127.0.0.1

However, no one wants to memorize an IP address or type that much. If you’re logging in a lot, set up an SSH alias.

In:

~/.ssh/config

Add:

Host example
HostName 127.0.0.1
User user

Now, you just need to type “ssh example” to get to your server.

Download Files from the Server

If you need to download a directory from the server, you can do that with scp:

scp -r root@127.0.0.1:/var/www/mysite.io/htdocs/wp-content/ .

This pulls the entire “wp-content” folder from your remote site into your current path on your local machine.

Reverse it to go the other way:

scp -r wp-content root@127.0.0.1:/var/www/mysite.io/htdocs/

Syncing WordPress Files

If you’re developing locally, you probably need to occasionally sync files. Rsync is a great way to do that because it only downloads/uploads the files that have changed.

You can also exclude files you don’t want to sync, like a cache directory. Here’s one command I use all the time to pull down updates:

rsync -rvz --exclude "w3-total-cache" --progress user@127.0.0.1:/var/www/mysite.io/htdocs/wp-content/ /Users/Me/Sites/mysite/'

This syncs any changes in the “wp-content” folder on the remote server to the “wp-content” directory in “mysite” locally.

You can reverse the paths to go the other way (be careful!), and of course, set up an alias or shell script if you need to do this a lot.

Updating the Server

It seems like every time I log into the server there’s updates. Here’s how you get those:

sudo apt-get update # Fetches the list of available updates
sudo apt-get upgrade # Strictly upgrades the current packages
sudo apt-get dist-upgrade # Installs updates (new ones)

Restart MySQL

MySQL seems to conk out every now and then on Digital Ocean. Enabling Swap really helped with that. But sometimes you just need to:

/etc/init.d/mysql start

Cron Job to Restart MySQL

If MySQL conks out on a regular basis because of memory errors, it might be a good idea to upgrade the droplet. In my case, MySQL failed about every 3-4 weeks and overall CPU use was still low. So I just decided to set up a cron job instead. This runs every minute and will restart MySQL if it is down.

To set it up, log in and type:

sudo crontab -e

Then add this line to the bottom of your crontab:

* * * * * /etc/init.d/mysql start

For a more detailed account of how cron jobs work (or to set different times), read this.

I am new cron jobs, so if anyone has improvements/alternates to this approach I’d love to know it.

Restart Ngnix

service nginx reload

Hope some of these tips are useful! Feel free to share your own.

About Devin

I'm a WordPress developer based in Austin, Texas. I run a little theme shop called DevPress and work for a startup called Nano. Find me on twitter @devinsays.

3 Responses

  1. Gabweb

    Take a look at serverpilot.io. It’s a great for using it ontop of DigitalOcean. Serverpilot.io is a tool to run websites on DigitalOcean much easier. It will do all the config stuff and install updates automatically.

Leave a Reply