Background
Over the course of a long weekend, I attempted to move my standard shared hosting websites over to a cloud hosting solution.
Having multiple websites on shared servers, can get quite costly on a monthly basis and I wanted a solution that not only saved me some cash, but gave me some technical flexibility.
The Solution
I started investigating DigitalOcean which I’ve heard good things about before. They offer a cloud hosted VM solution called “Droplets“.
“More than just virtual machines. Droplets are a scalable compute platform with add-on storage, security, and monitoring capabilities to easily run production applications.”
– From DigitalOcean’s website
This sounded like a winning solution to me and off I went, signing up and spinning up a Droplet that runs the latest Ubuntu LTS release with a LAMP setup.
This was great because it allowed me to install the latest version of Apache, PHP and MySQL without being at the mercy of a service provider dictating versions to me (often found them to be behind the curve). I could run wild on my server install what I liked.
Weighing It Up
Pros of this approach:
- Ability to run latest versions of LAMP packages.
- Flexibility and freedom of managing your own server.
- Better overview of what’s going on “under the hood”.
- Cost effective with all your websites in one space, billed at a single cost per month.
- All websites share the same server resources (this could a negative depending on how you look at it).
- Potential to be way more secure.
- Potentially snappier access for international users.
Cons of this approach:
- Initially took a while to set up.
- Security is all up to you and there is no one to blame if the system gets compromised.
- Up to you to keep your server and packages up to date and not let the server decay over time.
- Renewing SSL certs is up to you (but this can be automated).
- Backups are all up to you (but there are DigitalOcean solutions to this).
- Not locally hosted. Potentially slower access for local users, but this can be debated.
The Test
To test my new shiny server out, I had to start small. I tested my fiance’s website out first, a basic HTML5 website. After playing around with some DNS settings, I was able to get the domain pointing and working as intended.
The next task was to move my other, more complex sites over to the droplet. This included a Drupal 8 and WordPress website. The WordPress site worked like a charm, with no issues, but the Drupal site complained a bit about using a newer version of MySQL (MySQL 8) it wasn’t quite happy with. After a few tweaks here and there, I finally got it playing nicely with MySQL 8.
Amongst other new features and improvements, one big advantage MySQL 8 offers is improve performance; InnoDB is significantly better at Read/Write workloads, IO bound workloads, and high contention “hot spot” workloads. Read more about MySQL 8 here:
https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html
I updated both domains to point to my new server and after a bit of tweaking here and there to get HTTPS working correctly, I was finally up and running with both PHP sites working perfectly.
Next step was security hardening on both an Apache and server level. After following a few guides online and a bit of trial and error, I was successfully able to harden the server and get the firewall operating optimally. Final step was performance optimization, particularly on Apache and MySQL’s side to reduce memory usage and not be so frivolous with precious server resources.
Conclusion
Overall I was impressed with how well everything went. Not only was this my first real web server setup from scratch using this particular flavour of Linux, but it was my first attempt at cloud based VM management.
So far, I’m super impressed with DigitalOcean. It’s dashboard is superb and it’s one-click solutions of certain things is so snappy and efficient. It has great monitoring and alert tools to ensure my VM stays up 24/7 and the feeling of having all my websites in one place makes me feel warm and fuzzy inside.
If you’re interested in challenging yourself in learning something new, while potentially saving in hosting costs (if you host more than 3+ websites), definitely take the time to explore and investigate a DigitalOcean droplet.
Yo Martin, shot for writing about this! I’m also from Durban and I was wondering – have you encountered any major slowdowns / latency using digital ocean? I know they don’t have any data servers here. But is it a major issue?
Hey there. No I haven’t to be honest with you. I find it comparable if not faster than a shared host and on par for a self-managed dedicated server. Leveraging the blog with a CDN definitely helps.