Hostmonster is a great host and you get a *LOT* for the money considering that it’s less than $10 per month if you prepay. I’ve just simply outgrown it. I how have ~30 domains, ~30 databases, 6GB of data, and run all manner of things — WordPress, Drupal, Django, and custom Python and PHP scripts.
Hostmonster can almost support all of that. If I had 20 domains or less I *almost* wouldn’t have any trouble. However, here are the limitations that I’ve outgrown:
1. 32MB PHP memory limit. This is a wall that larger Drupal sites will hit regularly.
2. If you’re doing something they don’t like, your account can be suspended instantly. This happened to me once when some Chinese bot was spamming a database script and was performing what they called “long-running queries”. A call to tech support straightened it out (I had to delete a few files, but wasn’t using them anyway).
3. Support for Python and Django is pretty sparse. Since I’ve consumed the Python kool-aid, this has suddenly become important.
4. Lack of customization ability. Since it’s shared hosting, they don’t want me possibly screwing it up for other people.
5. No support for long-running processes. I couldn’t run a MUD on it.
These are things that most mere mortals wouldn’t run into, and if you’re just starting off with web design/development, I do recommend starting with Hostmonster. Everyone eventually outgrows shared hosting. It took me three years.
The New Host
Why would I choose Linode? I’ve mentioned in previous posts that I like Slicehost, and Linode is almost exactly the same thing — Linux-based Xen VPS (Virtual Private Server) hosting.
What pushed me over the top is that for the basic $20 per month plan I get 320MB of RAM at Linode instead of 256MB I would get at Slicehost *and* Linode allows you to run a 32-bit OS, while Slicehost is 64-bit only. That’s not just 64MB more memory, it’s more like 128MB more according to statistics I’ve seen on memory use for 64-bit Ubuntu.
I am extremely RAM-hungry. I eat it like candy.
Setting Up The New Server
Friday evening I signed up for Linode. I had an Ubuntu 9.04 VPS up and running in 10 minutes. There was nothing to do for basic configuration — network, DNS, ssh, it was all good out of the box. It was a naked server with pretty much nothing on it (not even a web server), but that was exactly what I wanted since I was going to configure the machine from scratch.
Knowing what a memory hog the Apache web server is, I went something faster and more lightweight — nginx (“Engine X”). Nginx isn’t very well-documented if you don’t speak Russian, so I had to spend some time trolling blogs and forums to get the info needed to set up PHP and FastCGI and a few dozen virtual hosts.
This is also the first time I’ve tried using Drupal multi-site. It’s been such a hassle updating Drupal modules on every site each time there’s an update or security fix, so I wanted to use one core codebase. It was far easier to set up than I had ever imagined (just add a separate directory in your sites folder for each domain).
I had to install a boatload of modules, move a ton of content, set up scads of virtual host files, edit piles of configuration files, configure and export/import dozens of databases, and all of that other craziness involved with setting up a web server from scratch. This took part of Friday, all of Saturday, and half of Sunday.
In the process I also upgraded a few Drupal installs from v5 to v6. It’s not a very pretty process if you have complex custom views.
The most annoying part of the update was getting the nginx rewrite rule for WordPress set up so that the CSS file would actually load. For a few hours this site was just plain text on a white background.
I still have a few sites to move (the *big* ones) and a few kinks to work out, but I’m already pretty happy with the server — it is much more snappy and responsive, and I can edit sites faster thanks to quicker page loads.
If you’ve outgrown shared hosting and know Linux well, I recommend moving to Linode.