Here at Razorfrog we’re big fans of managed WordPress hosting with Kinsta and WPEngine. We wrote all about it here, and those opinions haven’t changed much over the years. However, a full-fledged managed account isn’t always what we need for very small WordPress sites, or static HTML/PHP sites. For those, we’ve had a shared hosting account with Mediatemple for 10+ years (long before they were purchased by GoDaddy).
In recent years though, the Mediatemple GRID server has been increasingly sluggish. Takes 10+ seconds for a simple WordPress site to load sluggish. Not good. Even for $20/month, you’d expect faster results for a small handful of sites. Time to look for new options!
Over the last few weeks we moved our weekly Google Analytics email app from Mediatemple to Digital Ocean for related performance reasons. It went well, and I looked into moving over our 20ish small sites to DO as well. Creating 20 x $5 droplets wasn’t reasonable, but based on a few posts such as this one, maybe we could put all 20 on the same droplet? Spoiler: I’ve moved over a handful so far and the results are fantastic. Like 7x faster fantastic. A small WordPress site went from 3.45s loading time on Mediatemple to loading in 487ms on Digital Ocean through Runcloud. But what’s Runcloud? And how does the cost compare to Mediatemple?
Before and after. Whoa.
Runcloud is a management layer that runs on top of Digital Ocean (and a handful of other platforms) which takes over some of the more advanced server management such as site creation, web app installation, and SSL setup. Lots more too, but those are the main areas I’m focusing on here.
Their pricing is reasonable – there’s a free plan for a single server with limited functionality, or $8/month for a single server with all functionality. Combine that with a $5/month droplet at DO and you have a robust setup for small, low traffic sites at only $12/month. Need more CPU, RAM, or storage? Easily increase your droplet size over at DO. Need more servers? Upgrade to the $15/month plan at Runcloud. I’m looking forward to seeing where we end up as we migrate more sites.
With all of that said, here’s the actual migration routine that I came up with for quick, hands-off migrations from Mediatemple to Runcloud / Digital Ocean:
1) As you should for any migration, first update your DNS TTL values to as low as they can go. 10 minutes is great, that’s 600 seconds. Oh, and run a speed test to have a benchmark on your current hosting. I like Pingdom.
2) Set up your Digital Ocean account and droplet. If you don’t have an account yet, here’s a referral link for $100 in credits. The $5/month droplet is a great starting point. Choose the datacenter nearest you, and the current Ubuntu installation. Spin that up and check your email for IP and login details.
3) Set up your Runcloud account. Here’s a referral link for that too. The free trial will get you started just fine. You’ll then need to set up a server within Runcloud and run the install script on your DO droplet when logged in as root via SSH. Here’s a tutorial that covers that in more depth. Be sure to save the password for user “runcloud” which is shown when the script finishes.
4) The above tutorial walks you through most of the WordPress setup process, but I make a few changes that made my life easier:
- Add new web application within Runcloud using PHP 7.3 and ngnix
- Add your domain with and without www
- Create a new database and database user specific for this WP install. Save the password.
- Within the web application, install WordPress through the Script Installer
5) You’ll now have a WordPress installer prompt at your url, however if you’re migrating a site and haven’t yet updated DNS you can’t access that page. So! Time to briefly update your hosts file so you can finish the installer setup. You’re on a Mac, right? There are a thousand tutorials on how to update your hosts file – here’s one that looks good. You’ll want to add a line with your domain name and the IP address from DO. Alternately: select the “Set as default Web Application” option within Runcloud and access the install using your server’s IP.
6) Now that you can access the WP installer, go set up that WP install with the database information from Step 3. Don’t worry about the site title, username, or password – you’re going to overwrite all of that shortly. Once WP is installed, undo your edits to the Hosts file so you’re looking at the current site on Mediatemple.
7) Install the Migrate Guru plugin on the current WP site. You could use a number of migration plugins, but I like this one since the heavy lifting is done on their servers, and it’s designed to migrate into a blank WP install, unlike many other scripts which install WordPress for you. When prompted, you’ll input the new server IP address, runcloud username, and the password from Step 2.
8) Wait a few minutes. Grab a coffee and have a fika.
9) Once the migration is completed you can either change your Hosts file back and check that it worked correctly, or just assume that all is well since the last 10 times you did this everything worked fine. Either way once you’re ready, change your DNS records to the new IP address to launch the site.
10) Once DNS is updated, open your web application on Runcloud and visit the SSL/TLS page. Set up Let’s Encrypt and check the Enable HSTS box if you want to force HTTPS for all pages (you should!).
11) Bonus step – since your site won’t have a mail server installed, you may want to set up a service such as Mailgun. Here’s a full tutorial on that. The first time you do it may take 20 minutes, but it should take 5 minutes per site after that.
12) Run a speed test! Compare to your old hosting. Hopefully rejoice.