Article
Web Host Smackdown: 6 Hosting Plans Reviewed
It’d be great if you and your clients always had exactly the right hardware on hand, with the right version of your favorite environment installed, and the horsepower to deal with running all of your apps. Of course, out here in the real world, that’s true only some of the time. That’s why every developer ought to have some options for managed hosting, but which one can you rely on to support your applications? In this article, we’ll examine some of the best developer-friendly web hosts for your next project.
The Candidates
We’ve compared six hosting providers known to be relatively developer-friendly. In no particular order, we examined plans from A Small Orange, DreamHost, Hosting Rails, Media Temple, RailsPlayground, and WebFaction.
We’ve looked for all the usual suspects when evaluating hosts: disk space, monthly cost, contract term, and so on. While choosing hosts for the study, we tried to stick to ones that suit developers: low resource limits, poor or missing support for simplified administration panels, and limited control were some of the attributes that led us to exclude a plan from the study.
Just about all the plans in the final lineup had sufficiently generous resource limits so that you’d never need to worry about them; plenty of databases, users, domains, and mailboxes, with the only constraints being disk space and bandwidth. At this end of the scale, CPU/RAM usage is more of an issue, with most of these hosts having some sort of policy for such usage.
Another major factor was language support: we expected all of these hosts to support PHP, Python, and Ruby at the least, with Perl support a nice to have. For deployment of non-PHP applications, FastCGI support was an absolute minimum, with mod_python and Passenger (mod_rails) desirable.
Finally, we’ve tried a couple of real-world tests by actually running software on these web hosts. We started with the pre-install check of Joomla, which verifies some sensible values for PHP configuration directives, followed by installing some basic PHP and Django applications, using whatever installation methods the host provides.
We’ve laid out each plan and feature in a handy table, but of course a good comparison must go deeper than that—let's discuss each offering in more detail.
A Small Orange: Small
We chose to look into A Small Orange’s Small plan—though even the Tiny plan would serve quite well for a small app, the Small plan is a better comparison to the other plans in our lineup.
At A Small Orange, the control panel on offer is cPanel 11, which at first glance has a multitude of options for almost every conceivable task—email set-up, MySQL administration, and more. However, the use of a generic control panel solution makes some issues unclear: for example, to enable shell access with SSH at A Small Orange, one must request it when signing up or file a support request through an entirely separate system. However, the cPanel system still includes an area for setting up SSH access.
MySQL was an interesting issue here, and indeed on all the cPanel hosts we reviewed—the DB server was always running on the same machine as the web server. The two other cPanel hosts in this roundup also had this issue, which may only be a minor problem for testing out software, but could impact your ability to scale up a deployed application without switching servers.
One area where A Small Orange shone was PHP deployment; there were no issues with the Joomla pre-install check, bar the display_errors directive (ON instead of Joomla’s recommended OFF). This was quite common among the hosts surveyed, but an ON value for display_errors is only a small issue as long as it’s disabled on a per-application basis.
PHP performance seems excellent. To test PHP performance, we used WordPress to convert an XML file containing over 500 posts with comments. A Small Orange’s server made quick work of the XML import, and had all posts imported within a minute or two. We tried a similar test on Media Temple, and the server was still going after ten minutes!
While there is no official support for Django, instructions found on A Small Orange’s wiki were sufficiently detailed to get a FastCGI deployment up and running. However, the FastCGI approach was quite lengthy and left little room for optimization and tuning; serving static files over a separate domain could have been more straightforward than it was, and the cPanel system offered little help.
DreamHost
DreamHost offers just one plan, the price of which varies depending on the length of time you choose to prepay, and which added extras you purchase.
DreamHost operates on a larger user base than most of the hosts in this study, and has developed a series of in-house systems based around a custom control panel. In the panel, you’ll find a set of quick access options for the usual suspects: management of databases, domains, users, and so on, as well as fine-grained control over mail, a handful of reporting systems, and utilities for everything from crontabs to mailing lists to Subversion repositories. A wide range of one-click installation options is also available, including the latest version of Joomla.
The Joomla pre-install check worked just fine, with only one little issue—display_errors ON, again. However, it’s possible to use one’s own PHP configuration on a DreamHost service; see the DreamHost wiki for details. The CakePHP deployment worked as expected out of the box, without a hitch.
DreamHost has no official support for Django, so the general solution is to run Django under FastCGI. We deployed a standard Django blog application on a DreamHost service, following the lengthy instructions on the Django wiki page, without any major setbacks. Serving media files over a separate domain was relatively straightforward, thanks to DreamHost’s flexible domain controls.
For Rails, DreamHost has a very nice Phusion Passenger (mod_rails) setup that you can configure yourself without assistance from a system administrator. You can enable it on a per-domain basis, and it’s an excellent option for deploying Rails apps.
HostingRails: Beginner
We test-drove HostingRails’ Beginner plan, with an extremely tiny price of just $43.08 per year.
HostingRails advertises itself as a Rails-oriented provider, but in reality it’s a perfectly good all-rounder with a fairly straightforward offering. Their servers run cPanel 10 and are loaded with more than enough Apache modules, Ruby gems, and PHP extensions. Server management is a simple affair; your shell details are provided in the welcome email, and all your domains work more or less out of the box.
Running the Joomla pre-install check resulted in the same error as RailsPlayground—the web server was unable to write to its configuration file without it being world-readable. Similarly, CakePHP’s tmp and tmp/cache folders had to be made world-writable before Cake could write out its databases, caches, and other temporary data. Joomla also noted that display_errors was ON. Overall, however, the PHP experience was perfectly satisfactory, with no major issues. URL rewriting also worked out of the box.
Our Django test was a different experience, however. The wiki guide first directed us to install our own copy of Python in our home directory, suggesting the installed version of Python (2.4.3 on our server) was insufficient for the latest version of Django. After compiling Python, we then had to install the Python MySQL DB module to establish MySQL connections from Django’s database adaptor. A few quick changes pointed the system at our custom Python install; we then had to duplicate the django-admin.py file and point it at our custom Python as well. Finally, we set up the dynamic FastCGI configuration.
While Django deployment could have been a lot better, HostingRails’ mod_rails functionality is well ahead of the pack, as we expected! Deployment instructions for Rails at HostingRails’ wiki were extremely straightforward and relatively quick, although manual intervention from a support technician is required for part of it.
Akash Mehta is a web developer and freelance writer specializing in web application development. Check out his other work at